コード例 #1
0
        public async Task GeoCode_NonSuccessStatusCode()
        {
            // ARRANGE
            var keyVaultServiceMock   = new Mock <IAzureKeyVaultService>();
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();

            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.BadGateway);
                return(Task.FromResult(response));
            }
                                                              );

            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new GoogleApiService(keyVaultServiceMock.Object, httpClientFactoryMock.Object);
            var apiKey        = "APIKEY";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("GoogleApiKey"))
            .ReturnsAsync(() => apiKey).Verifiable();

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            // ACT
            var _ = await unitUnderTest.GeoCode("825 Redwood Lane", "Papillion", "NE", "68046");
        }
コード例 #2
0
        public async Task ValidateAsync_Valid_ReturnSecurityToken()
        {
            #region arrange var

            var jwtToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImFiYyJ9.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiYS5iLmMiLCJleHAiOjIxNDc0ODM2NDcsImlhdCI6MzMzODI1MjMwLCJzdWIiOiIwMDAwMDAueHh4eC4xMTExIiwiY19oYXNoIjoieHh4eCIsImVtYWlsIjoieHh4eEBwcml2YXRlcmVsYXkuYXBwbGVpZC5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJpc19wcml2YXRlX2VtYWlsIjoidHJ1ZSIsImF1dGhfdGltZSI6MzMzODI1MjMwLCJub25jZV9zdXBwb3J0ZWQiOnRydWV9.Dmm0_tSmjT4DEXtMprCmP3oDoThZJqVmNh1tcsdqRpkt7-V0jqVrYFaqkiLK8W6293MJhKma-blwkscNdcw4zUQxhP1JeHrByFopQqXp-COY_lR4QjzKZU1qyIKdHkCkvODwxWP3bLDeG8GVFue3OzK8IpeRrV5ad7IZOoSFKJpXnTInRvHGx_B1XJdCLjXDgo9DrwsICL5IP1GLa1dWl0NnenaQzoijwsxaTERxSOLaA0uCIrXAq0QM5RREqBFV-uDkE-4JwF0jXVYnnmNtammOW79zZE9ylWzXdioyNcP4dbOHgi4wWfXIlJw2v8Iswx9HcbtoM-R_D__83-7lCg";
            var jsonKey  = "{'kty':'RSA','e':'AQAB','use':'sig','kid':'abc','alg':'RS256','n':'k7al_Uc5ld-2nv7Nn9V9oSeOEsxOT32wXBsUDV3aIJktZxJ58RFkX7LvFckHjFt8Du7R1jkV5jzZP2YBD6GzX5pPwAagL6t0PCvKs23bGfzxwweYf5llO483Gp7wZkpfTItIfiz0fAqOR-NKNweiJ0SaIk1hRUwCdwbUCOXFnDVa6l5MABRIKfjRmuhljSYeqnCYRZepVIaybJR8DdGTByJdgTl_1H91P_ySLCulA4B-7fVY2u_E93avbRyrOqxX6QXw1DjVIZpzPBRXmC1WlZNwbL770P-Y0IKs2Hsl791S6CIO2ax8X3LZBieLFOGYOOVVHGCzH4-Cpd0FOTUVEQ'}";
            var expected = "{\"alg\":\"RS256\",\"typ\":\"JWT\",\"kid\":\"abc\"}.{\"iss\":\"https://appleid.apple.com\",\"aud\":\"a.b.c\",\"exp\":2147483647,\"iat\":333825230,\"sub\":\"000000.xxxx.1111\",\"c_hash\":\"xxxx\",\"email\":\"[email protected]\",\"email_verified\":\"true\",\"is_private_email\":\"true\",\"auth_time\":333825230,\"nonce_supported\":true}";

            #endregion

            var appleResponse = new AppleKeysResponse {
                Keys = new[] { new JsonWebKey(jsonKey) }
            };
            var handlerStub = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonSerializer.Serialize(appleResponse, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                })),
            });
            var client   = new HttpClient(handlerStub);
            var verifier = new AppleVerifier(client);
            var result   = await verifier.ValidateAsync(jwtToken);

            result.Should().NotBeNull();
            result.ToString().Should().Be(expected);
        }
