Exemple #1
0
        public static void Main(string[] args)
        {
            var outputter = new CustomOutputter();
            var config    = new PactVerifierConfig();

            config.ReportOutputters.Add(outputter);
            IPactVerifier pactVerifier = new PactVerifier(() => { }, () => { }, config);

            pactVerifier.ProviderState("Get user with id '1'");
            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            _httpClient.BaseAddress = new System.Uri("http://*****:*****@"\Pact\{0}-{1}.json", ClientName, ProviderName))
            .Verify();


            // Assert
            outputter.Should().NotBeNull();
            outputter.Output.Should().NotBeNullOrWhiteSpace();
            outputter.Output.Should().Contain(string.Format("Verifying a Pact between {0} and {1}", ClientName, ProviderName));
            outputter.Output.Should().Contain("status code 200");
            System.Console.ReadLine();
        }
        public void PactProviderVerifyTest()
        {
            //set a output folder for logs and pacts retreived
            PactConfig = new PactVerifierConfig()
            {
                LogDir = "../../../Log"
            };
            //set a string output to easily assert against
            Outputter = new CustomOutputter();
            this.PactConfig.ReportOutputters.Add(Outputter);

            PactVerifier = new PactVerifier(() => { }, () => { }, this.PactConfig);
            PactFile     = Path.Combine("../../../Pacts", $"{Consumer}-{Provider}.json".ToLower());

            //verify the interaction
            PactVerifier
            .ProviderState("Testing Guid", setUp: GuidSetupState);

            //Verify will throw if there was a failure
            PactVerifier
            .MessageProvider(Provider)
            .HonoursPactWith(Consumer)
            .PactUri(PactFile)
            .Verify();

            Assert.Contains($"Verifying a Pact between {Consumer} and {Provider}", Outputter.Output);
        }
Exemple #3
0
        public void EnsureEventApiHonoursPactWithConsumer()
        {
            //Arrange
            var outputter = new CustomOutputter();
            var config    = new PactVerifierConfig();

            config.ReportOutputters.Add(outputter);
            IPactVerifier pactVerifier = new PactVerifier(() => {}, () => {}, config);

            pactVerifier
            .ProviderState(
                "there are events with ids '45D80D13-D5A2-48D7-8353-CBB4C0EAABF5', '83F9262F-28F1-4703-AB1A-8CFD9E8249C9' and '3E83A96B-2A0C-49B1-9959-26DF23F83AEB'",
                setUp: InsertEventsIntoDatabase)
            .ProviderState("there is an event with id '83f9262f-28f1-4703-ab1a-8cfd9e8249c9'",
                           setUp: InsertEventIntoDatabase)
            .ProviderState("there is one event with type 'DetailsView'",
                           setUp: EnsureOneDetailsViewEventExists);

            _server = TestServer.Create(app =>
            {
                app.Use(typeof(AuthorizationTokenReplacementMiddleware), app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, "Access_Token", "v1"));
                var apiStartup = new Startup();
                apiStartup.Configuration(app);
            });

            //Act / Assert
            pactVerifier
            .ServiceProvider("Event API", _server.HttpClient)
            .HonoursPactWith("Consumer")
            .PactUri("../../../Consumer.Tests/pacts/consumer-event_api.json")
            .Verify();

            // Verify that verifaction log is also sent to additional reporters defined in the config
            Assert.Contains("Verifying a Pact between Consumer and Event API", outputter.Output);
        }
Exemple #4
0
        public void EnsureEventApiHonoursPactWithConsumer()
        {
            //Arrange
            var outputter = new CustomOutputter();
            var config = new PactVerifierConfig();
            config.ReportOutputters.Add(outputter);
            IPactVerifier pactVerifier = new PactVerifier(() => {}, () => {}, config);

            pactVerifier
                .ProviderState(
                    "there are events with ids '45D80D13-D5A2-48D7-8353-CBB4C0EAABF5', '83F9262F-28F1-4703-AB1A-8CFD9E8249C9' and '3E83A96B-2A0C-49B1-9959-26DF23F83AEB'",
                    setUp: InsertEventsIntoDatabase)
                .ProviderState("there is an event with id '83f9262f-28f1-4703-ab1a-8cfd9e8249c9'",
                    setUp: InsertEventIntoDatabase)
                .ProviderState("there is one event with type 'DetailsView'",
                    setUp: EnsureOneDetailsViewEventExists);

            //Act / Assert
            using (var testServer = TestServer.Create<Startup>())
            {
                pactVerifier
                   .ServiceProvider("Event API", testServer.HttpClient)
                   .HonoursPactWith("Consumer")
                   .PactUri("../../../Consumer.Tests/pacts/consumer-event_api.json")
                   .Verify();
            }

            // Verify that verifaction log is also sent to additional reporters defined in the config
            Assert.Contains("Verifying a Pact between Consumer and Event API", outputter.Output);
        }
Exemple #5
0
        public void EnsureEventApiHonoursPactWithConsumer()
        {
            //Arrange
            var outputter = new CustomOutputter();
            var config    = new PactVerifierConfig();

            config.ReportOutputters.Add(outputter);
            IPactVerifier pactVerifier = new PactVerifier(() => {}, () => {}, config);

            pactVerifier
            .ProviderState(
                "there are events with ids '45D80D13-D5A2-48D7-8353-CBB4C0EAABF5', '83F9262F-28F1-4703-AB1A-8CFD9E8249C9' and '3E83A96B-2A0C-49B1-9959-26DF23F83AEB'",
                setUp: InsertEventsIntoDatabase)
            .ProviderState("there is an event with id '83f9262f-28f1-4703-ab1a-8cfd9e8249c9'",
                           setUp: InsertEventIntoDatabase)
            .ProviderState("there is one event with type 'DetailsView'",
                           setUp: EnsureOneDetailsViewEventExists);

            //Act / Assert
            using (var testServer = TestServer.Create <Startup>())
            {
                pactVerifier
                .ServiceProvider("Event API", testServer.HttpClient)
                .HonoursPactWith("Consumer")
                .PactUri("../../../Consumer.Tests/pacts/consumer-event_api.json")
                .Verify();
            }

            // Verify that verifaction log is also sent to additional reporters defined in the config
            Assert.Contains("Verifying a Pact between Consumer and Event API", outputter.Output);
        }
