report_queue_configuration_unittest.cc 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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 "components/reporting/client/report_queue_configuration.h"
  5. #include <stdio.h>
  6. #include "base/bind.h"
  7. #include "base/callback.h"
  8. #include "components/reporting/proto/synced/record_constants.pb.h"
  9. #include "components/reporting/util/status.h"
  10. #include "components/reporting/util/statusor.h"
  11. #include "testing/gmock/include/gmock/gmock.h"
  12. #include "testing/gtest/include/gtest/gtest.h"
  13. namespace reporting {
  14. namespace {
  15. using testing::_;
  16. using testing::Invoke;
  17. using testing::WithArgs;
  18. constexpr char kDmToken[] = "dm_token";
  19. class ReportQueueConfigurationTest : public testing::Test {
  20. protected:
  21. using PolicyCheckCallback = ReportQueueConfiguration::PolicyCheckCallback;
  22. const Destination kInvalidDestination = Destination::UNDEFINED_DESTINATION;
  23. const Destination kValidDestination = Destination::UPLOAD_EVENTS;
  24. const PolicyCheckCallback kValidCallback = GetSuccessfulCallback();
  25. const PolicyCheckCallback kInvalidCallback = GetInvalidCallback();
  26. static PolicyCheckCallback GetSuccessfulCallback() {
  27. return base::BindRepeating([]() { return Status::StatusOK(); });
  28. }
  29. static PolicyCheckCallback GetInvalidCallback() {
  30. return base::RepeatingCallback<Status(void)>();
  31. }
  32. ReportQueueConfigurationTest() = default;
  33. };
  34. // Tests to ensure that only valid parameters are used to generate a
  35. // ReportQueueConfiguration.
  36. TEST_F(ReportQueueConfigurationTest,
  37. ValidateConfigurationWithInvalidDestination) {
  38. EXPECT_FALSE(ReportQueueConfiguration::Create(kDmToken, kInvalidDestination,
  39. kValidCallback)
  40. .ok());
  41. }
  42. TEST_F(ReportQueueConfigurationTest,
  43. ValidateConfigurationWithInvalidDestinationInvalidCallback) {
  44. EXPECT_FALSE(ReportQueueConfiguration::Create(
  45. /*dm_token=*/kDmToken, kInvalidDestination, kInvalidCallback)
  46. .ok());
  47. }
  48. TEST_F(ReportQueueConfigurationTest, ValidateConfigurationWithValidParams) {
  49. EXPECT_OK(ReportQueueConfiguration::Create(
  50. /*dm_token*=*/kDmToken, kValidDestination, kValidCallback));
  51. }
  52. TEST_F(ReportQueueConfigurationTest, ValidateConfigurationWithNoDMToken) {
  53. EXPECT_OK(ReportQueueConfiguration::Create(
  54. /*dm_token*=*/"", kValidDestination, kValidCallback));
  55. }
  56. TEST_F(ReportQueueConfigurationTest,
  57. ValidateConfigurationWithNoDMTokenInvalidDestination) {
  58. EXPECT_FALSE(ReportQueueConfiguration::Create(
  59. /*dm_token*=*/"", kInvalidDestination, kValidCallback)
  60. .ok());
  61. }
  62. TEST_F(ReportQueueConfigurationTest,
  63. ValidateConfigurationWithNoDMTokenInvalidCallback) {
  64. EXPECT_FALSE(ReportQueueConfiguration::Create(
  65. /*dm_token=*/"", kValidDestination, kInvalidCallback)
  66. .ok());
  67. }
  68. TEST_F(ReportQueueConfigurationTest,
  69. ValidateConfigurationWithNoDMTokenInvalidDestinationInvalidCallback) {
  70. EXPECT_FALSE(ReportQueueConfiguration::Create(
  71. /*dm_token*=*/"", kInvalidDestination, kInvalidCallback)
  72. .ok());
  73. }
  74. TEST_F(ReportQueueConfigurationTest, ValidateConfigurationWithDeviceEventType) {
  75. EXPECT_OK(ReportQueueConfiguration::Create(
  76. EventType::kDevice, kValidDestination, kValidCallback));
  77. }
  78. TEST_F(ReportQueueConfigurationTest, ValidateConfigurationWithUserEventType) {
  79. EXPECT_OK(ReportQueueConfiguration::Create(
  80. EventType::kUser, kValidDestination, kValidCallback));
  81. }
  82. TEST_F(ReportQueueConfigurationTest,
  83. ValidateConfigurationWithEventTypeInvalidDestination) {
  84. EXPECT_FALSE(ReportQueueConfiguration::Create(
  85. EventType::kDevice, kInvalidDestination, kValidCallback)
  86. .ok());
  87. }
  88. TEST_F(ReportQueueConfigurationTest,
  89. ValidateConfigurationWithEventTypeInvalidCallback) {
  90. EXPECT_FALSE(ReportQueueConfiguration::Create(
  91. EventType::kDevice, kValidDestination, kInvalidCallback)
  92. .ok());
  93. }
  94. TEST_F(ReportQueueConfigurationTest, UsesProvidedPolicyCheckCallback) {
  95. const Destination destination = Destination::UPLOAD_EVENTS;
  96. testing::MockFunction<Status(void)> mock_handler;
  97. EXPECT_CALL(mock_handler, Call())
  98. .WillOnce(::testing::Return(Status::StatusOK()));
  99. auto config_result = ReportQueueConfiguration::Create(
  100. kDmToken, destination,
  101. base::BindRepeating(&testing::MockFunction<Status(void)>::Call,
  102. base::Unretained(&mock_handler)));
  103. EXPECT_OK(config_result);
  104. auto config = std::move(config_result.ValueOrDie());
  105. EXPECT_OK(config->CheckPolicy());
  106. }
  107. } // namespace
  108. } // namespace reporting