Ejemplo n.º 1
0
 public static void CreateOn(IMockProviderService customerApi)
 {
     customerApi
         .Given("There is a customer with ID tester")
         .UponReceiving("A GET request to retrieve the customer")
         .With(new ProviderServiceRequest
         {
             Method = HttpVerb.Get,
             Path = "/api/customers/tester",
             Headers = new Dictionary<string, string>
             {
                 {"Accept", "application/json"},
                 {"Another", "header"}
             }
         })
         .WillRespondWith(new ProviderServiceResponse
         {
             Status = (int)HttpStatusCode.OK,
             Headers = new Dictionary<string, string>
             {
                 {"Content-Type", "application/json; charset=utf-8" },
                 {"Another", "header"}
             },
             Body = new //NOTE: Note the case sensitivity here, the body will be serialised as per the casing defined
             {
                 Id = "tester",
                 FirstName = "Totally",
                 LastName = "Awesome"
             }
         }); //NOTE: WillRespondWith call must come last as it will register the interaction
 }
Ejemplo n.º 2
0
 public static void CreateOn(IMockProviderService customerApi)
 {
     customerApi
         .Given("Version is 1.2.3.4")
         .UponReceiving("A GET request to retrieve the version")
         .With(new ProviderServiceRequest
         {
             Method = HttpVerb.Get,
             Path="/api/version",
             Headers=new Dictionary<string, string>
             {
                 {"Accept", "application/json"},
                 {"Another", "header" }
             }
         })
         .WillRespondWith(new ProviderServiceResponse
         {
             Status = (int)HttpStatusCode.OK,
             Headers = new Dictionary<string, string>
             {
                 {"Content-Type", "application/json; charset=utf-8" },
                 {"Another", "header"}
             },
             Body = new
             {
                 Build="1.2.3.4",
                 Date="2015-09-17T20:29:13"
             }
         });
 }
Ejemplo n.º 3
0
        public ClientTests(OrderConsumerPact data)
        {
            _mockProviderService = data.MockProviderService;
            _mockProviderService.ClearInteractions();

            var httpClient = new HttpClient
            {
                BaseAddress = new Uri(data.MockProviderServiceBaseUri)
            };

            _sut = new Client(httpClient);
        }
Ejemplo n.º 4
0
        public void Init()
        {
            _fixture             = new ExampleApiFixture();
            _mockProviderService = _fixture.MockProviderService;
            var factory = new Mock <IHttpClientFactory>();

            factory.Setup(c => c.CreateClient("ExampleApi")).Returns(new HttpClient()
            {
                BaseAddress = new Uri(_mockProviderService.BaseAddress)
            });
            _factory = factory.Object;
        }
Ejemplo n.º 5
0
        public ConsumerEventApiPact()
        {
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                LogDir  = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}",
                PactDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}pacts{Path.DirectorySeparatorChar}"
            })
                          .ServiceConsumer("Event API Consumer")
                          .HasPactWith("Event API");

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 6
0
        public ConsumerEventApiPact()
        {
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                LogDir  = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}",
                PactDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}pacts{Path.DirectorySeparatorChar}" // TODO how to publish
            })
                          .ServiceConsumer("Consumer")
                          .HasPactWith("Provider");

            MockProviderService = PactBuilder.MockService(MockServerPort, false, IPAddress.Any);
        }
Ejemplo n.º 7
0
        public PactTestFixture()
        {
            var pactConfig = new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = @"..\..\..\..\..\pacts",
                LogDir  = @".\pact_logs"
            };

            PactBuilder = new PactBuilder(pactConfig);
            PactBuilder.ServiceConsumer("Consumer").HasPactWith("Provider");
            MockProviderService = PactBuilder.MockService(MockServicePort);
        }
Ejemplo n.º 8
0
        public IMockProviderService MockService(int port)
        {
            if (_mockProviderService != null)
            {
                _mockProviderService.Stop();
            }

            _mockProviderService = _mockProviderServiceFactory(port);

            _mockProviderService.Start();

            return(_mockProviderService);
        }
Ejemplo n.º 9
0
        public IMockProviderService MockService(int port, bool enableSsl = false)
        {
            if (_mockProviderService != null)
            {
                _mockProviderService.Stop();
            }

            _mockProviderService = _mockProviderServiceFactory(port, enableSsl);

            _mockProviderService.Start();

            return _mockProviderService;
        }
Ejemplo n.º 10
0
        public CardApiPact()
        {
            PactBuilder = new PactBuilder(
                new PactConfig {
                PactDir = @"D:/pacts/", LogDir = @"D:/logs/"
            }
                );
            PactBuilder
            .ServiceConsumer("Consumer")
            .HasPactWith("Cards Api");

            MockProviderService = PactBuilder.MockService(MockServicePort);
        }
