aboutsummaryrefslogtreecommitdiff
path: root/cast/sender/testing/test_helpers.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cast/sender/testing/test_helpers.cc')
-rw-r--r--cast/sender/testing/test_helpers.cc87
1 files changed, 87 insertions, 0 deletions
diff --git a/cast/sender/testing/test_helpers.cc b/cast/sender/testing/test_helpers.cc
new file mode 100644
index 00000000..ff9a4575
--- /dev/null
+++ b/cast/sender/testing/test_helpers.cc
@@ -0,0 +1,87 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cast/sender/testing/test_helpers.h"
+
+#include "cast/common/channel/message_util.h"
+#include "cast/receiver/channel/message_util.h"
+#include "cast/sender/channel/message_util.h"
+#include "gtest/gtest.h"
+#include "util/json/json_serialization.h"
+#include "util/json/json_value.h"
+#include "util/logging.h"
+
+namespace openscreen {
+namespace cast {
+
+using ::cast::channel::CastMessage;
+
+void VerifyAppAvailabilityRequest(const CastMessage& message,
+ const std::string& expected_app_id,
+ int* request_id_out,
+ std::string* sender_id_out) {
+ std::string app_id_out;
+ VerifyAppAvailabilityRequest(message, &app_id_out, request_id_out,
+ sender_id_out);
+ EXPECT_EQ(app_id_out, expected_app_id);
+}
+
+void VerifyAppAvailabilityRequest(const CastMessage& message,
+ std::string* app_id_out,
+ int* request_id_out,
+ std::string* sender_id_out) {
+ EXPECT_EQ(message.namespace_(), kReceiverNamespace);
+ EXPECT_EQ(message.destination_id(), kPlatformReceiverId);
+ EXPECT_EQ(message.payload_type(),
+ ::cast::channel::CastMessage_PayloadType_STRING);
+ EXPECT_NE(message.source_id(), kPlatformSenderId);
+ *sender_id_out = message.source_id();
+
+ ErrorOr<Json::Value> maybe_value = json::Parse(message.payload_utf8());
+ ASSERT_TRUE(maybe_value);
+ Json::Value& value = maybe_value.value();
+
+ absl::optional<absl::string_view> maybe_type =
+ MaybeGetString(value, JSON_EXPAND_FIND_CONSTANT_ARGS(kMessageKeyType));
+ ASSERT_TRUE(maybe_type);
+ EXPECT_EQ(maybe_type.value(),
+ CastMessageTypeToString(CastMessageType::kGetAppAvailability));
+
+ absl::optional<int> maybe_id =
+ MaybeGetInt(value, JSON_EXPAND_FIND_CONSTANT_ARGS(kMessageKeyRequestId));
+ ASSERT_TRUE(maybe_id);
+ *request_id_out = maybe_id.value();
+
+ const Json::Value* maybe_app_ids =
+ value.find(JSON_EXPAND_FIND_CONSTANT_ARGS(kMessageKeyAppId));
+ ASSERT_TRUE(maybe_app_ids);
+ ASSERT_TRUE(maybe_app_ids->isArray());
+ ASSERT_EQ(maybe_app_ids->size(), 1u);
+ Json::Value app_id_value = maybe_app_ids->get(0u, Json::Value(""));
+ absl::optional<absl::string_view> maybe_app_id = MaybeGetString(app_id_value);
+ ASSERT_TRUE(maybe_app_id);
+ *app_id_out =
+ std::string(maybe_app_id.value().begin(), maybe_app_id.value().end());
+}
+
+CastMessage CreateAppAvailableResponseChecked(int request_id,
+ const std::string& sender_id,
+ const std::string& app_id) {
+ ErrorOr<CastMessage> message =
+ CreateAppAvailableResponse(request_id, sender_id, app_id);
+ OSP_CHECK(message);
+ return std::move(message.value());
+}
+
+CastMessage CreateAppUnavailableResponseChecked(int request_id,
+ const std::string& sender_id,
+ const std::string& app_id) {
+ ErrorOr<CastMessage> message =
+ CreateAppUnavailableResponse(request_id, sender_id, app_id);
+ OSP_CHECK(message);
+ return std::move(message.value());
+}
+
+} // namespace cast
+} // namespace openscreen