Exemple #1
0
        public async Task WhenInvalidUrlIsUsed(string baseUrl)
        {
            var installationIdProvider = Substitute.For <IInstallationIdProvider>();

            installationIdProvider.GetInstallationId().Returns(Guid.NewGuid());

            store.GetConnectAppUrl().Returns(baseUrl);

            var action      = new JiraConnectAppConnectivityCheckAction(log, store, installationIdProvider, new JiraConnectAppClient(installationIdProvider, store, httpClientFactory), httpClientFactory);
            var octoRequest = Substitute.For <IOctoRequest>();

            octoRequest.GetBody(Arg.Any <RequestBodyRegistration <JiraConnectAppConnectionCheckData> >())
            .Returns(
                new JiraConnectAppConnectionCheckData
            {
                BaseUrl = baseUrl, Password = "******"
            });

            var response = await action.ExecuteAsync(octoRequest);

            var connectivityCheckResponse = (ConnectivityCheckResponse)((OctoDataResponse)response.Response).Model !;

            connectivityCheckResponse.Messages.ShouldNotBeEmpty();
            connectivityCheckResponse.Messages.First().Category.ShouldBe(ConnectivityCheckMessageCategory.Error);
            connectivityCheckResponse.Messages.First().Message.ShouldBe("Invalid data received.");
        }
Exemple #2
0
        public async Task WhenDnsCannotBeResolved()
        {
            var installationIdProvider = Substitute.For <IInstallationIdProvider>();

            installationIdProvider.GetInstallationId().Returns(Guid.NewGuid());

            var baseUrl = "http://notexistingdomain.dddd.ttt";

            store.GetConnectAppUrl().Returns(baseUrl);

            var action      = new JiraConnectAppConnectivityCheckAction(log, store, installationIdProvider, new JiraConnectAppClient(installationIdProvider, store, httpClientFactory), httpClientFactory);
            var octoRequest = Substitute.For <IOctoRequest>();

            octoRequest.GetBody(Arg.Any <RequestBodyRegistration <JiraConnectAppConnectionCheckData> >())
            .Returns(
                new JiraConnectAppConnectionCheckData
            {
                BaseUrl = baseUrl, Password = "******"
            });

            var response = await action.ExecuteAsync(octoRequest);

            var connectivityCheckResponse = (ConnectivityCheckResponse)((OctoDataResponse)response.Response).Model;

            connectivityCheckResponse.Messages.ShouldNotBeEmpty();
            connectivityCheckResponse.Messages.First().Message.ShouldBe("Failed to get authentication token from Jira Connect App.");
        }
Exemple #3
0
        public async Task WhenProxyAuthenticationIsRequired()
        {
            using var proxyServer = new ProxyServer();
            const int port = 12312;

            var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, port, false);

            proxyServer.AddEndPoint(explicitEndPoint);
            // Fake authentication failure for proxy
            proxyServer.ProxySchemeAuthenticateFunc = (d, s, arg3) => Task.FromResult(new ProxyAuthenticationContext {
                Result = ProxyAuthenticationResult.Failure
            });
            proxyServer.ProxyAuthenticationSchemes = new[] { "basic" };
            proxyServer.Start();
            var baseUrl = "http://notexistingdomain.dddd.ttt";

            httpClientFactory.CreateClient()
            .Returns(
                _ =>
            {
                var httpClient = new HttpClient(new HttpClientHandler {
                    Proxy = new WebProxy("127.0.0.1", port)
                })
                {
                    BaseAddress = new Uri(baseUrl)
                };

                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                    "Basic",
                    Convert.ToBase64String(Encoding.UTF8.GetBytes("username:authToken")));

                return(httpClient);
            });

            var installationIdProvider = Substitute.For <IInstallationIdProvider>();

            installationIdProvider.GetInstallationId().Returns(Guid.NewGuid());

            store.GetConnectAppUrl().Returns(baseUrl);

            var action      = new JiraConnectAppConnectivityCheckAction(log, store, installationIdProvider, new JiraConnectAppClient(installationIdProvider, store, httpClientFactory), httpClientFactory);
            var octoRequest = Substitute.For <IOctoRequest>();

            octoRequest.GetBody(Arg.Any <RequestBodyRegistration <JiraConnectAppConnectionCheckData> >())
            .Returns(
                new JiraConnectAppConnectionCheckData
            {
                BaseUrl = baseUrl, Password = "******"
            });

            var response = await action.ExecuteAsync(octoRequest);

            var connectivityCheckResponse = (ConnectivityCheckResponse)((OctoDataResponse)response.Response).Model;

            connectivityCheckResponse.Messages.ShouldNotBeEmpty();
            connectivityCheckResponse.Messages.First().Message.ShouldBe("Failed to get authentication token from Jira Connect App.");
        }