86 FakeRequest * mkRequest(
const std::uint64_t localTimeoutS = 100)
88 std::map<std::string, std::string> params;
89 params.emplace(
"key-1",
"value-1");
90 params.emplace(
"key-2",
"value-2");
92 return new FakeRequest(
96 std::make_shared<::OAuthConfiguration>(
102 ::OAuthConfiguration::DEVICE,
107 std::make_shared<::HTTPResponseToException>(),
112 void SetUp()
override
114 ::URLMockingTest::SetUp();
116 clock = ::ClockMock::createShared();
117 httpClient = ::HTTPClientMock::createShared(urlService);
118 jsonParser = ::JSONParserMock::createShared();
121 request.reset(mkRequest());
123 mockIdentityURLEncoding();
124 mockDefaultURLParsing();
127 std::shared_ptr<FakeRequest> request;
128 std::shared_ptr<::ClockMock> clock;
129 std::shared_ptr<::HTTPClientMock> httpClient;
130 std::shared_ptr<::JSONParserMock> jsonParser;
131 std::shared_ptr<::URLEncoderMock> urlEncoder;
133 std::map<std::string, std::shared_ptr<::JSONElement>> tokenResponseProps;
135 void stubAuthorizationRequest(
136 const std::int64_t expiresIn = 42,
137 const std::int64_t interval = 69
140 mockParse(
"/device",
::URL(
"",
"",
"",
"", 0,
"/device", {},
""));
142 auto document = ::JSONObjectMock::create();
143 EXPECT_CALL(*jsonParser, from(
"successful-authorization-request")).WillOnce(::Return(std::unique_ptr<::JSONObjectMock>(document)));
144 EXPECT_CALL(*document, getProperty(
"device_code")).WillRepeatedly(::Return(::JSONStringMock::createShared(
"-device-code-")));
145 EXPECT_CALL(*document, getProperty(
"user_code")).WillRepeatedly(::Return(::JSONStringMock::createShared(
"-user-code-")));
146 EXPECT_CALL(*document, getProperty(
"verification_uri")).WillRepeatedly(::Return(::JSONStringMock::createShared(
"/verify")));
147 EXPECT_CALL(*document, getProperty(
"verification_uri_complete")).WillRepeatedly(::Return(::JSONStringMock::createShared(
"/verify-complete")));
148 EXPECT_CALL(*document, getProperty(
"expires_in")).WillRepeatedly(::Return(::JSONNumberMock::createShared(expiresIn)));
150 EXPECT_CALL(*document, getProperty(
"interval")).WillRepeatedly(::Return(::JSONNumberMock::createShared(interval)));
153 EXPECT_CALL(*document, getProperty(
"interval")).WillRepeatedly(::Return(
nullptr));
156 void stubSuccessfulTokenRequest()
158 auto document = ::JSONObjectMock::create();
159 EXPECT_CALL(*jsonParser, from(
"successful-token-request")).WillOnce(::Return(std::unique_ptr<::JSONObjectMock>(document)));
160 EXPECT_CALL(*document, removeProperty(
"access_token")).WillOnce(::Return(::JSONStringMock::createShared(
"at")));
161 EXPECT_CALL(*document, removeProperty(
"refresh_token")).WillOnce(::Return(::JSONStringMock::createShared(
"rt")));
162 EXPECT_CALL(*document, removeProperty(
"expires_in")).WillOnce(::Return(::JSONNumberMock::createShared(77)));
164 tokenResponseProps.emplace(
"key-1", ::JSONStringMock::createShared(
"value-1"));
165 tokenResponseProps.emplace(
"key-2", ::JSONStringMock::createShared(
"value-2"));
167 EXPECT_CALL(*document, getProperties()).WillOnce(::ReturnRef(tokenResponseProps));
169 void stubErrorResponses(
170 const unsigned int numTimes,
171 const std::string jsonPayload,
172 const std::string error
174 auto &documentStub = EXPECT_CALL(*jsonParser, from(jsonPayload));
175 for (
unsigned int i = 0; i < numTimes; i++) {
176 auto document = ::JSONObjectMock::create();
177 documentStub.WillOnce(::Return(std::unique_ptr<::JSONObjectMock>(document)));
178 EXPECT_CALL(*document, getProperty(
"error")).WillRepeatedly(::Return(::JSONStringMock::createShared(error)));
179 EXPECT_CALL(*document, getProperty(
"error_description")).WillRepeatedly(::Return(::JSONStringMock::createShared(
"simulated_error")));
182 void stubAuthorizationPending(
const unsigned int numTimes) {
183 stubErrorResponses(numTimes,
"authorization-pending",
"authorization_pending");
185 void stubSlowDown(
const unsigned int numTimes)
187 stubErrorResponses(numTimes,
"slow-down",
"slow_down");