121 lines
No EOL
3.7 KiB
C++
121 lines
No EOL
3.7 KiB
C++
#include "gtest/gtest.h"
|
|
#include "gmock/gmock.h"
|
|
|
|
#include <memory>
|
|
#include <huestream/connect/ConnectionFlow.h>
|
|
#include "MockBridgeAuthenticator.h"
|
|
#include "MockBridgeSearcher.h"
|
|
#include "TestableConnectionFlow.h"
|
|
#include "MockConnectionFlowFactory.h"
|
|
#include "MockBridgeStorageAccesser.h"
|
|
#include "MessageDispatcherStub.h"
|
|
#include "TestConnectionFlowBase.h"
|
|
|
|
using namespace testing;
|
|
using namespace huestream;
|
|
using namespace huestream::connectionflow;
|
|
|
|
class TestConnectionFlow_Manual : public TestConnectionFlowBase {
|
|
public:
|
|
|
|
void connect_manual_ip_starts_pushlink(int index) {
|
|
expect_message(PROCEDURE_STARTED, INFO);
|
|
string ipAddress = _bridges->at(index)->GetIpAddress();
|
|
|
|
expect_message(START_AUTHORIZING, INFO);
|
|
expect_message(PRESS_PUSH_LINK, USER);
|
|
expect_on_authenticator_authenticate(index);
|
|
|
|
_connectionFlow->ConnectToBridgeWithIp(ipAddress);
|
|
_messageDispatcher->ExecutePendingActions();
|
|
}
|
|
|
|
void set_manual(int index) {
|
|
_bridges->at(index)->SetUser("HSJKHSDKJHKJDHIUHHFYU&e213");
|
|
_bridges->at(index)->SetClientKey("00000000000000000000000000000000");
|
|
_bridges->at(index)->SetIsAuthorized(true);
|
|
|
|
_connectionFlow->SetManual(_bridges->at(index));
|
|
}
|
|
|
|
void set_manual_retrieves_full_config(int index, int numGroups) {
|
|
expect_message(PROCEDURE_STARTED, INFO);
|
|
expect_initiate_full_config_retrieval();
|
|
set_manual(index);
|
|
_messageDispatcher->ExecutePendingActions();
|
|
|
|
retrieve_full_config(index, numGroups);
|
|
}
|
|
|
|
void reset_bridge_returns_empty_bridge() {
|
|
expect_message(PROCEDURE_STARTED, INFO);
|
|
expect_message(DONE_RESET, INFO, make_shared<Bridge>(), BRIDGE_EMPTY);
|
|
expect_on_storage_accesser_save();
|
|
_connectionFlow->ResetBridge();
|
|
_messageDispatcher->ExecutePendingActions();
|
|
}
|
|
|
|
};
|
|
|
|
INSTANTIATE_TEST_CASE_P(connect_with_manual_ip,
|
|
TestConnectionFlow_Manual, Values(0,1));
|
|
|
|
TEST_P(TestConnectionFlow_Manual, connect_with_manual_ip) {
|
|
set_autostart_based_on_param(GetParam());
|
|
connect_manual_ip_starts_pushlink(0);
|
|
finish_authorization_successfully_and_retrieve_full_config(0);
|
|
finish(_bridges->at(0));
|
|
}
|
|
|
|
INSTANTIATE_TEST_CASE_P(connect_with_manual_ip_and_credentials,
|
|
TestConnectionFlow_Manual, Values(0,1));
|
|
|
|
TEST_P(TestConnectionFlow_Manual, connect_with_manual_ip_and_credentials) {
|
|
set_autostart_based_on_param(GetParam());
|
|
set_manual_retrieves_full_config(1, 1);
|
|
finish(_bridges->at(1));
|
|
}
|
|
|
|
TEST_F(TestConnectionFlow_Manual, reset_bridge) {
|
|
reset_bridge_returns_empty_bridge();
|
|
finish_without_stream_start(false);
|
|
}
|
|
|
|
TEST_F(TestConnectionFlow_Manual, connect_with_manual_ip_followed_by_connect_with_manual_ip_and_credentials) {
|
|
connect_manual_ip_starts_pushlink(0);
|
|
finish_authorization_successfully_and_retrieve_full_config(0);
|
|
finish(_bridges->at(0));
|
|
|
|
set_manual_retrieves_full_config(1, 2);
|
|
finish_without_stream_start(false);
|
|
}
|
|
|
|
TEST_F(TestConnectionFlow_Manual, connect_with_manual_ip_abort_and_retry) {
|
|
connect_manual_ip_starts_pushlink(0);
|
|
|
|
expect_no_actions();
|
|
_connectionFlow->ConnectToBridgeWithIp(_bridges->at(1)->GetIpAddress());
|
|
_messageDispatcher->ExecutePendingActions();
|
|
|
|
abort_finalizes();
|
|
|
|
connect_manual_ip_starts_pushlink(2);
|
|
finish_authorization_successfully_and_retrieve_full_config(2);
|
|
finish(_bridges->at(2));
|
|
}
|
|
|
|
TEST_F(TestConnectionFlow_Manual, connect_with_manual_ip_and_credentials_abort_and_retry) {
|
|
expect_message(PROCEDURE_STARTED, INFO);
|
|
expect_initiate_full_config_retrieval();
|
|
set_manual(0);
|
|
_messageDispatcher->ExecutePendingActions();
|
|
|
|
expect_no_actions();
|
|
set_manual(1);
|
|
_messageDispatcher->ExecutePendingActions();
|
|
|
|
abort_finalizes();
|
|
|
|
set_manual_retrieves_full_config(2, 1);
|
|
finish(_bridges->at(2));
|
|
} |