Ejemplo n.º 11
0
        public IMockProviderService MockService(int port, bool enableSsl = false)
        {
            if (_mockProviderService != null)
            {
                _mockProviderService.Stop();
            }

            _mockProviderService = _mockProviderServiceFactory(port, enableSsl);

            _mockProviderService.Start();

            return(_mockProviderService);
        }
Ejemplo n.º 12
0
        public UserClientConsumerPact()
        {
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                LogDir  = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}",
                PactDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}pacts{Path.DirectorySeparatorChar}"
            })
                          .ServiceConsumer("User API Consumer")
                          .HasPactWith("User API");

            MockProviderService = PactBuilder.MockService(MockServerPort, false, IPAddress.Any);
        }
Ejemplo n.º 13
0
        public void OneTimeSetUp()
        {
            _pactBuilder = new PactBuilder(new PactConfig {
                PactDir = @"c:\temp\pact\pactDir", LogDir = @"c:\temp\pact\logs"
            });

            _pactBuilder
            .ServiceConsumer(nameof(PactConsumer))
            .HasPactWith("PactProducer");

            _mockProviderService = _pactBuilder.MockService(MockServerPort);
            _mockProviderService.ClearInteractions();
        }
        public ConsumeHttpSequencerPact(string consumerName, int port)
        {
            PactBuilder = new PactBuilder(new PactConfig {
                Outputters = new[] { new ConsoleOutputter() }, SpecificationVersion = "2.0.0"
            });                                                                                                                               //Configures the Specification Version

            PactBuilder
            .ServiceConsumer(consumerName)
            .HasPactWith("Something API");

            //needs elevated, or port opening
            MockProviderService = PactBuilder.MockService(port, false, IPAddress.Any);
        }
Ejemplo n.º 15
0
        public APIPact()
        {
            _pactBuilder = new PactBuilder(new PactConfig
            {
                PactDir = @"..\..\..\..\pacts",
                LogDir  = @"..\..\..\..\logs"
            });

            _pactBuilder.ServiceConsumer("Consumer").HasPactWith("API");


            MockProviderService = _pactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 16
0
        public void Able_To_Retrieve_Consumers()
        {
            mockProviderService        = consumerPact.MockProviderService;
            mockProviderServiceBaseUri = consumerPact.MockProviderServiceBaseUri;
            consumerPact.MockProviderService.ClearInteractions();

            mockProviderService
            .Given("Get customers'")
            .UponReceiving("A GET request to retrieve the customers")
            .With(new ProviderServiceRequest
            {
                Method  = HttpVerb.Get,
                Path    = "/customers",
                Headers = new Dictionary <string, object>()
                {
                    { "Accept", "application/json" }
                }
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status = 200,
                Body   =
                    new GetCustomersResponse
                {
                    _Embedded = new Embedded
                    {
                        Customer = new Customer[]
                        {
                            new Customer
                            {
                                FirstName = "Tester",
                                LastName  = "Toster"
                            }
                        }
                    }
                },
                Headers = new Dictionary <string, object>()
                {
                    { "Content-Type", "application/json; charset=utf-8" }
                }
            });

            var consumer = new WebShopApiClient(new Uri(mockProviderServiceBaseUri), "user", "password");
            var result   = consumer.GetCustomers().Result;

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(GetCustomersResponse));

            mockProviderService.VerifyInteractions();
            consumerPact.Dispose();
        }
Ejemplo n.º 17
0
        public FailureIntegrationTestsMyApiPact()
        {
            var pactConfig = new PactConfig();

            PactBuilder = new PactBuilder((port, enableSsl, providerName) =>
                                          new MockProviderService(
                                              baseUri => new RubyHttpHost(baseUri, "MyApi", pactConfig),
                                              port, enableSsl,
                                              baseUri => new AdminHttpClient(baseUri)))
                          .ServiceConsumer("FailureIntegrationTests")
                          .HasPactWith("MyApi");

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 18
0
        public PactConfigurator()
        {
            //Create and Config PactBuilder
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = @"..\..\..\..\..\pacts",
                LogDir  = @".\pactlogs"
            }).ServiceConsumer("Consumer2")
                          .HasPactWith("Provider");

            //Using IPactBuilder to Mock a PactMockProvider
            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 19
