Add config to to enable/disable permissions checks in EmulatedTURNServer

Bug: chromium:1024965
Change-Id: I91b8d29932f08b3011635e62a0879c645b89f106
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/372260
Auto-Submit: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43611}
diff --git a/api/test/network_emulation_manager.h b/api/test/network_emulation_manager.h
index 5e20be5..338e167 100644
--- a/api/test/network_emulation_manager.h
+++ b/api/test/network_emulation_manager.h
@@ -92,6 +92,7 @@
 struct EmulatedTURNServerConfig {
   EmulatedEndpointConfig client_config;
   EmulatedEndpointConfig peer_config;
+  bool enable_permission_checks = true;
 };
 
 // EmulatedTURNServer is an abstraction for a TURN server.
diff --git a/test/network/emulated_turn_server.cc b/test/network/emulated_turn_server.cc
index 47d2c9c..049ea46 100644
--- a/test/network/emulated_turn_server.cc
+++ b/test/network/emulated_turn_server.cc
@@ -119,18 +119,21 @@
   const rtc::SocketAddress local_address_;
 };
 
-EmulatedTURNServer::EmulatedTURNServer(std::unique_ptr<rtc::Thread> thread,
+EmulatedTURNServer::EmulatedTURNServer(const EmulatedTURNServerConfig& config,
+                                       std::unique_ptr<rtc::Thread> thread,
                                        EmulatedEndpoint* client,
                                        EmulatedEndpoint* peer)
     : thread_(std::move(thread)), client_(client), peer_(peer) {
   ice_config_.username = "keso";
   ice_config_.password = "keso";
-  SendTask(thread_.get(), [this]() {
+  SendTask(thread_.get(), [this, enable_permission_checks =
+                                     config.enable_permission_checks]() {
     RTC_DCHECK_RUN_ON(thread_.get());
     turn_server_ = std::make_unique<cricket::TurnServer>(thread_.get());
     turn_server_->set_realm(kTestRealm);
     turn_server_->set_realm(kTestSoftware);
     turn_server_->set_auth_hook(this);
+    turn_server_->set_enable_permission_checks(enable_permission_checks);
 
     auto client_socket = Wrap(client_);
     turn_server_->AddInternalSocket(client_socket, cricket::PROTO_UDP);
diff --git a/test/network/emulated_turn_server.h b/test/network/emulated_turn_server.h
index de5d266..557d83d 100644
--- a/test/network/emulated_turn_server.h
+++ b/test/network/emulated_turn_server.h
@@ -42,7 +42,8 @@
   // Create an EmulatedTURNServer.
   // `thread` is a thread that will be used to run cricket::TurnServer
   // that expects all calls to be made from a single thread.
-  EmulatedTURNServer(std::unique_ptr<rtc::Thread> thread,
+  EmulatedTURNServer(const EmulatedTURNServerConfig& config,
+                     std::unique_ptr<rtc::Thread> thread,
                      EmulatedEndpoint* client,
                      EmulatedEndpoint* peer);
   ~EmulatedTURNServer() override;
diff --git a/test/network/network_emulation_manager.cc b/test/network/network_emulation_manager.cc
index 47de184..becad9d 100644
--- a/test/network/network_emulation_manager.cc
+++ b/test/network/network_emulation_manager.cc
@@ -371,7 +371,7 @@
   str.AppendFormat("turn_server_%u",
                    static_cast<unsigned>(turn_servers_.size()));
   auto turn = std::make_unique<EmulatedTURNServer>(
-      time_controller_->CreateThread(str.str()), client, peer);
+      config, time_controller_->CreateThread(str.str()), client, peer);
   auto out = turn.get();
   turn_servers_.push_back(std::move(turn));
   return out;