コード例 #3
0
        public async Task RetrieveDataWithSuccessfulResponseAndData()
        {
            // ARRANGE
            var configurationMock     = new Mock <IConfiguration>();
            var httpClientFactoryMock = new Mock <System.Net.Http.IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(_goodResponseString, Encoding.UTF8)
                };
                return(Task.FromResult(response));
            }
                                                                  );
            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new GraphApiService(configurationMock.Object, httpClientFactoryMock.Object);

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>())).Returns(client);

            // ACT
            var result = await unitUnderTest.RetrieveData("https://www.google.com", "Does not matter for this test as we are using a DelegatingHandler");

            client.Dispose();

            // ASSERT
            Assert.IsNotNull(result);
            Assert.AreEqual(_goodResponseString, result);
        }
コード例 #4
0
        public async Task RetrieveFranchises_UnsuccessfulResponse()
        {
            // ARRANGE
            var appCache              = (IAppCache)_context.Properties["appCache"];
            var configuration         = (IConfiguration)_context.Properties["configuration"];
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();

            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(_badResponseString, Encoding.UTF8)
                };

                return(Task.FromResult(response));
            });
            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new ProgramDataService(appCache, configuration, httpClientFactoryMock.Object);

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            var bearerToken = "SAMPLETOKEN";

            // ACT
            var _ = await unitUnderTest.RetrieveFranchises(ProgramDataSources.ClearCare, bearerToken);
        }
コード例 #5
0
        public async void Create_GetUserAsync()
        {
            Environment.SetEnvironmentVariable("USERS_SERVICE_HTTP", "users-service.api.converge-app.net");
            var expected          = "";
            var mockFactory       = new Mock <IHttpClientFactory>();
            var configuration     = new HttpConfiguration();
            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                request.SetConfiguration(configuration);
                var response = request.CreateResponse(HttpStatusCode.OK, expected);
                return(Task.FromResult(response));
            });

            var client = new HttpClient(clientHandlerStub);

            mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client);

            IHttpClientFactory factory = mockFactory.Object;
            var controller             = new Client(factory);

            //Act
            var result = await controller.GetUserAsync("123");

            //Assert
            Assert.NotNull(expected);
        }
コード例 #6
0
        public async Task RetrieveData_SuccessfulResponseAndUnexpectedDataResponse()
        {
            // ARRANGE
            var appCache = (IAppCache)_context.Properties["appCache"];
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();
            var keyVaultServiceMock   = new Mock <IAzureKeyVaultService>();
            var configuration         = (IConfiguration)_context.Properties["configuration"];
            var clientHandlerStub     = new DelegatingHandlerStub();
            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new HISCTokenService(appCache, httpClientFactoryMock.Object, keyVaultServiceMock.Object, configuration);

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            var clientId = "ClientId";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("BarerTokenClientId"))
            .ReturnsAsync(() => clientId).Verifiable();

            var appKey = "ClientSecret";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("BarerTokenClientSecret"))
            .ReturnsAsync(() => appKey).Verifiable();

            // ACT
            var _ = await unitUnderTest.RetrieveToken();
        }
コード例 #7
0
        private void SetupWithMockHttpClientFactory(bool success = true)
        {
            var mockHttpClientFactory = new Mock <IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub(success);
            var client = new HttpClient(clientHandlerStub);

            mockHttpClientFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client);
            _mailgunEmailService = new MailgunEmailService(mockHttpClientFactory.Object, new LoggerFactory(), Options.Create(_emailSettings));
        }
コード例 #8
0
        // Mock IHttpClientFactory
        private Mock <IHttpClientFactory> getMockHttpClientFactory()
        {
            var mockHttpClientFactory = new Mock <IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub();
            var client = new HttpClient(clientHandlerStub);

            mockHttpClientFactory.Setup(_ => _.CreateClient(It.IsAny <string>()))
            .Returns(client);
            return(mockHttpClientFactory);
        }
