aw_pac_processor_unittest.cc 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include <android/multinetwork.h>
  5. #include <string>
  6. #include "android_webview/browser/aw_pac_processor.h"
  7. #include "base/memory/raw_ptr.h"
  8. #include "base/test/task_environment.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace android_webview {
  11. namespace {
  12. const std::string kScript =
  13. "function FindProxyForURL(url, host)\n"
  14. "{\n"
  15. "\treturn \"PROXY localhost:8080; PROXY localhost:8081; DIRECT \";\n"
  16. "}\n";
  17. const std::string kScriptDnsResolve =
  18. "var x = dnsResolveEx(\"localhost\");\n"
  19. "function FindProxyForURL(url, host) {\n"
  20. "\treturn \"PROXY \" + x + \":80\";\n"
  21. "}";
  22. const std::string kRequestUrl = "http://testurl.test";
  23. } // namespace
  24. class AwPacProcessorTest : public testing::Test {
  25. public:
  26. void TearDown() override { delete pac_processor_; }
  27. protected:
  28. base::test::TaskEnvironment task_environment_{
  29. base::test::TaskEnvironment::TimeSource::MOCK_TIME};
  30. raw_ptr<AwPacProcessor> pac_processor_ = new AwPacProcessor();
  31. };
  32. TEST_F(AwPacProcessorTest, MakeProxyRequest) {
  33. EXPECT_TRUE(pac_processor_->SetProxyScript(kScript));
  34. std::string result;
  35. EXPECT_TRUE(pac_processor_->MakeProxyRequest(kRequestUrl, &result));
  36. EXPECT_EQ("PROXY localhost:8080;PROXY localhost:8081;DIRECT", result);
  37. }
  38. TEST_F(AwPacProcessorTest, MakeProxyRequestDnsResolve) {
  39. EXPECT_TRUE(pac_processor_->SetProxyScript(kScriptDnsResolve));
  40. std::string result;
  41. EXPECT_TRUE(pac_processor_->MakeProxyRequest(kRequestUrl, &result));
  42. EXPECT_EQ("PROXY 127.0.0.1:80", result);
  43. }
  44. TEST_F(AwPacProcessorTest, MultipleProxyRequest) {
  45. AwPacProcessor* other_pac_processor_ = new AwPacProcessor();
  46. EXPECT_TRUE(pac_processor_->SetProxyScript(kScript));
  47. EXPECT_TRUE(other_pac_processor_->SetProxyScript(kScriptDnsResolve));
  48. std::string result;
  49. EXPECT_TRUE(pac_processor_->MakeProxyRequest(kRequestUrl, &result));
  50. EXPECT_EQ("PROXY localhost:8080;PROXY localhost:8081;DIRECT", result);
  51. EXPECT_TRUE(other_pac_processor_->MakeProxyRequest(kRequestUrl, &result));
  52. EXPECT_EQ("PROXY 127.0.0.1:80", result);
  53. delete other_pac_processor_;
  54. }
  55. TEST_F(AwPacProcessorTest, UnparseableScript) {
  56. EXPECT_FALSE(pac_processor_->SetProxyScript(""));
  57. std::string result;
  58. EXPECT_FALSE(pac_processor_->MakeProxyRequest(kRequestUrl, &result));
  59. }
  60. } // namespace android_webview