blob: 0a511064f12a96f2e91d2999855d7a1eb72deda9 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/sharing/ack_message_handler.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/test/mock_callback.h"
#include "chrome/browser/sharing/mock_sharing_message_sender.h"
#include "chrome/browser/sharing/proto/sharing_message.pb.h"
#include "chrome/browser/sharing/sharing_fcm_sender.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
constexpr char kTestMessageId[] = "test_message_id";
class AckMessageHandlerTest : public testing::Test {
protected:
AckMessageHandlerTest()
: ack_message_handler_(&mock_response_callback_helper_) {}
testing::NiceMock<MockSharingMessageSender> mock_response_callback_helper_;
AckMessageHandler ack_message_handler_;
};
MATCHER_P(ProtoEquals, message, "") {
if (!arg)
return false;
std::string expected_serialized, actual_serialized;
message.SerializeToString(&expected_serialized);
arg->SerializeToString(&actual_serialized);
return expected_serialized == actual_serialized;
}
} // namespace
TEST_F(AckMessageHandlerTest, OnMessageNoResponse) {
chrome_browser_sharing::SharingMessage sharing_message;
sharing_message.mutable_ack_message()->set_original_message_id(
kTestMessageId);
base::MockCallback<SharingMessageHandler::DoneCallback> done_callback;
EXPECT_CALL(done_callback, Run(testing::Eq(nullptr)));
EXPECT_CALL(mock_response_callback_helper_,
OnAckReceived(testing::Eq(kTestMessageId), testing::Eq(nullptr)));
ack_message_handler_.OnMessage(std::move(sharing_message),
done_callback.Get());
}
TEST_F(AckMessageHandlerTest, OnMessageWithResponse) {
chrome_browser_sharing::SharingMessage sharing_message;
sharing_message.mutable_ack_message()->set_original_message_id(
kTestMessageId);
sharing_message.mutable_ack_message()->mutable_response_message();
chrome_browser_sharing::ResponseMessage response_message_copy =
sharing_message.ack_message().response_message();
base::MockCallback<SharingMessageHandler::DoneCallback> done_callback;
EXPECT_CALL(done_callback, Run(testing::Eq(nullptr)));
EXPECT_CALL(mock_response_callback_helper_,
OnAckReceived(testing::Eq(kTestMessageId),
ProtoEquals(response_message_copy)));
ack_message_handler_.OnMessage(std::move(sharing_message),
done_callback.Get());
}