Exemple #6
0
        public async Task EnsureWordCountServiceApiHonoursPactWithConsumer()
        {
            //Arrange
            var outputter = new CustomOutputter();
            var config    = new PactVerifierConfig();

            config.ReportOutputters.Add(outputter);
            IPactVerifier pactVerifier = new PactVerifier(() => { }, () => { }, config);

            pactVerifier
            .ProviderState(
                "there is a count of 1 for words beginning with 'A'",
                setUp: IncrementWordCountForLetterA);

            var configuration = new HttpConfiguration();

            _server = TestServer.Create(app =>
            {
                var apiStartup = new Startup();
                apiStartup.Configuration(app, configuration);
            });

            //var result = await _server.HttpClient.PutAsync("AddWord/AardVark", null);
            using (var client = new HttpClient(_server.Handler))
            {
                // requires routing setup in Startup
                //var response = await client.PutAsync("http://localhost/api/default/AddWord/Ardvark", null);
                var response = await client.GetAsync("http://localhost/api/default/Count");

                var result = await response.Content.ReadAsAsync <string>();
            }

            //Act / Assert
            pactVerifier
            .ServiceProvider("WordCountServiceApi", _server.HttpClient)
            .HonoursPactWith("WordCountWebService")
            .PactUri("../../../../WordCount.WebService.Tests/bin/pacts/wordcountwebservice-wordcountserviceapi.json")
            .Verify();

            // Verify that verifaction log is also sent to additional reporters defined in the config
            Assert.Contains("Verifying a Pact between WordCountWebService and WordCountService API", outputter.Output);
        }
Exemple #7
0
        public void EnsureEventApiHonoursPactWithConsumer()
        {
            ContextInfo.SetTestContextName(GetType().Name);

            //Arrange
            var outputter = new CustomOutputter();
            var config    = new PactVerifierConfig();

            config.ReportOutputters.Add(outputter);
            IPactVerifier pactVerifier = new PactVerifier(() => {}, () => {}, config);

            pactVerifier
            .ProviderState(
                "there are events with ids '45D80D13-D5A2-48D7-8353-CBB4C0EAABF5', '83F9262F-28F1-4703-AB1A-8CFD9E8249C9' and '3E83A96B-2A0C-49B1-9959-26DF23F83AEB'",
                setUp: InsertEventsIntoDatabase)
            .ProviderState("there is an event with id '83f9262f-28f1-4703-ab1a-8cfd9e8249c9'",
                           setUp: InsertEventIntoDatabase)
            .ProviderState("there is one event with type 'DetailsView'",
                           setUp: EnsureOneDetailsViewEventExists);

            // todo (HACK): Find a better way to inject pact config into MockProviderNancyBootstrapper
            MockProviderNancyBootstrapper.PactConfig = new PactConfig();
            var builder = new WebHostBuilder();

            builder.UseStartup <Startup4ProviderRun>();

            _server = new TestServer(builder);

            //Act / Assert
            pactVerifier
            .ServiceProvider("Event API", _server.CreateClient())
            .HonoursPactWith("Consumer")
            .PactUri("../../../Consumer.Tests/pacts/consumer-event_api.json")
            .Verify();

            // Verify that verifaction log is also sent to additional reporters defined in the config
            Assert.Contains("Verifying a Pact between Consumer and Event API", outputter.Output);
        }
Exemple #8
0
        public void ProviderApiWeb_ClientPact_Compliance()
        {
            ContextInfo.SetTestContextName(GetType().Name);

            //Arrange
            var outputter = new CustomOutputter();
            var config    = new PactVerifierConfig()
            {
                LogDir = @"c:\logs\PactNetCore"
            };

            config.ReportOutputters.Add(outputter);


            IPactVerifier pactVerifier = new PactVerifier(() => { }, () => { }, config);

            pactVerifier
            .ProviderState(
                "there are events with ids '45D80D13-D5A2-48D7-8353-CBB4C0EAABF5', '83F9262F-28F1-4703-AB1A-8CFD9E8249C9' and '3E83A96B-2A0C-49B1-9959-26DF23F83AEB'",
                setUp: InsertEventsIntoDatabase)
            .ProviderState("there is an event with id '83f9262f-28f1-4703-ab1a-8cfd9e8249c9'",
                           setUp: InsertEventIntoDatabase)
            .ProviderState("there is one event with type 'DetailsView'",
                           setUp: EnsureOneDetailsViewEventExists);

            var pactUri = @"C:\Users\kharshaw\Documents\GitHub\Pact-Net-Core\Samples\EventApi\Provider.Api.Web.Tests\Consumer.Tests\pacts\consumer-event_api.json";

            //Act / Assert
            pactVerifier
            .ServiceProvider("Event API", _client)
            .HonoursPactWith("Consumer")
            .PactUri(pactUri)
            .Verify();

            // Verify that verifaction log is also sent to additional reporters defined in the config
            Assert.Contains("Verifying a Pact between Consumer and Event API", outputter.Output);
        }