public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnCompletionDataDevice()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"completionData\": { \"device\": { \"ipAddress\": \"1.1.1.1\" } } }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("1.1.1.1", result.CompletionData.Device.IpAddress);
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnCompletionDataSignatureXml()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"completionData\": { \"signature\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHNhbXBsZT48dmFsdWU+SGk8L3ZhbHVlPjxjb250ZW50PkJ5ZTwvY29uZW50Pjwvc2FtcGxlPg==\" } }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><sample><value>Hi</value><content>Bye</conent></sample>", result.CompletionData.GetSignatureXml());
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnOrderRef()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"orderRef\":\"abc123\" }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("abc123", result.OrderRef);
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnCompletionDataSignature_AndOcspResponse()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"completionData\": {  \"signature\": \"s\", \"ocspResponse\": \"or\" } }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("s", result.CompletionData.Signature);
            Assert.Equal("or", result.CompletionData.OcspResponse);
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnStatus()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"status\":\"Pending\" }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("Pending", result.Status);
            Assert.Equal(CollectStatus.Pending, result.GetCollectStatus());
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnHintCode()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"hintCode\":\"OutstandingTransaction\" }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("OutstandingTransaction", result.HintCode);
            Assert.Equal(CollectHintCode.OutstandingTransaction, result.GetCollectHintCode());
        }
        public async void AuthAsync_WithAuthRequest__ShouldParseAndReturnOrderRef_AndAutoStartToken()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"orderRef\": \"abc123\", \"autoStartToken\": \"def456\" }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.AuthAsync(new AuthRequest("1.1.1.1"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("abc123", result.OrderRef);
            Assert.Equal("def456", result.AutoStartToken);
        }
        public BankIdApiClient_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://bankid/")
            };

            _bankIdApiClient = new BankIdApiClient(httpClient);
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnCompletionDataCertDates_ConvetedFromUnixEpochMillisecondsToDateTime()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"completionData\": { \"cert\": { \"notBefore\": \"671630400000\", \"notAfter\": \"671659200000\" } } }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("671630400000", result.CompletionData.Cert.NotBefore);
            Assert.Equal(new DateTime(1991, 4, 14, 12, 00, 00), result.CompletionData.Cert.GetNotBeforeDateTime());
            Assert.Equal("671659200000", result.CompletionData.Cert.NotAfter);
            Assert.Equal(new DateTime(1991, 4, 14, 20, 00, 00), result.CompletionData.Cert.GetNotAfterDateTime());
        }
        public async void CollectAsync_WithCollectRequest__ShouldParseAndReturnCompletionDataUser()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"completionData\": { \"user\": { \"personalNumber\": \"201801012392\", \"name\": \"n\", \"givenName\": \"gn\", \"surname\": \"sn\" } } }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.CollectAsync(new CollectRequest("x"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("201801012392", result.CompletionData.User.PersonalIdentityNumber);
            Assert.Equal("n", result.CompletionData.User.Name);
            Assert.Equal("gn", result.CompletionData.User.GivenName);
            Assert.Equal("sn", result.CompletionData.User.Surname);
        }
Exemple #11
0
        public async Task SignAsync_WithSignRequest__ShouldParseAndReturnOrderRef_AndTokens()
        {
            // Arrange
            var httpClient   = GetHttpClientMockWithOkResponse("{ \"orderRef\": \"abc123\", \"autoStartToken\": \"def456\", \"qrStartSecret\": \"ghi790\", \"qrStartToken\": \"jkl123\" }");
            var bankIdClient = new BankIdApiClient(httpClient);

            // Act
            var result = await bankIdClient.SignAsync(new SignRequest("1.1.1.1", "userVisibleData"));

            // Assert
            Assert.NotNull(result);
            Assert.Equal("abc123", result.OrderRef);
            Assert.Equal("def456", result.AutoStartToken);
            Assert.Equal("ghi790", result.QrStartSecret);
            Assert.Equal("jkl123", result.QrStartToken);
        }
        public async void ErrorResponse__ShouldThrowException_WithErrorCode_AndDetails()
        {
            // Arrange
            var messageHandlerMock = GetHttpClientMessageHandlerMock(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.BadRequest,
                Content    = new StringContent("{ \"errorCode\": \"AlreadyInProgress\", \"details\": \"d\" }", Encoding.Default, "application/json"),
            });

            var httpClient = new HttpClient(messageHandlerMock.Object)
            {
                BaseAddress = new Uri("https://bankid/")
            };
            var bankIdApiClient = new BankIdApiClient(httpClient);

            // Act
            var exception = await Assert.ThrowsAsync <BankIdApiException>(() => bankIdApiClient.AuthAsync(new AuthRequest("1.1.1.1")));

            // Assert
            Assert.Equal(ErrorCode.AlreadyInProgress, exception.ErrorCode);
            Assert.Equal("d", exception.ErrorDetails);
        }