Don't use private access in FlipperRSocketResponder
Summary: Changing FlipperRSocketResponder to only use public parts of FlipperConnectionManagerImpl. This means we can test it by injecting a FCM mock, and it can use its public interface. Reviewed By: passy Differential Revision: D14000078 fbshipit-source-id: c0431a888b0ca041807631c81b99fb8b947274d6
This commit is contained in:
committed by
Facebook Github Bot
parent
c48c1a728a
commit
5da8f35ee3
@@ -61,7 +61,7 @@ TEST_F(FlipperClientTest, testGetPlugins) {
|
||||
client->addPlugin(std::make_shared<FlipperPluginMock>("Dog"));
|
||||
|
||||
dynamic message = dynamic::object("id", 1)("method", "getPlugins");
|
||||
socket->callbacks->onMessageReceived(message, getResponder());
|
||||
socket->onMessageReceived(message, getResponder());
|
||||
|
||||
dynamic expected = dynamic::object("plugins", dynamic::array("Cat", "Dog"));
|
||||
EXPECT_EQ(successes[0], expected);
|
||||
@@ -92,8 +92,8 @@ TEST_F(FlipperClientTest, testRemovePlugin) {
|
||||
client->removePlugin(plugin);
|
||||
|
||||
dynamic message = dynamic::object("id", 1)("method", "getPlugins");
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(message, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(message, getResponder());
|
||||
|
||||
dynamic expected = dynamic::object("plugins", dynamic::array());
|
||||
EXPECT_EQ(successes[0], expected);
|
||||
@@ -148,24 +148,24 @@ TEST_F(FlipperClientTest, testInitDeinit) {
|
||||
{
|
||||
dynamic messageInit = dynamic::object("method", "init")(
|
||||
"params", dynamic::object("plugin", "Test"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageInit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageInit, getResponder());
|
||||
EXPECT_TRUE(pluginConnected);
|
||||
}
|
||||
|
||||
{
|
||||
dynamic messageDeinit = dynamic::object("method", "deinit")(
|
||||
"params", dynamic::object("plugin", "Test"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageDeinit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageDeinit, getResponder());
|
||||
EXPECT_FALSE(pluginConnected);
|
||||
}
|
||||
|
||||
{
|
||||
dynamic messageReinit = dynamic::object("method", "init")(
|
||||
"params", dynamic::object("plugin", "Test"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageReinit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageReinit, getResponder());
|
||||
EXPECT_TRUE(pluginConnected);
|
||||
}
|
||||
|
||||
@@ -198,14 +198,14 @@ TEST_F(FlipperClientTest, testUnhandleableMethod) {
|
||||
{
|
||||
dynamic messageInit = dynamic::object("method", "init")(
|
||||
"params", dynamic::object("plugin", "Test"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageInit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageInit, getResponder());
|
||||
}
|
||||
|
||||
{
|
||||
dynamic messageExecute = dynamic::object("id", 1)("method", "unexpected");
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageExecute, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageExecute, getResponder());
|
||||
}
|
||||
|
||||
dynamic expected =
|
||||
@@ -231,8 +231,8 @@ TEST_F(FlipperClientTest, testExecute) {
|
||||
{
|
||||
dynamic messageInit = dynamic::object("method", "init")(
|
||||
"params", dynamic::object("plugin", "Test"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageInit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageInit, getResponder());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -266,8 +266,8 @@ TEST_F(FlipperClientTest, testExecuteWithParams) {
|
||||
{
|
||||
dynamic messageInit = dynamic::object("method", "init")(
|
||||
"params", dynamic::object("plugin", "Test"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageInit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageInit, getResponder());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -275,8 +275,8 @@ TEST_F(FlipperClientTest, testExecuteWithParams) {
|
||||
"params",
|
||||
dynamic::object("api", "Test")("method", "animal_sounds")(
|
||||
"params", dynamic::object("first", "dog")("second", "cat")));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageExecute, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageExecute, getResponder());
|
||||
}
|
||||
|
||||
dynamic expected = dynamic::object("dog", "woof")("cat", "meow");
|
||||
@@ -289,8 +289,8 @@ TEST_F(FlipperClientTest, testExceptionUnknownPlugin) {
|
||||
|
||||
dynamic messageInit = dynamic::object("method", "init")(
|
||||
"params", dynamic::object("plugin", "Unknown"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageInit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageInit, getResponder());
|
||||
|
||||
auto failure = failures[0];
|
||||
EXPECT_EQ(failure["message"], "Plugin Unknown not found for method init");
|
||||
@@ -302,8 +302,8 @@ TEST_F(FlipperClientTest, testExceptionUnknownApi) {
|
||||
|
||||
dynamic messageInit = dynamic::object("method", "execute")(
|
||||
"params", dynamic::object("api", "Unknown"));
|
||||
auto responder = std::make_shared<FlipperResponderMock>();
|
||||
socket->callbacks->onMessageReceived(messageInit, getResponder());
|
||||
auto responder = std::make_unique<FlipperResponderMock>();
|
||||
socket->onMessageReceived(messageInit, getResponder());
|
||||
auto failure = failures[0];
|
||||
EXPECT_EQ(
|
||||
failure["message"], "Connection Unknown not found for method execute");
|
||||
|
||||
67
xplat/FlipperTests/FlipperRSocketResponderTests.cpp
Normal file
67
xplat/FlipperTests/FlipperRSocketResponderTests.cpp
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the LICENSE
|
||||
* file in the root directory of this source tree.
|
||||
*/
|
||||
#include <Flipper/FlipperRSocketResponder.h>
|
||||
#include <Flipper/Log.h>
|
||||
#include <FlipperTestLib/FlipperConnectionManagerMock.h>
|
||||
#include <folly/json.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace flipper {
|
||||
namespace test {
|
||||
|
||||
using folly::dynamic;
|
||||
|
||||
class Callbacks
|
||||
: public facebook::flipper::FlipperConnectionManager::Callbacks {
|
||||
public:
|
||||
void onConnected() {}
|
||||
void onDisconnected() {}
|
||||
void onMessageReceived(
|
||||
const folly::dynamic& message,
|
||||
std::unique_ptr<FlipperResponder> responder) {
|
||||
message_ = message;
|
||||
responder_ = std::move(responder);
|
||||
}
|
||||
folly::dynamic message_;
|
||||
std::unique_ptr<FlipperResponder> responder_;
|
||||
};
|
||||
|
||||
TEST(FlipperRSocketResponderTests, testFireAndForgetWithoutIdParam) {
|
||||
auto socket = facebook::flipper::test::FlipperConnectionManagerMock();
|
||||
auto callbacks = new Callbacks();
|
||||
socket.setCallbacks(callbacks);
|
||||
folly::EventBase* eb = new folly::EventBase();
|
||||
auto responder = facebook::flipper::FlipperRSocketResponder(&socket, eb);
|
||||
dynamic d = dynamic::object("my", "message");
|
||||
auto json = folly::toJson(d);
|
||||
|
||||
responder.handleFireAndForget(rsocket::Payload(json), rsocket::StreamId(1));
|
||||
EXPECT_EQ(socket.messagesReceived.size(), 1);
|
||||
EXPECT_EQ(socket.messagesReceived[0]["my"], "message");
|
||||
EXPECT_EQ(socket.respondersReceived, 0);
|
||||
}
|
||||
|
||||
TEST(FlipperRSocketResponderTests, testFireAndForgetWithIdParam) {
|
||||
auto socket = facebook::flipper::test::FlipperConnectionManagerMock();
|
||||
auto callbacks = new Callbacks();
|
||||
socket.setCallbacks(callbacks);
|
||||
folly::EventBase* eb = new folly::EventBase();
|
||||
auto responder = facebook::flipper::FlipperRSocketResponder(&socket, eb);
|
||||
dynamic d = dynamic::object("my", "message")("id", 7);
|
||||
auto json = folly::toJson(d);
|
||||
|
||||
responder.handleFireAndForget(rsocket::Payload(json), rsocket::StreamId(1));
|
||||
EXPECT_EQ(socket.messagesReceived.size(), 1);
|
||||
EXPECT_EQ(socket.messagesReceived[0]["my"], "message");
|
||||
EXPECT_EQ(socket.messagesReceived[0]["id"], 7);
|
||||
EXPECT_EQ(socket.respondersReceived, 1);
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
} // namespace flipper
|
||||
} // namespace facebook
|
||||
Reference in New Issue
Block a user