コード例 #9
0
    private static IHttpClientFactory GetHttpClientFactory(HttpStatusCode httpStatusCode, HttpContent responseBody)
    {
        var mockFactory       = new Mock <IHttpClientFactory>();
        var clientHandlerStub = new DelegatingHandlerStub(httpStatusCode, responseBody);
        var client            = new HttpClient(clientHandlerStub);

        mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client);

        return(mockFactory.Object);
    }
        public async void PostOrderShouldReturn()
        {
            var clientHandlerStub = new DelegatingHandlerStub();
            var client            = new HttpClient(clientHandlerStub);

            var sut = new ExternalMobileTelecomsNetworkService(options, client);

            var actual = await sut.PostOrder(expectedOrder);

            actual.Should().BeTrue();
        }
コード例 #11
0
        public async Task RefreshTokenAsync_AppleReturnError_ThrowAppleAuthException()
        {
            var responseData = "error";
            var handlerStub  = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.BadRequest, Content = new StringContent(responseData)
            });
            var client = GetClient(AutoFaker.Generate <AppleAuthSetting>(), handlerStub);

            await FluentActions.Invoking(() => client.RefreshTokenAsync("abc")).Should().ThrowAsync <AppleAuthException>().WithMessage(responseData);
        }
コード例 #12
0
        protected HttpClient GetHttpClient(string responseContent)
        {
            var handler = new DelegatingHandlerStub((request, cancellationToken) => {
                request.SetConfiguration(new HttpConfiguration());
                var response     = request.CreateResponse(HttpStatusCode.OK);
                response.Content = new StringContent(responseContent);

                return(Task.FromResult(response));
            });

            return(new HttpClient(handler));
        }
        public async void ReturnFalseWhenPostOrderFails()
        {
            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
                                                              Task.FromResult(new HttpResponseMessage(HttpStatusCode.InternalServerError)
                                                                              ));
            var client = new HttpClient(clientHandlerStub);
            var sut    = new ExternalMobileTelecomsNetworkService(options, client);

            var actual = await sut.PostOrder(expectedOrder);

            actual.Should().BeFalse();
        }
コード例 #14
0
        public static Mock <IHttpClientFactory> CreateMock(Func <HttpRequestMessage, CancellationToken, Task <HttpResponseMessage> > handler)
        {
            var mockFactory       = new Mock <IHttpClientFactory>();
            var clientHandlerStub = new DelegatingHandlerStub {
                HandlerFunc = handler
            };
            var client = new HttpClient(clientHandlerStub);

            mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client);

            return(mockFactory);
        }
コード例 #15
0
        public async Task LoadAsync_Success()
        {
            // ARRANGE
            var bearerTokenProviderMock = new Mock <IBearerTokenProvider>();
            var httpClientFactoryMock   = new Mock <IHttpClientFactory>();
            var unitUnderTest           = new ResourceLoader(httpClientFactoryMock.Object, bearerTokenProviderMock.Object);

            var expected = new List <AgencyResponse>
            {
                new AgencyResponse
                {
                    id        = 4321,
                    subdomain = "hisc1234"
                }
            };
            var resourceResponse = new ResourceResponse <AgencyResponse>
            {
                results  = expected,
                count    = 1,
                next     = "",
                previous = ""
            };
            var json = System.Text.Json.JsonSerializer.Serialize(resourceResponse);
            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(json, Encoding.UTF8)
                };
                return(Task.FromResult(response));
            }
                                                              );

            var client = new HttpClient(clientHandlerStub);
            var url    = "http://test.url";

            bearerTokenProviderMock.Setup(mock => mock.RetrieveToken())
            .ReturnsAsync("token")
            .Verifiable();

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client)
            .Verifiable();

            // ACT
            var results = await unitUnderTest.LoadAsync <AgencyResponse>(url);

            // ASSERT
            bearerTokenProviderMock.Verify();
            httpClientFactoryMock.Verify();
            Assert.AreEqual(1, results.Count);
        }
