public async void BankIdFederatedLoginAsync__ShouldPostToGrandIdFederatedLogin_WithFormPayload() { // Arrange var messageHandlerMock = GetHttpClientMessageHandlerMock(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent("{ }", Encoding.Default, "application/json"), }); var httpClient = new HttpClient(messageHandlerMock.Object) { BaseAddress = new Uri("https://grandid/") }; var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("ak", "bsk")); // Act await grandIdApiClient.BankIdFederatedLoginAsync(new BankIdFederatedLoginRequest("y")); // Assert Assert.Single(messageHandlerMock.Invocations); var request = messageHandlerMock.GetFirstArgumentOfFirstInvocation <HttpMessageHandler, HttpRequestMessage>(); Assert.NotNull(request); Assert.Equal(HttpMethod.Post, request.Method); Assert.StartsWith("https://grandid/FederatedLogin", request.RequestUri.ToString()); Assert.Equal(new MediaTypeHeaderValue("application/x-www-form-urlencoded"), request.Content.Headers.ContentType); }
public async void LogoutAsync_WithGrandIdLogoutRequest__ShouldParseAndReturnSessionDeleted() { // Arrange var httpClient = GetHttpClientMockWithOkResponse("{ \"sessiondeleted\": \"1\" }"); var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); // Act var result = await grandIdApiClient.LogoutAsync(new LogoutRequest("s")); // Assert Assert.NotNull(result); Assert.True(result.SessionDeleted); }
public async void ErrorResponse_WithBadRequestResult__ShouldThrowException_WithErrorCode_AndMessage() { // Arrange var httpClient = GetHttpClientMockWithBadRequestResponse("{ \"errorObject\": { \"code\": \"FieldsNotValid\", \"message\": \"m\" } }"); var bankIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); // Act var exception = await Assert.ThrowsAsync <GrandIdApiException>(() => bankIdApiClient.BankIdFederatedLoginAsync(new BankIdFederatedLoginRequest("http://c/"))); // Assert Assert.Equal(ErrorCode.FieldsNotValid, exception.ErrorCode); Assert.Equal("m", exception.ErrorDetails); }
public async void BankIdGetSessionAsync_WithBankIdGetSessionRequest__ShouldParseAndReturnSignatureXml() { // Arrange var httpClient = GetHttpClientMockWithOkResponse("{ \"userAttributes\": { \"signature\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHNhbXBsZT48dmFsdWU+SGk8L3ZhbHVlPjxjb250ZW50PkJ5ZTwvY29uZW50Pjwvc2FtcGxlPg==\" } }"); var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); // Act var result = await grandIdApiClient.BankIdGetSessionAsync(new BankIdGetSessionRequest("y")); // Assert Assert.NotNull(result); Assert.NotNull(result.UserAttributes); Assert.Equal("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><sample><value>Hi</value><content>Bye</conent></sample>", result.UserAttributes.GetSignatureXml()); }
public async void BankIdFederatedLoginAsync_WithBankIdFederatedLoginRequest__ShouldParseAndReturnOrderRef_AndAutoStartToken() { // Arrange var httpClient = GetHttpClientMockWithOkResponse("{ \"sessionId\": \"s\", \"redirectUrl\": \"https://r/\" }"); var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); // Act var result = await grandIdApiClient.BankIdFederatedLoginAsync(new BankIdFederatedLoginRequest("https://c/")); // Assert Assert.NotNull(result); Assert.Equal("s", result.SessionId); Assert.Equal("https://r/", result.RedirectUrl); }
public async void BankIdGetSessionAsync_WithBankIdGetSessionRequest__ShouldParseAndReturnNotBefore_AndNotAfter() { // Arrange var httpClient = GetHttpClientMockWithOkResponse("{ \"userAttributes\": { \"notBefore\": \"2018-12-25T00:00:00.000+02:00\", \"notAfter\": \"2018-12-26T00:00:00.000+02:00\" } }"); var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); // Act var result = await grandIdApiClient.BankIdGetSessionAsync(new BankIdGetSessionRequest("y")); // Assert Assert.NotNull(result); Assert.NotNull(result.UserAttributes); Assert.Equal(new DateTime(2018, 12, 24, 22, 00, 00, DateTimeKind.Local), result.UserAttributes.GetNotBeforeDateTime()); Assert.Equal(new DateTime(2018, 12, 25, 22, 00, 00, DateTimeKind.Utc), result.UserAttributes.GetNotAfterDateTime()); }
public GrandIdApiClient_Tests() { _messageHandlerMock = GetHttpClientMessageHandlerMock(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent("{ }", Encoding.Default, "application/json"), }); var httpClient = new HttpClient(_messageHandlerMock.Object) { BaseAddress = new Uri("https://grandid/") }; _grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); }
public async void BankIdGetSessionAsync_WithBankIdGetSessionRequest__ShouldParseAndReturnGetSessionResponse() { // Arrange var httpClient = GetHttpClientMockWithOkResponse("{ \"sessionId\": \"s\", \"username\": \"u\", \"userAttributes\": { \"givenName\": \"ugn\", \"surname\": \"usn\", \"name\": \"un\", \"personalNumber\": \"upn\", \"ipAddress\": \"uip\" } }"); var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("x", "bsk")); // Act var result = await grandIdApiClient.BankIdGetSessionAsync(new BankIdGetSessionRequest("y")); // Assert Assert.NotNull(result); Assert.Equal("s", result.SessionId); Assert.Equal("u", result.Username); Assert.NotNull(result.UserAttributes); Assert.Equal("ugn", result.UserAttributes.GivenName); Assert.Equal("usn", result.UserAttributes.Surname); Assert.Equal("un", result.UserAttributes.Name); Assert.Equal("upn", result.UserAttributes.PersonalIdentityNumber); Assert.Equal("uip", result.UserAttributes.IpAddress); }
public async void BankIdFederatedLoginAsync_WithApiKey__ShouldPostToGrandIdFederatedLogin_WithApiKey() { // Arrange var messageHandlerMock = GetHttpClientMessageHandlerMock(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent("{ }", Encoding.Default, "application/json"), }); var httpClient = new HttpClient(messageHandlerMock.Object) { BaseAddress = new Uri("https://grandid/") }; var grandIdApiClient = new GrandIdApiClient(httpClient, new GrandIdApiClientConfiguration("ak", "bsk")); // Act await grandIdApiClient.BankIdFederatedLoginAsync(new BankIdFederatedLoginRequest("https://c/")); // Assert var request = messageHandlerMock.GetFirstArgumentOfFirstInvocation <HttpMessageHandler, HttpRequestMessage>(); Assert.Contains("apiKey=ak", request.RequestUri.ToString()); }