trial_group_checker_unittest.cc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // Copyright 2019 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 "ash/components/trial_group/trial_group_checker.h"
  5. #include "base/test/task_environment.h"
  6. #include "net/test/embedded_test_server/embedded_test_server.h"
  7. #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
  8. #include "services/network/test/test_url_loader_factory.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace {
  11. constexpr char kTestURL[] = "/test";
  12. } // namespace
  13. namespace ash {
  14. namespace trial_group {
  15. class TrialGroupCheckerTest : public testing::Test {
  16. public:
  17. TrialGroupCheckerTest()
  18. : task_environment_(base::test::TaskEnvironment::MainThreadType::IO),
  19. test_shared_loader_factory_(
  20. base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
  21. &test_url_loader_factory_)) {}
  22. void Callback(bool is_member) { is_member_ = is_member; }
  23. protected:
  24. void SetUp() override {
  25. test_server_ = std::make_unique<net::test_server::EmbeddedTestServer>();
  26. ASSERT_TRUE(test_server_->Start());
  27. }
  28. std::unique_ptr<net::test_server::EmbeddedTestServer> test_server_;
  29. base::test::TaskEnvironment task_environment_;
  30. network::TestURLLoaderFactory test_url_loader_factory_;
  31. scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
  32. bool is_member_ = false;
  33. base::WeakPtrFactory<TrialGroupCheckerTest> weak_factory_{this};
  34. };
  35. TEST_F(TrialGroupCheckerTest, IsMemberTest) {
  36. test_url_loader_factory_.AddResponse(test_server_->GetURL(kTestURL).spec(),
  37. "{\"membership_info\": 1}");
  38. TrialGroupChecker checker(TrialGroupChecker::TESTING_GROUP);
  39. checker.SetServerUrl(test_server_->GetURL(kTestURL));
  40. TrialGroupChecker::Status status =
  41. checker.LookUpMembership(test_shared_loader_factory_,
  42. base::BindOnce(&TrialGroupCheckerTest::Callback,
  43. weak_factory_.GetWeakPtr()));
  44. task_environment_.RunUntilIdle();
  45. ASSERT_EQ(TrialGroupChecker::OK, status);
  46. ASSERT_EQ(true, is_member_);
  47. }
  48. TEST_F(TrialGroupCheckerTest, NotMemberTest) {
  49. test_url_loader_factory_.AddResponse(test_server_->GetURL(kTestURL).spec(),
  50. "{\"membership_info\": 2}");
  51. is_member_ = true;
  52. TrialGroupChecker checker(TrialGroupChecker::TESTING_GROUP);
  53. checker.SetServerUrl(test_server_->GetURL(kTestURL));
  54. TrialGroupChecker::Status status =
  55. checker.LookUpMembership(test_shared_loader_factory_,
  56. base::BindOnce(&TrialGroupCheckerTest::Callback,
  57. weak_factory_.GetWeakPtr()));
  58. task_environment_.RunUntilIdle();
  59. ASSERT_EQ(TrialGroupChecker::OK, status);
  60. ASSERT_EQ(false, is_member_);
  61. }
  62. TEST_F(TrialGroupCheckerTest, UnknownMemberTest) {
  63. test_url_loader_factory_.AddResponse(test_server_->GetURL(kTestURL).spec(),
  64. "{\"membership_info\": 0}");
  65. is_member_ = true;
  66. TrialGroupChecker checker(TrialGroupChecker::TESTING_GROUP);
  67. checker.SetServerUrl(test_server_->GetURL(kTestURL));
  68. TrialGroupChecker::Status status =
  69. checker.LookUpMembership(test_shared_loader_factory_,
  70. base::BindOnce(&TrialGroupCheckerTest::Callback,
  71. weak_factory_.GetWeakPtr()));
  72. task_environment_.RunUntilIdle();
  73. ASSERT_EQ(TrialGroupChecker::OK, status);
  74. ASSERT_EQ(false, is_member_);
  75. }
  76. } // namespace trial_group
  77. } // namespace ash