コード例 #16
0
        public async Task ValidateAsync_AppleReturnError_ThrowAppleAuthException()
        {
            var responseData = "error";
            var jwtToken     = _settings.InvalidJwtToken;
            var handlerStub  = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.BadRequest, Content = new StringContent(responseData)
            });
            var client   = new HttpClient(handlerStub);
            var verifier = new AppleVerifier(client);

            await FluentActions.Invoking(() => verifier.ValidateAsync(jwtToken, _settings.Audience)).Should().ThrowAsync <AppleAuthException>().WithMessage(responseData);
        }
コード例 #17
0
        private static IHttpClientFactory GetHttpClientFactoryMock(HttpStatusCode statusCode,
                                                                   string stringContent)
        {
            var httpClientFactoryMock = Substitute.For <IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub(statusCode, stringContent);
            var client = new HttpClient(clientHandlerStub);

            httpClientFactoryMock
            .CreateClient(Arg.Any <string>())
            .Returns(client);

            return(httpClientFactoryMock);
        }
コード例 #18
0
        public void GetLoginUri_CreateAlwaysANewState()
        {
            var handlerStub = new DelegatingHandlerStub(null);
            var settings    = new AppleAuthSetting("a", "b", "https://apple.com", "x y z");
            var client      = GetClient(settings, handlerStub);

            var result1 = client.GetLoginUri();
            var result2 = client.GetLoginUri();

            var query1 = System.Web.HttpUtility.ParseQueryString(result1.Query);
            var query2 = System.Web.HttpUtility.ParseQueryString(result2.Query);

            query1.Get("state").Should().NotBe(query2.Get("state"));
        }
コード例 #19
0
        public async Task RetrieveData_SuccessfulResponseAndUnexpectedDataResponse()
        {
            // ARRANGE
            var configurationMock     = new Mock <IConfiguration>();
            var httpClientFactoryMock = new Mock <System.Net.Http.IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub();
            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new GraphApiService(configurationMock.Object, httpClientFactoryMock.Object);

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>())).Returns(client);

            // ACT
            var _ = await unitUnderTest.RetrieveData("https://www.google.com", "Does not matter for this test as we are using a DelegatingHandler");
        }
コード例 #20
0
        public async Task RetrieveToken_Success()
        {
            // ARRANGE
            var appCache    = (IAppCache)_context.Properties["appCache"];
            var bearerToken = new BearerTokenResponse
            {
                access_token = "token"
            };
            var json = System.Text.Json.JsonSerializer.Serialize(bearerToken);
            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(json, Encoding.UTF8)
                };
                return(Task.FromResult(response));
            }
                                                              );
            var client = new HttpClient(clientHandlerStub);
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client)
            .Verifiable();

            var configurationMock = new Mock <IConfiguration>();

            configurationMock.Setup(mock => mock[It.IsAny <string>()])
            .Returns("http://test.url")
            .Verifiable();

            var keyVaultMock = new Mock <IAzureKeyVaultService>();

            var unitUnderTest =
                new BearerTokenProvider(appCache,
                                        httpClientFactoryMock.Object,
                                        configurationMock.Object,
                                        keyVaultMock.Object);

            // ACT
            var result = await unitUnderTest.RetrieveToken();

            // ASSERT
            configurationMock.Verify();
            httpClientFactoryMock.Verify();
            Assert.IsNotNull(result);
            Assert.AreEqual(bearerToken.access_token, result);
        }
コード例 #21
0
        private HttpClient CreateValidFakeAppleHttpClient()
        {
            var appleResponse = new AppleKeysResponse {
                Keys = new[] { new JsonWebKey(_settings.JsonKey) }
            };
            var handlerStub = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonSerializer.Serialize(appleResponse, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                })),
            });

            return(new HttpClient(handlerStub));
        }
コード例 #22
0
        public async Task ValidateAsync_AppleDoenstReturnKid_ThrowAppleAuthException()
        {
            var jwtToken      = _settings.InvalidJwtToken;
            var appleResponse = new AppleKeysResponse();
            var handlerStub   = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonSerializer.Serialize(appleResponse, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                })),
            });
            var client   = new HttpClient(handlerStub);
            var verifier = new AppleVerifier(client);

            await FluentActions.Invoking(() => verifier.ValidateAsync(jwtToken, _settings.Audience)).Should().ThrowAsync <AppleAuthException>();
        }
