public async Task ItSavesAndReturnsANewAuthTokenIfLoginWasSuccessful() { var credentialsMessage = new CredentialsMessage { UserName = "******", Password = "******", UniqueDeviceId = "some unique id" }; var loggedInUser = new ApplicationUser { Id = "some user id" }; autoMocker.Get<ApplicationUserManager>().Expect(mock => mock.FindAsync( Arg<string>.Matches(userName => userName == credentialsMessage.UserName), Arg<string>.Matches(password => password == credentialsMessage.Password))) .Return(Task.FromResult(loggedInUser)); var someNewAuthToken = new AuthToken("the auth token value", new DateTime()); autoMocker.Get<IAuthTokenGenerator>().Expect(mock => mock.GenerateAuthToken(loggedInUser.Id, credentialsMessage.UniqueDeviceId)).Return(someNewAuthToken); //--act var actualResponse = await autoMocker.ClassUnderTest.Login(credentialsMessage); Assert.That(actualResponse.Content, Is.TypeOf(typeof(ObjectContent<NewAuthTokenMessage>))); var content = actualResponse.Content as ObjectContent<NewAuthTokenMessage>; var newAuthTokenMessage = content.Value as NewAuthTokenMessage; Assert.That(newAuthTokenMessage.AuthenticationToken, Is.EqualTo(someNewAuthToken.AuthenticationTokenString)); Assert.That(newAuthTokenMessage.AuthenticationTokenExpirationDateTime, Is.EqualTo(someNewAuthToken.AuthenticationTokenExpirationDateTime)); }
public async Task<HttpResponseMessage> Login(CredentialsMessage credentialsMessage) { var user = await applicationUserManager.FindAsync(credentialsMessage.UserName, credentialsMessage.Password); if (user == null) { return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Invalid credentials provided."); } var newAuthToken = authTokenGenerator.GenerateAuthToken(user.Id, credentialsMessage.UniqueDeviceId); var newAuthTokenMessage = new NewAuthTokenMessage { AuthenticationTokenExpirationDateTime = newAuthToken.AuthenticationTokenExpirationDateTime, AuthenticationToken = newAuthToken.AuthenticationTokenString }; return Request.CreateResponse(HttpStatusCode.OK, newAuthTokenMessage); }
public async Task ItReturnsAnHttp401NotAuthorizedResponseIfTheUsernameAndPasswordIsNotValid() { var credentialsMessage = new CredentialsMessage { UserName = "******", Password = "******" }; autoMocker.Get<ApplicationUserManager>().Expect(mock => mock.FindAsync( Arg<string>.Matches(userName => userName == credentialsMessage.UserName), Arg<string>.Matches(password => password == credentialsMessage.Password))) .Return(Task.FromResult((ApplicationUser)null)); var actualResponse = await autoMocker.ClassUnderTest.Login(credentialsMessage); AssertThatApiAction.HasThisError(actualResponse, HttpStatusCode.Unauthorized, "Invalid credentials provided."); }