public ConsumerPactClassFixture() { 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); var builder = new WebHostBuilder() .ConfigureServices(s => s.Configure <MembershipApiSettings>(settings => settings.BaseUri = MockProviderServiceBaseUri)) .UseStartup <TStartup>(); _server = new TestServer(builder); Client = _server.CreateClient(); Client.BaseAddress = new Uri("http://localhost:5000"); }
internal NancyHttpHost(Uri baseUri, PactConfig config, INancyBootstrapper bootstrapper) { _baseUri = baseUri; _bootstrapper = bootstrapper; _log = LogProvider.GetLogger(config.LoggerName); _config = config; }
private IPactCoreHostConfig GetSubject(int port = 2322, bool enableSsl = false, string consumerName = "My Test Consumer", string providerName = "My Test Provider", PactConfig pactConfig = null, IPAddress host = IPAddress.Loopback, string sslCert = "", string sslKey = "") { return(new MockProviderHostConfig(port, enableSsl, consumerName, providerName, pactConfig ?? new PactConfig(), host, sslCert, sslKey)); }
internal NancyHttpHost(Uri baseUri, string providerName, PactConfig config, bool bindOnAllAdapters) { var loggerName = LogProvider.CurrentLogProvider.AddLogger(config.LogDir, providerName.ToLowerSnakeCase(), "{0}_mock_service.log"); config.LoggerName = loggerName; _baseUri = baseUri; _bootstrapper = new MockProviderNancyBootstrapper(config); _log = LogProvider.GetLogger(config.LoggerName); _config = config; _nancyConfiguration = new HostConfiguration { AllowChunkedEncoding = false }; if (bindOnAllAdapters) { _nancyConfiguration.UrlReservations = new UrlReservations { CreateAutomatically = true }; _nancyConfiguration.RewriteLocalhost = true; } else { _nancyConfiguration.RewriteLocalhost = false; } }
public void PactMessageBuilder_ReturnsDefaultConfig() { var defaultConfig = new PactConfig(); var builder = new PactMessageBuilder(); Assert.Equal(defaultConfig.PactDir, builder.pactConfig.PactDir); }
public void Handle_WithAPostRequestToPactAndPactDirIsDifferentFromDefault_NewPactFileIsSavedWithInteractionsInTheSpecifiedPath() { var pactDetails = new PactDetails { Consumer = new Pacticipant { Name = "Consumer" }, Provider = new Pacticipant { Name = "Provider" } }; var interactions = new List <ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My description", Request = new ProviderServiceRequest { Method = HttpVerb.Get, Path = "/test" }, Response = new ProviderServiceResponse { Status = (int)HttpStatusCode.NoContent } } }; var pactFile = new ProviderServicePactFile { Provider = pactDetails.Provider, Consumer = pactDetails.Consumer, Interactions = interactions }; var config = new PactConfig { PactDir = @"C:\temp" }; var filePath = Path.Combine(config.PactDir, pactDetails.GeneratePactFileName()); var pactFileJson = JsonConvert.SerializeObject(pactFile, JsonConfig.PactFileSerializerSettings); var pactDetailsJson = JsonConvert.SerializeObject(pactDetails, JsonConfig.ApiSerializerSettings); var jsonStream = new MemoryStream(Encoding.UTF8.GetBytes(pactDetailsJson)); var requestStream = new RequestStream(jsonStream, jsonStream.Length, true); var context = new NancyContext { Request = new Request("POST", new Url("http://localhost/pact"), requestStream) }; var handler = GetSubject(config); _mockProviderRepository.Interactions.Returns(interactions); var response = handler.Handle(context); _mockFileSystem.File.Received(1).WriteAllText(filePath, pactFileJson); }
public MockProviderHostConfig(int port, bool enableSsl, string consumerName, string providerName, PactConfig config, IPAddress host, string sslCert, string sslKey) { var logFile = $"{config.LogDir}{providerName.ToLowerSnakeCase()}_mock_service.log"; var sslOption = enableSsl ? " --ssl" : string.Empty; var sslCertOption = !string.IsNullOrEmpty(sslCert) ? $" --sslcert=\"{FixPathForRuby(sslCert)}\"" : string.Empty; var sslKeyOption = !string.IsNullOrEmpty(sslKey) ? $" --sslkey=\"{FixPathForRuby(sslKey)}\"" : string.Empty; var hostOption = host == IPAddress.Any ? " --host=0.0.0.0" : string.Empty; var monkeyPatchOption = !string.IsNullOrEmpty(config?.MonkeyPatchFile) ? $" --monkeypatch=\"${config.MonkeyPatchFile}\"" : string.Empty; Script = "pact-mock-service"; Arguments = $"-p {port} -l \"{FixPathForRuby(logFile)}\" --pact-dir \"{FixPathForRuby(config.PactDir)}\" --pact-specification-version \"{config.SpecificationVersion}\" --consumer \"{consumerName}\" --provider \"{providerName}\"{sslOption}{hostOption}{monkeyPatchOption}"; Arguments = $"-p {port} -l \"{FixPathForRuby(logFile)}\" " + $"--pact-dir \"{FixPathForRuby(config.PactDir)}\" " + $"--pact-specification-version \"{config.SpecificationVersion}\" " + $"--consumer \"{consumerName}\" " + $"--provider \"{providerName}\"{sslOption}{hostOption}{sslCertOption}{sslKeyOption}{monkeyPatchOption}"; WaitForExit = false; Outputters = config?.Outputters; }
public RubyHttpHost(Uri baseUri, string providerName, PactConfig config) : this(new PactCoreHost <MockProviderHostConfig>( new MockProviderHostConfig(baseUri.Port, baseUri.Scheme.ToUpperInvariant().Equals("HTTPS"), providerName, config)), new AdminHttpClient(baseUri)) { }
public MockProviderService(int port, bool enableSsl, string providerName, PactConfig config) : this( baseUri => new RubyHttpHost(baseUri, providerName, config), port, enableSsl, baseUri => new AdminHttpClient(baseUri)) { }
internal NancyHttpHost(Uri baseUri, string providerName, PactConfig config) { var loggerName = LogProvider.CurrentLogProvider.AddLogger(config.LogDir, providerName.ToLowerSnakeCase(), "{0}_mock_service.log"); config.LoggerName = loggerName; _baseUri = baseUri; _bootstrapper = new MockProviderNancyBootstrapper(config); _log = LogProvider.GetLogger(config.LoggerName); _config = config; }
public void PactMEssageBuilder_OverrideConfig() { var customConfig = new PactConfig(); customConfig.PactDir = "/customPactDir"; var builder = new PactMessageBuilder(customConfig); Assert.Equal("/customPactDir", builder.pactConfig.PactDir); }
public MockProviderHostConfig(int port, bool enableSsl, string providerName, PactConfig config) { var logFile = $"{config.LogDir}{providerName.ToLowerSnakeCase()}_mock_service.log"; var sslOption = enableSsl ? " --ssl" : ""; Path = ".\\pact\\bin\\pact-mock-service.bat"; Arguments = $"-p {port} -l \"{FixPathForRuby(logFile)}\" --pact-dir \"{FixPathForRuby(config.PactDir)}\" --pact-specification-version \"{config.SpecificationVersion}\"{sslOption}"; WaitForExit = false; Outputters = config?.Outputters; }
public MockProviderNancyRequestDispatcher( IMockProviderRequestHandler requestHandler, IMockProviderAdminRequestHandler adminRequestHandler, ILog log, PactConfig pactConfig) { _requestHandler = requestHandler; _adminRequestHandler = adminRequestHandler; _log = log; _pactConfig = pactConfig; }
public MockProviderService(int port, bool enableSsl, string providerName, PactConfig config) : this( baseUri => new NancyHttpHost(baseUri, providerName, config), port, enableSsl, baseUri => new HttpClient { BaseAddress = new Uri(baseUri) }, new HttpMethodMapper()) { }
public RubyHttpHost(Uri baseUri, string consumerName, string providerName, PactConfig config, IPAddress host = IPAddress.Loopback) : this(new PactCoreHost <MockProviderHostConfig>( new MockProviderHostConfig(baseUri.Port, baseUri.Scheme.Equals("HTTPS", StringComparison.OrdinalIgnoreCase), consumerName, providerName, config, host)), new AdminHttpClient(baseUri)) { }
public MockProviderAdminRequestHandler( IMockProviderRepository mockProviderRepository, IFileSystem fileSystem, PactConfig pactConfig, ILog log) { _mockProviderRepository = mockProviderRepository; _fileSystem = fileSystem; _pactConfig = pactConfig; _log = log; }
public ConsumerPact() { var pactConfig = new PactConfig { // SpecificationVersion = "2.0.0", PactDir = "~/dotnet/pacts", LogDir = "~/dotnet/logs" }; PactBuilder = new PactBuilder(pactConfig).ServiceConsumer("Service_Consumer").HasPactWith("ToDoList"); MockProviderService = PactBuilder.MockService(MockServerPort); }
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); }
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); }
public void Ctor_WhenCalled_SetsTheCorrectArgs() { var port = 9332; var pactConfig = new PactConfig(); var providerName = "The best one"; var config = GetSubject(port, false, providerName, pactConfig); var expectedLogFilePath = BuildExpectedLogFilePath(pactConfig.LogDir, providerName); var expectedPactDir = BuildExpectedPactDir(pactConfig.PactDir); var expectedArguments = BuildExpectedArguments(port, expectedLogFilePath, expectedPactDir, pactConfig.SpecificationVersion); Assert.Equal(expectedArguments, config.Arguments); }
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); }
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); }
public ConsumerApiMock() { var pactConfig = new PactConfig { SpecificationVersion = "2.0.0", LogDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}logs{Path.DirectorySeparatorChar}", PactDir = $"..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}pacts{Path.DirectorySeparatorChar}" }; _pactBuilder = new PactBuilder(pactConfig) .ServiceConsumer("SomethingApiClient") .HasPactWith("GetSomething"); MockProviderService = _pactBuilder.MockService(MockServerPort, false, IPAddress.Any); }
private IMockProviderAdminRequestHandler GetSubject(PactConfig pactConfig = null) { _mockProviderRepository = Substitute.For <IMockProviderRepository>(); _mockFileSystem = Substitute.For <IFileSystem>(); _mockLog = Substitute.For <ILog>(); _mockLog.Log(Arg.Any <LogLevel>(), Arg.Any <Func <string> >(), Arg.Any <Exception>(), Arg.Any <object[]>()) .Returns(true); return(new MockProviderAdminRequestHandler( _mockProviderRepository, _mockFileSystem, pactConfig ?? new PactConfig(), _mockLog)); }
public FailureIntegrationTestsMyApiPact() { var pactConfig = new PactConfig(); PactBuilder = new PactBuilder((port, enableSsl, providerName) => new MockProviderService( baseUri => new NancyHttpHost(baseUri, providerName, new IntegrationTestingMockProviderNancyBootstrapper(pactConfig), pactConfig.LogDir), port, enableSsl, baseUri => new HttpClient { BaseAddress = new Uri(baseUri) }, new HttpMethodMapper())) .ServiceConsumer("FailureIntegrationTests") .HasPactWith("MyApi"); MockProviderService = PactBuilder.MockService(MockServerPort); }
public MockProviderService(int port, bool enableSsl, string providerName, PactConfig config, bool bindOnAllAdapters) : this( baseUri => { NancyConfig.HostConfiguration.RewriteLocalhost = bindOnAllAdapters; return(new NancyHttpHost(baseUri, providerName, config)); }, port, enableSsl, baseUri => new HttpClient { BaseAddress = new Uri(baseUri) }, new HttpMethodMapper()) { }
public void Setup() { // Create a PactBuilder instance var pactConfig = new PactConfig() { SpecificationVersion = "2.0.0", PactDir = @"..\..\..\..\..\pacts", LogDir = @"..\..\..\..\..\logs" }; PactBuilder = new PactBuilder(pactConfig); PactBuilder.ServiceConsumer(ConsumerName).HasPactWith(ProviderName); MockProviderService = PactBuilder.MockService(MockServerPort); }
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); }
public ConsumerPact() { //Pact Configuration var pactConfig = new PactConfig { SpecificationVersion = "2.0.0", PactDir = @"c:\contractUdemy\pacts", LogDir = @"c:\contractUdemy\logs" }; PactBuilder = new PactBuilder(pactConfig); PactBuilder.ServiceConsumer("Service_Consumer").HasPactWith("EmployeeList"); MockProviderService = PactBuilder.MockService(MockServerPort); }
public PactConsumer(string consumerName, string producerName) { var mockServerPort = _random.Next() % 65535; MockProviderServiceBaseUri = $"http://*****:*****@"\\sopfile01.int.soderbergpartners.se\TFS\Drops\Liv\Pact\{machine}\pacts", //LogDir = @"..\\..\\logs\\" }; PactBuilder = new PactBuilder(config); //Configures the PactDir and/or LogDir. PactBuilder.ServiceConsumer(consumerName).HasPactWith(producerName); MockProviderService = PactBuilder.MockService(mockServerPort, new JsonSerializerSettings()); //Configure the http mock server }
public void Ctor_WithDefaults_UsesDefaultPactDir() { var options = new PactConfig(); Assert.Equal(Constants.DefaultPactDir, options.PactDir); }
private IMockProviderAdminRequestHandler GetSubject(PactConfig pactConfig = null) { _mockProviderRepository = Substitute.For<IMockProviderRepository>(); _mockFileSystem = Substitute.For<IFileSystem>(); _mockLog = Substitute.For<ILog>(); _mockLog.Log(Arg.Any<LogLevel>(), Arg.Any<Func<string>>(), Arg.Any<Exception>(), Arg.Any<object[]>()) .Returns(true); return new MockProviderAdminRequestHandler( _mockProviderRepository, _mockFileSystem, pactConfig ?? new PactConfig(), _mockLog); }
public void Handle_WithAPostRequestToPactAndPactDirIsDifferentFromDefault_NewPactFileIsSavedWithInteractionsInTheSpecifiedPath() { var pactDetails = new PactDetails { Consumer = new Pacticipant { Name = "Consumer" }, Provider = new Pacticipant { Name = "Provider" } }; var interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My description", Request = new ProviderServiceRequest { Method = HttpVerb.Get, Path = "/test" }, Response = new ProviderServiceResponse { Status = (int)HttpStatusCode.NoContent } } }; var pactFile = new ProviderServicePactFile { Provider = pactDetails.Provider, Consumer = pactDetails.Consumer, Interactions = interactions }; var config = new PactConfig { PactDir = @"C:\temp" }; var filePath = Path.Combine(config.PactDir, pactDetails.GeneratePactFileName()); var pactFileJson = JsonConvert.SerializeObject(pactFile, JsonConfig.PactFileSerializerSettings); var pactDetailsJson = JsonConvert.SerializeObject(pactDetails, JsonConfig.ApiSerializerSettings); var jsonStream = new MemoryStream(Encoding.UTF8.GetBytes(pactDetailsJson)); var requestStream = new RequestStream(jsonStream, jsonStream.Length, true); var context = new NancyContext { Request = new Request("POST", new Url("http://localhost/pact"), requestStream) }; var handler = GetSubject(config); _mockProviderRepository.Interactions.Returns(interactions); var response = handler.Handle(context); _mockFileSystem.File.Received(1).WriteAllText(filePath, pactFileJson); }
public MockProviderNancyBootstrapper(PactConfig config) { _config = config; }
public IntegrationTestingMockProviderNancyBootstrapper(PactConfig config) : base(config) { }
internal NancyHttpHost(Uri baseUri, string providerName, PactConfig config) : this(baseUri, providerName, new MockProviderNancyBootstrapper(config), config.LogDir) { _baseUri = baseUri; }