コード例 #23
0
        public void GetLoginUri_CreateWithRightQuery()
        {
            var handlerStub = new DelegatingHandlerStub(null);
            var settings    = new AppleAuthSetting("a", "b", "https://apple.com", "x y z");
            var client      = GetClient(settings, handlerStub);

            var result = client.GetLoginUri();
            var query  = System.Web.HttpUtility.ParseQueryString(result.Query);

            query.AllKeys.Should().BeEquivalentTo("response_type", "client_id", "redirect_uri", "state", "scope", "response_mode");
            query.Get("response_type").Should().Be("code id_token");
            query.Get("client_id").Should().Be("b");
            query.Get("redirect_uri").Should().Be("https://apple.com");
            query.Get("scope").Should().Be("x y z");
            query.Get("response_mode").Should().Be("form_post");
            result.ToString().Should().Contain("redirect_uri=https%3a%2f%2fapple.com");
        }
コード例 #24
0
        public async Task TimeZone_Success()
        {
            // ARRANGE
            var keyVaultServiceMock   = new Mock <IAzureKeyVaultService>();
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();
            var timeZoneResult        = "{\"dstOffset\":3600,\"rawOffset\":-18000,\"status\":\"OK\",\"timeZoneId\":\"America/New_York\",\"timeZoneName\":\"Eastern Daylight Time\"}";
            var expected          = System.Text.Json.JsonSerializer.Deserialize <GoogleApiTimeZoneResult>(timeZoneResult);
            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(timeZoneResult, Encoding.UTF8)
                };
                return(Task.FromResult(response));
            }
                                                              );

            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new GoogleApiService(keyVaultServiceMock.Object, httpClientFactoryMock.Object);
            var apiKey        = "APIKEY";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("GoogleApiKey"))
            .ReturnsAsync(() => apiKey).Verifiable();

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            var location = new GoogleApiLocation
            {
                lat = 41.1319017,
                lng = -96.0573302
            };

            // ACT
            var result = await unitUnderTest.TimeZone(location);

            client.Dispose();

            // ASSERT
            keyVaultServiceMock.Verify();
            httpClientFactoryMock.Verify();
            Assert.AreEqual(expected.dstOffset, result.dstOffset);
            Assert.AreEqual(expected.rawOffset, result.rawOffset);
            Assert.AreEqual(expected.timeZoneName, result.timeZoneName);
            Assert.AreEqual(expected.timeZoneId, result.timeZoneId);
        }
