blob: 0a511064f12a96f2e91d2999855d7a1eb72deda9 [file] [log] [blame]
Avi Drissman4a8573c2022-09-09 19:35:541// Copyright 2019 The Chromium Authors
Alex Chau4fded64e2019-07-17 16:21:512// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/sharing/ack_message_handler.h"
6
Avi Drissman9269d4ed2023-01-07 01:38:067#include "base/functional/bind.h"
8#include "base/functional/callback_helpers.h"
Alex Chaue1bc15162019-10-24 10:55:409#include "base/test/mock_callback.h"
Richard Knolla5e43b82020-01-28 19:49:0310#include "chrome/browser/sharing/mock_sharing_message_sender.h"
Michael van Ouwerkerk741c66522019-12-17 13:51:1311#include "chrome/browser/sharing/proto/sharing_message.pb.h"
Richard Knoll367f2232019-11-14 18:11:3412#include "chrome/browser/sharing/sharing_fcm_sender.h"
Alex Chaue1bc15162019-10-24 10:55:4013#include "testing/gmock/include/gmock/gmock.h"
Alex Chau4fded64e2019-07-17 16:21:5114#include "testing/gtest/include/gtest/gtest.h"
15
Alex Chau4fded64e2019-07-17 16:21:5116namespace {
Himanshu Jaju63dbf1722019-10-30 09:55:5417constexpr char kTestMessageId[] = "test_message_id";
Alex Chau4fded64e2019-07-17 16:21:5118
Peter Kastingc11cb0a2019-10-07 11:15:2219class AckMessageHandlerTest : public testing::Test {
Alex Chau4fded64e2019-07-17 16:21:5120 protected:
Alex Chaue1bc15162019-10-24 10:55:4021 AckMessageHandlerTest()
Himanshu Jaju63dbf1722019-10-30 09:55:5422 : ack_message_handler_(&mock_response_callback_helper_) {}
Alex Chau4fded64e2019-07-17 16:21:5123
Himanshu Jajua69dbe52019-11-04 19:58:0524 testing::NiceMock<MockSharingMessageSender> mock_response_callback_helper_;
Alex Chaue1bc15162019-10-24 10:55:4025 AckMessageHandler ack_message_handler_;
Alex Chau4fded64e2019-07-17 16:21:5126};
27
Himanshu Jaju63dbf1722019-10-30 09:55:5428MATCHER_P(ProtoEquals, message, "") {
29 if (!arg)
30 return false;
31
Alex Chaue1bc15162019-10-24 10:55:4032 std::string expected_serialized, actual_serialized;
Himanshu Jaju63dbf1722019-10-30 09:55:5433 message.SerializeToString(&expected_serialized);
34 arg->SerializeToString(&actual_serialized);
Alex Chaue1bc15162019-10-24 10:55:4035 return expected_serialized == actual_serialized;
36}
37
Alex Chau4fded64e2019-07-17 16:21:5138} // namespace
39
Alex Chaue1bc15162019-10-24 10:55:4040TEST_F(AckMessageHandlerTest, OnMessageNoResponse) {
Peter Kastingc11cb0a2019-10-07 11:15:2241 chrome_browser_sharing::SharingMessage sharing_message;
Alex Chau4fded64e2019-07-17 16:21:5142 sharing_message.mutable_ack_message()->set_original_message_id(
43 kTestMessageId);
44
Alex Chaue1bc15162019-10-24 10:55:4045 base::MockCallback<SharingMessageHandler::DoneCallback> done_callback;
Himanshu Jaju63dbf1722019-10-30 09:55:5446 EXPECT_CALL(done_callback, Run(testing::Eq(nullptr)));
47
Richard Knoll5f8a4022020-01-15 17:08:1448 EXPECT_CALL(mock_response_callback_helper_,
49 OnAckReceived(testing::Eq(kTestMessageId), testing::Eq(nullptr)));
Alex Chaue1bc15162019-10-24 10:55:4050
51 ack_message_handler_.OnMessage(std::move(sharing_message),
52 done_callback.Get());
Alex Chaue1bc15162019-10-24 10:55:4053}
54
55TEST_F(AckMessageHandlerTest, OnMessageWithResponse) {
Alex Chaue1bc15162019-10-24 10:55:4056 chrome_browser_sharing::SharingMessage sharing_message;
57 sharing_message.mutable_ack_message()->set_original_message_id(
58 kTestMessageId);
Alex Chaue1bc15162019-10-24 10:55:4059 sharing_message.mutable_ack_message()->mutable_response_message();
60
61 chrome_browser_sharing::ResponseMessage response_message_copy =
62 sharing_message.ack_message().response_message();
63
64 base::MockCallback<SharingMessageHandler::DoneCallback> done_callback;
Himanshu Jaju63dbf1722019-10-30 09:55:5465 EXPECT_CALL(done_callback, Run(testing::Eq(nullptr)));
66
Richard Knoll5f8a4022020-01-15 17:08:1467 EXPECT_CALL(mock_response_callback_helper_,
68 OnAckReceived(testing::Eq(kTestMessageId),
69 ProtoEquals(response_message_copy)));
Alex Chaue1bc15162019-10-24 10:55:4070
71 ack_message_handler_.OnMessage(std::move(sharing_message),
72 done_callback.Get());
Alex Chau4fded64e2019-07-17 16:21:5173}