request_handler_for_register_browser_unittest.cc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. // Copyright 2021 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 "components/policy/test_support/request_handler_for_register_browser.h"
  5. #include <utility>
  6. #include "components/policy/core/common/cloud/cloud_policy_constants.h"
  7. #include "components/policy/test_support/client_storage.h"
  8. #include "components/policy/test_support/embedded_policy_test_server_test_base.h"
  9. #include "net/http/http_status_code.h"
  10. #include "testing/gtest/include/gtest/gtest.h"
  11. namespace em = enterprise_management;
  12. namespace policy {
  13. namespace {
  14. constexpr char kDeviceId[] = "fake_device_id";
  15. constexpr char kEnrollmentToken[] = "fake_enrollment_token";
  16. constexpr char kMachineName[] = "fake_machine_name";
  17. } // namespace
  18. class RequestHandlerForRegisterBrowserTest
  19. : public EmbeddedPolicyTestServerTestBase {
  20. protected:
  21. RequestHandlerForRegisterBrowserTest() = default;
  22. ~RequestHandlerForRegisterBrowserTest() override = default;
  23. void SetUp() override {
  24. EmbeddedPolicyTestServerTestBase::SetUp();
  25. SetRequestTypeParam(dm_protocol::kValueRequestTokenEnrollment);
  26. SetAppType(dm_protocol::kValueAppType);
  27. SetDeviceIdParam(kDeviceId);
  28. SetDeviceType(dm_protocol::kValueDeviceType);
  29. }
  30. };
  31. TEST_F(RequestHandlerForRegisterBrowserTest, HandleRequest_NoEnrollmentToken) {
  32. StartRequestAndWait();
  33. EXPECT_EQ(GetResponseCode(), net::HTTP_UNAUTHORIZED);
  34. EXPECT_EQ(client_storage()->GetNumberOfRegisteredClients(), 0u);
  35. }
  36. TEST_F(RequestHandlerForRegisterBrowserTest,
  37. HandleRequest_NoDeviceInformation_Desktop) {
  38. em::DeviceManagementRequest device_management_request;
  39. device_management_request.mutable_register_browser_request()->set_os_platform(
  40. "Windows");
  41. SetEnrollmentTokenHeader(kEnrollmentToken);
  42. SetPayload(em::DeviceManagementRequest());
  43. StartRequestAndWait();
  44. EXPECT_EQ(GetResponseCode(), net::HTTP_BAD_REQUEST);
  45. EXPECT_EQ(client_storage()->GetNumberOfRegisteredClients(), 0u);
  46. }
  47. TEST_F(RequestHandlerForRegisterBrowserTest,
  48. HandleRequest_InvalidEnrollmentToken) {
  49. em::DeviceManagementRequest device_management_request;
  50. em::RegisterBrowserRequest* register_browser_request =
  51. device_management_request.mutable_register_browser_request();
  52. register_browser_request->set_os_platform("Windows");
  53. register_browser_request->set_machine_name(kMachineName);
  54. SetEnrollmentTokenHeader(kInvalidEnrollmentToken);
  55. SetPayload(device_management_request);
  56. StartRequestAndWait();
  57. EXPECT_EQ(GetResponseCode(), net::HTTP_UNAUTHORIZED);
  58. EXPECT_EQ(client_storage()->GetNumberOfRegisteredClients(), 0u);
  59. }
  60. TEST_F(RequestHandlerForRegisterBrowserTest, HandleRequest_Success) {
  61. em::DeviceManagementRequest device_management_request;
  62. em::RegisterBrowserRequest* register_browser_request =
  63. device_management_request.mutable_register_browser_request();
  64. register_browser_request->set_os_platform("Windows");
  65. register_browser_request->set_machine_name(kMachineName);
  66. SetEnrollmentTokenHeader(kEnrollmentToken);
  67. SetPayload(device_management_request);
  68. StartRequestAndWait();
  69. EXPECT_EQ(GetResponseCode(), net::HTTP_OK);
  70. ASSERT_TRUE(HasResponseBody());
  71. em::DeviceManagementResponse device_management_response =
  72. GetDeviceManagementResponse();
  73. EXPECT_EQ(
  74. device_management_response.register_response().device_management_token(),
  75. kFakeDeviceToken);
  76. ASSERT_EQ(client_storage()->GetNumberOfRegisteredClients(), 1u);
  77. const ClientStorage::ClientInfo* client_info =
  78. client_storage()->GetClientOrNull(kDeviceId);
  79. ASSERT_NE(client_info, nullptr);
  80. EXPECT_EQ(client_info->device_id, kDeviceId);
  81. EXPECT_EQ(client_info->device_token, kFakeDeviceToken);
  82. EXPECT_EQ(client_info->machine_name, kMachineName);
  83. }
  84. TEST_F(RequestHandlerForRegisterBrowserTest,
  85. HandleRequest_Success_NoDeviceInformation_Mobile) {
  86. em::DeviceManagementRequest device_management_request;
  87. device_management_request.mutable_register_browser_request()->set_os_platform(
  88. "Android");
  89. SetEnrollmentTokenHeader(kEnrollmentToken);
  90. SetPayload(device_management_request);
  91. StartRequestAndWait();
  92. EXPECT_EQ(GetResponseCode(), net::HTTP_OK);
  93. ASSERT_TRUE(HasResponseBody());
  94. em::DeviceManagementResponse device_management_response =
  95. GetDeviceManagementResponse();
  96. EXPECT_EQ(
  97. device_management_response.register_response().device_management_token(),
  98. kFakeDeviceToken);
  99. ASSERT_EQ(client_storage()->GetNumberOfRegisteredClients(), 1u);
  100. const ClientStorage::ClientInfo* client_info =
  101. client_storage()->GetClientOrNull(kDeviceId);
  102. ASSERT_NE(client_info, nullptr);
  103. EXPECT_EQ(client_info->device_id, kDeviceId);
  104. EXPECT_EQ(client_info->device_token, kFakeDeviceToken);
  105. EXPECT_TRUE(client_info->machine_name.empty());
  106. }
  107. } // namespace policy