0
        public IntegrationTestsMyApiPact()
        {
            var pactConfig = new PactConfig();

            PactBuilder = new PactBuilder((port, enableSsl, consumerName, providerName, host, jsonSerializerSettings) =>
                                          new MockProviderService(
                                              baseUri => new RubyHttpHost(baseUri, "MyConsumer", "MyApi", pactConfig, host),
                                              port, enableSsl,
                                              baseUri => new AdminHttpClient(baseUri, jsonSerializerSettings)))
                          .ServiceConsumer("IntegrationTests")
                          .HasPactWith("MyApi");

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            var consumerPact = new ConsumerMyApiPact();

            _mockProviderService        = consumerPact.MockProviderService;
            _mockProviderServiceBaseUri = consumerPact.MockProviderServiceBaseUri;
            consumerPact.MockProviderService.ClearInteractions();
            //NOTE: Clears any previously registered interactions before the test is run


            _mockProviderService
            .Given("Get user with id '1'")
            .UponReceiving("A GET request to retrieve the user")
            .With(new ProviderServiceRequest
            {
                Method  = HttpVerb.Get,
                Path    = "/user/1",
                Headers = new Dictionary <string, string>
                {
                    { "Accept", "application/json" }
                }
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status  = 200,
                Headers = new Dictionary <string, string>
                {
                    { "Content-Type", "application/json; charset=utf-8" }
                },
                Body = new     //NOTE: Note the case sensitivity here, the body will be serialised as per the casing defined
                {
                    id        = 1,
                    firstName = "Tanmoy",
                    lastName  = "Saha"
                }
            });     //NOTE: WillRespondWith call must come last as it will register the interaction

            var consumer = new UserApiClient(_mockProviderServiceBaseUri);

            //Act
            var result = consumer.GetUsers(1);

            //Assert
            result.Should().NotBeNull();
            _mockProviderService.VerifyInteractions();
            //NOTE: Verifies that interactions registered on the mock provider are called once and only once

            consumerPact.Dispose();
        }
Ejemplo n.º 21
0
        public CustomerApiPact()
        {
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = @"..\..\..\pacts",
                LogDir  = @".\pact_logs"
            });

            PactBuilder
            .ServiceConsumer("CUSTOMER CONSUMER")
            .HasPactWith("CUSTOMER PROVIDER");

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 22
0
        public OrdersConsumerPact()
        {
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = TestEnvironment.PactsDirectory,
                LogDir  = TestEnvironment.LogsDirectory
            });

            PactBuilder
            .ServiceConsumer(consumerName: "OrdersService")
            .HasPactWith(providerName: "ShipmentService");

            ShipmentMockProviderService = PactBuilder.MockService(TestEnvironment.ShipmentServiceUri.Port);
        }
Ejemplo n.º 23
0
        public ConsumerApiPact()
        {
            PactBuilder = new PactBuilder(new PactConfig
            {
                SpecificationVersion = "2.0.0",
                //LogDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}",
                //PactDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}pacts{Path.DirectorySeparatorChar}"
                LogDir  = $"D:/Demo/Pact/pact_log",
                PactDir = $"D:/Demo/Pact/pacts"
            })
                          .ServiceConsumer("Customer API Consumer")
                          .HasPactWith("Customer API");

            MockProviderService = PactBuilder.MockService(MockServerPort, false, IPAddress.Any);
        }