コード例 #25
0
        public async Task RetrieveToken_Success()
        {
            // ARRANGE
            var appCache = (IAppCache)_context.Properties["appCache"];
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();
            var keyVaultServiceMock   = new Mock <IAzureKeyVaultService>();
            var configuration         = (IConfiguration)_context.Properties["configuration"];
            var expectedAccessToken   = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImllX3FXQ1hoWHh0MXpJRXN1NGM3YWNRVkduNCIsImtpZCI6ImllX3FXQ1hoWHh0MXpJRXN1NGM3YWNRVkduNCJ9.eyJhdWQiOiJodHRwczovL2hpc2Nwcm9ncmFtZGF0YWR2LmF6dXJld2Vic2l0ZXMubmV0IiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNDNlNWRlYmEtMmM1NC00M2E0LTlhMTAtYzlmMTBiMWM2NmE1LyIsImlhdCI6MTU2Njk5NzUyNywibmJmIjoxNTY2OTk3NTI3LCJleHAiOjE1NjcwMDE0MjcsImFpbyI6IjQyRmdZR2grTGVPNmI2N09qMGx4VzdhL0NIa1NEUUE9IiwiYXBwaWQiOiJlNTBmMTE0Ny1lZGQxLTQ4NDItYmQzMS0wZjlmYTM1MjNhNjYiLCJhcHBpZGFjciI6IjEiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC80M2U1ZGViYS0yYzU0LTQzYTQtOWExMC1jOWYxMGIxYzY2YTUvIiwib2lkIjoiNzQxZWQ5OTUtM2UyOC00NWM3LWIyYzAtYzJiZTU5NGQwYjY0Iiwic3ViIjoiNzQxZWQ5OTUtM2UyOC00NWM3LWIyYzAtYzJiZTU5NGQwYjY0IiwidGlkIjoiNDNlNWRlYmEtMmM1NC00M2E0LTlhMTAtYzlmMTBiMWM2NmE1IiwidXRpIjoiZDF2dUNoWmp4MFNUalNZcjMyc0tBQSIsInZlciI6IjEuMCJ9.iERX4wBdjEouoNnCQFL4BrxCtRPID6P1WxQMGjxyRyYgF-ZX7vloB8Uw9j5bcLLO3u80C6W84vYct7IkHBrznzV2iRMe84yNTVbx9-87VvnJnilWiF0nHHWrBcnRqFJtckZM2qcUYbUMfDO_83fdoPaZAOUnc-h7qsu3MYXYxkBiNWpSQQbAgzIG4UM9eIYFYEnkBToGrOQz6NtB1JO00czfROYxFe2_dAGO8eQ5abRbHSwRLSxyzHQHXBfCKfw7S4CA6d0o-5Izo3HKxoYfxRUnBvDLdeIxs8LQDi5EFOv4rA0ioQOWskBNc6KiB5vyJjo0ZsBDjtc9Df_nEScbCw";
            var jsonTokenResponse     = "{\"token_type\":\"Bearer\",\"expires_in\":\"3599\",\"ext_expires_in\":\"3599\",\"expires_on\":\"1567001427\",\"not_before\":\"1566997527\",\"resource\":\"https://hiscprogramdatadv.azurewebsites.net\",\"access_token\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImllX3FXQ1hoWHh0MXpJRXN1NGM3YWNRVkduNCIsImtpZCI6ImllX3FXQ1hoWHh0MXpJRXN1NGM3YWNRVkduNCJ9.eyJhdWQiOiJodHRwczovL2hpc2Nwcm9ncmFtZGF0YWR2LmF6dXJld2Vic2l0ZXMubmV0IiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNDNlNWRlYmEtMmM1NC00M2E0LTlhMTAtYzlmMTBiMWM2NmE1LyIsImlhdCI6MTU2Njk5NzUyNywibmJmIjoxNTY2OTk3NTI3LCJleHAiOjE1NjcwMDE0MjcsImFpbyI6IjQyRmdZR2grTGVPNmI2N09qMGx4VzdhL0NIa1NEUUE9IiwiYXBwaWQiOiJlNTBmMTE0Ny1lZGQxLTQ4NDItYmQzMS0wZjlmYTM1MjNhNjYiLCJhcHBpZGFjciI6IjEiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC80M2U1ZGViYS0yYzU0LTQzYTQtOWExMC1jOWYxMGIxYzY2YTUvIiwib2lkIjoiNzQxZWQ5OTUtM2UyOC00NWM3LWIyYzAtYzJiZTU5NGQwYjY0Iiwic3ViIjoiNzQxZWQ5OTUtM2UyOC00NWM3LWIyYzAtYzJiZTU5NGQwYjY0IiwidGlkIjoiNDNlNWRlYmEtMmM1NC00M2E0LTlhMTAtYzlmMTBiMWM2NmE1IiwidXRpIjoiZDF2dUNoWmp4MFNUalNZcjMyc0tBQSIsInZlciI6IjEuMCJ9.iERX4wBdjEouoNnCQFL4BrxCtRPID6P1WxQMGjxyRyYgF-ZX7vloB8Uw9j5bcLLO3u80C6W84vYct7IkHBrznzV2iRMe84yNTVbx9-87VvnJnilWiF0nHHWrBcnRqFJtckZM2qcUYbUMfDO_83fdoPaZAOUnc-h7qsu3MYXYxkBiNWpSQQbAgzIG4UM9eIYFYEnkBToGrOQz6NtB1JO00czfROYxFe2_dAGO8eQ5abRbHSwRLSxyzHQHXBfCKfw7S4CA6d0o-5Izo3HKxoYfxRUnBvDLdeIxs8LQDi5EFOv4rA0ioQOWskBNc6KiB5vyJjo0ZsBDjtc9Df_nEScbCw\"}";

            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(jsonTokenResponse, Encoding.UTF8)
                };
                return(Task.FromResult(response));
            }
                                                              );

            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new HISCTokenService(appCache, httpClientFactoryMock.Object, keyVaultServiceMock.Object, configuration);

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            var clientId = "ClientId";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("BearerTokenClientId"))
            .ReturnsAsync(() => clientId).Verifiable();

            var appKey = "ClientSecret";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("BearerTokenClientSecret"))
            .ReturnsAsync(() => appKey).Verifiable();

            // ACT
            var token = await unitUnderTest.RetrieveToken();

            client.Dispose();

            // ASSERT
            httpClientFactoryMock.Verify();
            Assert.AreEqual(expectedAccessToken, token);
        }
