Files
flipper/xplat/FlipperTestLib/FlipperConnectionManagerMock.h
Lorenzo Blasa d1c06c9c46 Do not overload send as this causes issues with folly::dynamic
Summary:
folly::dynamic, std::string, implicit constructors and method overloading is not a good combination.

This renames the send method to sendRaw as to avoid issues with existing plugins currently sending string params.

Reviewed By: mweststrate

Differential Revision: D38827539

fbshipit-source-id: 653f62e41ebfbe93d1af25f39c81f6b05bf84cb4
2022-08-18 09:39:42 -07:00

91 lines
2.1 KiB
C++

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <Flipper/FireAndForgetBasedFlipperResponder.h>
#include <Flipper/FlipperConnectionManager.h>
namespace facebook {
namespace flipper {
namespace test {
class FlipperConnectionManagerMock : public FlipperConnectionManager {
public:
FlipperConnectionManagerMock() : callbacks(nullptr) {}
void start() override {
open = true;
if (callbacks) {
callbacks->onConnected();
}
}
void stop() override {
open = false;
if (callbacks) {
callbacks->onDisconnected();
}
}
bool isOpen() const override {
return open;
}
void sendMessage(const folly::dynamic& message) override {
messages.push_back(message);
}
void sendMessageRaw(const std::string& message) override {
messages.push_back(folly::parseJson(message));
}
void setCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) override{};
std::shared_ptr<FlipperCertificateProvider> getCertificateProvider()
override {
return nullptr;
};
void onMessageReceived(
const folly::dynamic& message,
std::unique_ptr<FlipperResponder> responder) override {
if (responder) {
const FireAndForgetBasedFlipperResponder* const r =
dynamic_cast<FireAndForgetBasedFlipperResponder*>(responder.get());
if (r) {
if (r->hasId()) {
++respondersWithIdReceived;
} else {
++respondersWithoutIdReceived;
}
} else {
++respondersWithIdReceived;
}
}
callbacks->onMessageReceived(message, std::move(responder));
messagesReceived.push_back(message);
}
void setCallbacks(Callbacks* aCallbacks) override {
callbacks = aCallbacks;
}
public:
bool open = false;
Callbacks* callbacks;
std::vector<folly::dynamic> messages;
std::vector<folly::dynamic> messagesReceived;
int respondersWithIdReceived = 0;
int respondersWithoutIdReceived = 0;
};
} // namespace test
} // namespace flipper
} // namespace facebook