Ejemplo n.º 24
0
        public ConsumerEventApiPact()
        {
            if (!File.Exists(".\\pact\\bin\\pact-mock-service.bat"))
            {
                throw new Exception("Please run '.\\Build\\Download-Standalone-Core.ps1' from the project root to download the standalone mock provider service and then Rebuild solution");
            }

            PactBuilder = new PactBuilder(new PactConfig {
                SpecificationVersion = "2.0.0"
            })
                          .ServiceConsumer("Event API Consumer")
                          .HasPactWith("Event API");

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 25
0
        public GuitarServicePact()
        {
            var pactConfig = new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = @"C:\Pacts\GuitarService\pacts",
                LogDir  = @"C:\Pacts\GuitarService\logs"
            };

            PactBuilder = new PactBuilder(pactConfig);

            PactBuilder.ServiceConsumer("GuitarsConsumer").HasPactWith("GuitarsProvider");

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 26
0
        public void FixtureSetup()
        {
            var pactConfig = new PactConfig {
                PactDir = $"{ PactConstants.PactRootLocation}\\{PactConstants.PactProviderNames.SqsPocApi}\\{PactConstants.PactConsumerNames.Product}", LogDir = $"{ PactConstants.PactRootLocation }\\logs"
            };

            _pactBuilder = new PactBuilder(pactConfig);

            _pactBuilder
            .ServiceConsumer(PactConstants.PactConsumerNames.Product)
            .HasPactWith(PactConstants.PactProviderNames.SqsPocApi);

            _mockProviderService = _pactBuilder.MockService(
                MockSqsApiPort,
                Constants.JsonSettings);
        }
        public ConsumerPactClassFixture()
        {
            // Using Spec version 2.0.0 more details at https://goo.gl/UrBSRc
            var pactConfig = new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = @"..\..\..\..\pacts",
                LogDir  = @".\pact_logs"
            };

            PactBuilder = new PactBuilder(pactConfig);

            PactBuilder.ServiceConsumer("Consumer")
            .HasPactWith("Provider");
            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 28
0
        public UserConsumerPact()
        {
            PactBuilder = new PactBuilder
                          (
                new PactConfig
            {
                PactDir = $@"{AppDomain.CurrentDomain.BaseDirectory}\Pact",
                LogDir  = $@"{AppDomain.CurrentDomain.BaseDirectory}\Pact"
            }
                          );

            PactBuilder
            .ServiceConsumer(ClientName)
            .HasPactWith(ProviderName);

            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
Ejemplo n.º 29
0
        public ConsumerPactClassFixture()
        {
            //Create Pact config
            var pactConfig = new PactConfig {
                SpecificationVersion = "2.0.0",
                PactDir = @"..\..\..\..\..\pacts",
                LogDir  = @".\pacts_logs"
            };


            PactBuilder = new PactBuilder(pactConfig);

            PactBuilder.ServiceConsumer("Consumer").HasPactWith("Provider");

            //Create an instance of the MockService using the config
            MockProviderService = PactBuilder.MockService(MockServerPort);
        }
        public void Visit(IMockProviderService mockProvider)
        {
            var pathMatch = Matchers.Url($"/weatherforecast/1", "/weatherforecast/{number}");

            mockProvider
            .Given($"no forecast with id '{_forecastId}'")
            .UponReceiving("a DELETE request to set a forecast")
            .With(new ProviderServiceRequest
            {
                Method = HttpVerb.Delete,
                Path   = pathMatch
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status = 404
            });
        }
Ejemplo n.º 31
0
        public IMockProviderService MockService(int port, JsonSerializerSettings jsonSerializerSettings, bool enableSsl = false, bool bindOnAllAdapters = false)
        {
            if (_mockProviderService != null)
            {
                _mockProviderService.Stop();
            }

            if (jsonSerializerSettings != null)
            {
                JsonConfig.ApiSerializerSettings = jsonSerializerSettings;
            }

            _mockProviderService = _mockProviderServiceFactory(port, enableSsl, ProviderName, bindOnAllAdapters);

            _mockProviderService.Start();

            return(_mockProviderService);
        }
Ejemplo n.º 32
0
        public ValuesApiMock()
        {
            var pactConfig = new PactConfig
            {
                SpecificationVersion = "2.0.0",
                PactDir = @"..\..\..\pact",
                LogDir  = @".\pact_logs"
            };

            _pactBuilder = new PactBuilder(pactConfig)
                           .ServiceConsumer("Values")
                           .HasPactWith("otherApi");

            MockProviderService = _pactBuilder.MockService(ServicePort, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
        }
Ejemplo n.º 33
0
        public DateFormatterWebApiConsumerPact()
        {
            string pactDir = System.Text.RegularExpressions.Regex.Replace(ConfigurationManager.AppSettings["DateFormatter.WebApiPact.Dir"], @"^.\\", TestContext.CurrentContext.WorkDirectory + "/");
            string logDir  = System.Text.RegularExpressions.Regex.Replace(ConfigurationManager.AppSettings["DateFormatter.WebApiPact.LogDir"], @"^.\\", TestContext.CurrentContext.WorkDirectory + "/");

            //Nuint resharper runner hack
            Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);

            PactBuilder = new PactBuilder(new PactConfig {
                PactDir = pactDir, LogDir = logDir, SpecificationVersion = "2.0.0"
            });

            PactBuilder
            .ServiceConsumer("SampleApp.ConsoleApp")
            .HasPactWith("DateFormatter.WebApi");

            MockProviderService = PactBuilder.MockService(MockServerPort, new JsonSerializerSettings {
            });
        }
Ejemplo n.º 34
0
        public IMockProviderService MockService(int port)
        {
            if (_mockProviderService != null)
            {
                _mockProviderService.Stop();
            }

            _mockProviderService = _mockProviderServiceFactory(port);

            _mockProviderService.Start();

            return _mockProviderService;
        }
Ejemplo n.º 35
0
        public IMockProviderService MockService(int port, JsonSerializerSettings jsonSerializerSettings, bool enableSsl = false)
        {
            if (_mockProviderService != null)
            {
                _mockProviderService.Stop();
            }

            if (jsonSerializerSettings != null)
            {
                JsonConfig.ApiSerializerSettings = jsonSerializerSettings;
            }

            _mockProviderService = _mockProviderServiceFactory(port, enableSsl, ProviderName);

            _mockProviderService.Start();

            return _mockProviderService;
        }