public async Task LoginAsync_ThrowsException_WhenCfTargetIsMalformed() { Exception expectedException = null; MockedRequest catchallRequest = _mockHttp.When("*") .Throw(new Exception("Malformed uri exception should be thrown before httpClient is used")); _sut = new CfApiClient(_mockUaaClient.Object, _mockHttp.ToHttpClient()); try { var malformedCfTargetString = "what-a-mess"; await _sut.LoginAsync(malformedCfTargetString, _fakeCfUsername, _fakeCfPassword); } catch (Exception e) { expectedException = e; } Assert.IsNotNull(expectedException); _mockUaaClient.Verify(mock => mock.RequestAccessTokenAsync( It.IsAny <Uri>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); Assert.AreEqual(0, _mockHttp.GetMatchCount(catchallRequest)); }
public async Task LoginAsync_UpdatesAndReturnsAccessToken_WhenLoginSucceeds() { var expectedUri = new Uri(_fakeLoginAddress); var fakeAccessTokenContent = "fake access token"; MockedRequest cfBasicInfoRequest = _mockHttp.Expect("https://api." + _fakeTargetDomain + "/") .Respond("application/json", _fakeBasicInfoJsonResponse); _mockUaaClient.Setup(mock => mock.RequestAccessTokenAsync( expectedUri, CfApiClient.DefaultAuthClientId, CfApiClient.DefaultAuthClientSecret, _fakeCfUsername, _fakeCfPassword)) .ReturnsAsync(HttpStatusCode.OK); _mockUaaClient.SetupGet(mock => mock.Token) .Returns(new Token() { Access_token = fakeAccessTokenContent }); _sut = new CfApiClient(_mockUaaClient.Object, _mockHttp.ToHttpClient()); Assert.AreNotEqual(fakeAccessTokenContent, _sut.AccessToken); var result = await _sut.LoginAsync(_fakeCfApiAddress, _fakeCfUsername, _fakeCfPassword); Assert.AreEqual(fakeAccessTokenContent, _sut.AccessToken); Assert.AreEqual(fakeAccessTokenContent, result); _mockUaaClient.VerifyAll(); Assert.AreEqual(1, _mockHttp.GetMatchCount(cfBasicInfoRequest)); }
public async Task LoginAsync_ReturnsNull_AndDoesNotUpdateAccessToken_WhenLoginFails() { var expectedUri = new Uri(_fakeLoginAddress); MockedRequest cfBasicInfoRequest = _mockHttp.Expect("https://api." + _fakeTargetDomain + "/") .Respond("application/json", _fakeBasicInfoJsonResponse); _mockUaaClient.Setup(mock => mock.RequestAccessTokenAsync( expectedUri, CfApiClient.DefaultAuthClientId, CfApiClient.DefaultAuthClientSecret, _fakeCfUsername, _fakeCfPassword)) .ReturnsAsync(HttpStatusCode.Unauthorized); _sut = new CfApiClient(_mockUaaClient.Object, _mockHttp.ToHttpClient()); var initialAccessToken = _sut.AccessToken; var result = await _sut.LoginAsync(_fakeCfApiAddress, _fakeCfUsername, _fakeCfPassword); Assert.IsNull(result); Assert.AreEqual(initialAccessToken, _sut.AccessToken); _mockUaaClient.VerifyAll(); Assert.AreEqual(1, _mockHttp.GetMatchCount(cfBasicInfoRequest)); }
public async Task LoginAsync_ThrowsException_WhenBasicInfoRequestErrors() { Exception resultException = null; var fakeHttpExceptionMessage = "(fake) http request failed"; MockedRequest cfBasicInfoRequest = _mockHttp.Expect(_fakeCfApiAddress + "/") .Throw(new Exception(fakeHttpExceptionMessage)); _sut = new CfApiClient(_mockUaaClient.Object, _mockHttp.ToHttpClient()); try { await _sut.LoginAsync(_fakeCfApiAddress, _fakeCfUsername, _fakeCfPassword); } catch (Exception e) { resultException = e; } Assert.AreEqual(1, _mockHttp.GetMatchCount(cfBasicInfoRequest)); Assert.IsNotNull(resultException); Assert.IsTrue(resultException.Message.Contains(fakeHttpExceptionMessage)); Assert.IsTrue( resultException.Message.Contains(CfApiClient.AuthServerLookupFailureMessage) || (resultException.Data.Contains("MessageToDisplay") && resultException.Data["MessageToDisplay"].ToString().Contains(CfApiClient.AuthServerLookupFailureMessage))); _mockUaaClient.Verify(mock => mock.RequestAccessTokenAsync( It.IsAny <Uri>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); }