#include #include #include "core_handler_mock.hpp" #include "gtest_matchers.hpp" #include "http_mock.hpp" #include "pam_info_mock.hpp" using namespace testing; using namespace rublon; ///TODO test if lenght is checked class PasscodeBasedAuthTest : public Test { public: PasscodeBasedAuthTest() : sut{systemToken, tid, name, userMessage, 6, true} {} std::string systemToken, tid; const char * name = "Test"; const char * userMessage = "message"; method::PasscodeBasedAuth sut; mocks::CoreHandlerMock coreHandler; mocks::PamInfoMock pam; }; TEST_F(PasscodeBasedAuthTest, wrongPasscodeShouldFail) { EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(RawCoreResponse{}.codeConfirmationMessage().withWrongCodeResponse())); EXPECT_CALL(pam, scan_mock(_)).WillOnce(Return("123456")); EXPECT_CALL(pam, print_mock(_)); EXPECT_THAT(sut.handle(coreHandler, pam), Unexpected(WerificationError{WerificationError::WrongCode})); } TEST_F(PasscodeBasedAuthTest, whenGivenBadPasscodeWeNeedToAskAgain) { EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(RawCoreResponse{}.codeConfirmationMessage())); EXPECT_CALL(pam, scan_mock(_))// .WillOnce(Return("1_3456")) .WillOnce(Return("123456")); EXPECT_CALL(pam, print_mock(_) ).Times(2); EXPECT_THAT(sut.handle(coreHandler, pam), HasValue() ); } TEST_F(PasscodeBasedAuthTest, whenGiveenBadPasscodeMultipleTimesWeAbort) { EXPECT_CALL(pam, scan_mock(_))// .WillOnce(Return("1_3456")) .WillOnce(Return("12345_")); EXPECT_CALL(pam, print_mock(_) ); EXPECT_THAT(sut.handle(coreHandler, pam), Unexpected(WerificationError{WerificationError::WrongCode})); } TEST_F(PasscodeBasedAuthTest, goodPasscodeShouldPass){ EXPECT_CALL(coreHandler, request(_, _)).WillOnce(Return(RawCoreResponse{}.codeConfirmationMessage())); EXPECT_CALL(pam, scan_mock(_)).WillOnce(Return("123456")); EXPECT_CALL(pam, print_mock(_)); EXPECT_THAT(sut.handle(coreHandler, pam), HasValue() ); }