コード例 #26
0
        public ZipContentStorageHelperTests()
        {
            MockAxSecureConfiguration = new Mock <AxSecureUrlConfiguration>("http://host:5000/test/test");

            MockAuthenticationHeaderValueProvider = new Mock <IAuthenticationHeaderValueProvider>();

            MockHttpClientFactory = new Mock <IHttpClientFactory>();

            var clientHandlerStub = new DelegatingHandlerStub((request, cancellationToken) =>
            {
                var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
                return(Task.FromResult(response));
            });

            var client = new HttpClient(clientHandlerStub);

            MockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny <string>())).Returns(client);
        }
コード例 #27
0
        public async Task RetrieveFranchises_SuccessfulResponseAndUnexpectedDataResponse()
        {
            // ARRANGE
            var appCache              = (IAppCache)_context.Properties["appCache"];
            var configuration         = (IConfiguration)_context.Properties["configuration"];
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub();
            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new ProgramDataService(appCache, configuration, httpClientFactoryMock.Object);

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            var bearerToken = "SAMPLETOKEN";

            // ACT
            var _ = await unitUnderTest.RetrieveFranchises(ProgramDataSources.ClearCare, bearerToken);
        }
コード例 #28
0
        public async Task ValidateAsync_InvalidAudience_ThrowSecurityTokenInvalidAudienceException()
        {
            var appleResponse = new AppleKeysResponse {
                Keys = new[] { new JsonWebKey(AppleJsonKey) }
            };
            var handlerStub = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonSerializer.Serialize(appleResponse, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                })),
            });
            var client   = new HttpClient(handlerStub);
            var verifier = new AppleVerifier(client);

            await FluentActions.Invoking(() => verifier.ValidateAsync(ValidJwtToken, "badAud")).Should().ThrowAsync <SecurityTokenInvalidAudienceException>();
        }
コード例 #29
0
        public async Task GetAccessTokenAsync_ReturnAccessToken()
        {
            _appleTokenGeneratorMock.Setup(e => e.Generate(It.IsAny <TimeSpan>())).Returns("abc");
            var response    = AutoFaker.Generate <AppleAccessToken>();
            var handlerStub = new DelegatingHandlerStub(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonSerializer.Serialize(response, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                })),
            });
            var client = GetClient(AutoFaker.Generate <AppleAuthSetting>(), handlerStub);

            var result = await client.GetAccessTokenAsync("abc");

            result.Should().BeEquivalentTo(response);
        }
コード例 #30
0
        public async Task GeoCode_UnexpectedData()
        {
            // ARRANGE
            var keyVaultServiceMock   = new Mock <IAzureKeyVaultService>();
            var httpClientFactoryMock = new Mock <IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub();

            var client        = new HttpClient(clientHandlerStub);
            var unitUnderTest = new GoogleApiService(keyVaultServiceMock.Object, httpClientFactoryMock.Object);
            var apiKey        = "APIKEY";

            keyVaultServiceMock.Setup(mock => mock.GetSecret("GoogleApiKey"))
            .ReturnsAsync(() => apiKey).Verifiable();

            httpClientFactoryMock.Setup(mock => mock.CreateClient(It.IsAny <string>()))
            .Returns(client).Verifiable();

            // ACT
            var _ = await unitUnderTest.GeoCode("825 Redwood Lane", "Papillion", "NE", "68046");
        }