public void GivenSomeValidVerifyCredentials_RetrieveUserInformation_ReturnsAnAuthenticatedClient() { // Arrange. var mockRestResponseRetrieveRequestToken = new Mock<IRestResponse>(); mockRestResponseRetrieveRequestToken.Setup(x => x.StatusCode).Returns(HttpStatusCode.OK); mockRestResponseRetrieveRequestToken.Setup(x => x.Content) .Returns("oauth_token=aaa&oauth_token_secret=ccc"); var verifyCredentialsResult = new VerifyCredentialsResult { Name = "Some Name", Id = 1234, Lang = "en-au", ScreenName = "Some-Screen-Name" }; var mockRestResponseVerifyCredentials = new Mock<IRestResponse<VerifyCredentialsResult>>(); mockRestResponseVerifyCredentials.Setup(x => x.Data).Returns(verifyCredentialsResult); mockRestResponseVerifyCredentials.Setup(x => x.StatusCode).Returns(HttpStatusCode.OK); var mockRestClient = new Mock<IRestClient>(); mockRestClient .Setup(x => x.Execute(It.IsAny<IRestRequest>())) .Returns(mockRestResponseRetrieveRequestToken.Object); mockRestClient .Setup(x => x.Execute<VerifyCredentialsResult>(It.IsAny<IRestRequest>())) .Returns(mockRestResponseVerifyCredentials.Object); var twitterProvider = new TwitterProvider(new ProviderParams { Key = "a", Secret = "b" }) { RestClientFactory = new RestClientFactory(mockRestClient.Object) }; var nameValueCollection = new NameValueCollection { {"oauth_token", "aaa"}, {"oauth_verifier", "bbb"} }; // Act. var result = twitterProvider.AuthenticateClient(new TwitterAuthenticationServiceSettings(), nameValueCollection); // Assert. Assert.NotNull(result); Assert.Equal("twitter", result.ProviderName); Assert.NotNull(result.UserInformation); Assert.NotNull(result.UserInformation.Id); Assert.NotNull(result.UserInformation.Locale); Assert.NotNull(result.UserInformation.Name); Assert.NotNull(result.UserInformation.UserName); }
GivenExecutingVerifyCredentialsThrowsAnException_AuthenticateClient_ThrowsAnAuthenticationException() { // Arrange. const string exceptionMessage = "some mock exception."; var mockRestClient = new Mock<IRestClient>(); var mockRestResponseRetrieveRequestToken = new Mock<IRestResponse>(); mockRestResponseRetrieveRequestToken.Setup(x => x.StatusCode).Returns(HttpStatusCode.OK); mockRestResponseRetrieveRequestToken.Setup(x => x.Content) .Returns("oauth_token=aaa&oauth_token_secret=ccc"); var verifyCredentialsResult = new VerifyCredentialsResult { Name = "Some Name", Id = 1234, Lang = "en-au", ScreenName = "Some-Screen-Name" }; var mockRestResponseVerifyCredentials = new Mock<IRestResponse<VerifyCredentialsResult>>(); mockRestResponseVerifyCredentials.Setup(x => x.Data).Returns(verifyCredentialsResult); mockRestClient .Setup(x => x.Execute(It.IsAny<IRestRequest>())) .Returns(mockRestResponseRetrieveRequestToken.Object); mockRestClient .Setup(x => x.Execute<VerifyCredentialsResult>(It.IsAny<IRestRequest>())) .Throws(new Exception(exceptionMessage)); var twitterProvider = new TwitterProvider(new ProviderParams { Key = "a", Secret = "b" }) { RestClientFactory = new RestClientFactory(mockRestClient.Object) }; var nameValueCollection = new NameValueCollection { {"oauth_token", "aaa"}, {"oauth_verifier", "bbb"} }; // Act. var result = Assert.Throws<AuthenticationException>( () => twitterProvider.AuthenticateClient(new TwitterAuthenticationServiceSettings(), nameValueCollection)); // Assert. Assert.NotNull(result); Assert.Equal("Failed to retrieve VerifyCredentials json data from the Twitter Api.", result.Message); }