#include #include #include #include "core_handler_mock.hpp" #include "gtest_matchers.hpp" #include "http_mock.hpp" #include "pam_info_mock.hpp" using namespace rublon; using namespace testing; class MethodFactoryMock { public: using MethodFactoryCreate_t = tl::expected< MethodProxy, Error >; template < typename... Args > MethodFactoryMock(Args &&...) {} MOCK_METHOD(MethodFactoryCreate_t, create, (const mocks::PamInfoMock &, std::string tid), (const)); }; class RublonHttpInitTest : public testing::Test { public: void expectDefaultPamInfo() { EXPECT_CALL(pam, ip()).WillOnce(Return("192.168.0.1")); EXPECT_CALL(pam, username()).WillOnce(Return("bwi")); } RublonHttpInitTest() : coreHandler{}, pam{}, sut{conf} { expectDefaultPamInfo(); } mocks::CoreHandlerMock coreHandler; mocks::PamInfoMock pam; Init< MethodFactoryMock > sut; }; TEST_F(RublonHttpInitTest, initializationSendsRequestOnGoodPath) { EXPECT_CALL(coreHandler, request("/api/transaction/init", _)).WillOnce(Return(RawCoreResponse{}.initMessage())); sut.handle(coreHandler, pam); } TEST_F(RublonHttpInitTest, rublon_Accept_pamLoginWhenThereIsNoConnection) { EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(RawCoreResponse{}.withTimeoutError())); EXPECT_THAT(sut.handle(coreHandler, pam), // AllOf(Not(HasValue()), IsPAMBaypass())); } TEST_F(RublonHttpInitTest, rublon_Decline_pamLoginWhenServerHasBadSignature) { EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(RawCoreResponse{}.withBasSignature())); EXPECT_THAT(sut.handle(coreHandler, pam), IsPAMDeny()); } // TEST_F(RublonHttpInitTest, rublon_Decline_pamLoginWhenServerReturnsBrokenData) { // EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(tl::unexpected{CoreHandlerError{CoreHandlerError::BrokenData}})); // EXPECT_THAT(sut.handle(coreHandler, pam), HoldsPamAction(PamAction::decline)); // } // TEST_F(RublonHttpInitTest, rublon_Decline_pamLoginWhenServerReturnsCoreException) { // EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(tl::unexpected{CoreHandlerError{CoreHandlerError::CoreException}})); // EXPECT_THAT(sut.handle(coreHandler, pam), HoldsPamAction(PamAction::decline)); // } TEST_F(RublonHttpInitTest, AllNeededInformationNeedsToBePassedToMethodFactory) { EXPECT_CALL(coreHandler, request(_, _)) .WillOnce(Return( RawCoreResponse{}.initMessage().withMethods("sms", "otp"))); // EXPECT_CALL(methodFactoryMock, create_mocked(_,"transaction ID") ); sut.handle(coreHandler, pam); }