Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 4
0
        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;
            }
        }
Exemplo n.º 5
0
 internal NancyHttpHost(Uri baseUri, PactConfig config, INancyBootstrapper bootstrapper)
 {
     _baseUri      = baseUri;
     _bootstrapper = bootstrapper;
     _log          = LogProvider.GetLogger(config.LoggerName);
     _config       = config;
 }
        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);
        }
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
 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))
 {
 }
Exemplo n.º 10
0
 public MockProviderService(int port, bool enableSsl, string providerName, PactConfig config)
     : this(
         baseUri => new RubyHttpHost(baseUri, providerName, config),
         port,
         enableSsl,
         baseUri => new AdminHttpClient(baseUri))
 {
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 13
0
        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;
 }
Exemplo n.º 15
0
 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())
 {
 }
Exemplo n.º 16
0
 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 MockProviderNancyRequestDispatcher(
     IMockProviderRequestHandler requestHandler,
     IMockProviderAdminRequestHandler adminRequestHandler,
     ILog log,
     PactConfig pactConfig)
 {
     _requestHandler = requestHandler;
     _adminRequestHandler = adminRequestHandler;
     _log = log;
     _pactConfig = pactConfig;
 }
 public MockProviderAdminRequestHandler(
     IMockProviderRepository mockProviderRepository,
     IFileSystem fileSystem,
     PactConfig pactConfig,
     ILog log)
 {
     _mockProviderRepository = mockProviderRepository;
     _fileSystem = fileSystem;
     _pactConfig = pactConfig;
     _log = log;
 }
Exemplo n.º 19
0
        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 MockProviderAdminRequestHandler(
     IMockProviderRepository mockProviderRepository,
     IFileSystem fileSystem,
     PactConfig pactConfig,
     ILog log)
 {
     _mockProviderRepository = mockProviderRepository;
     _fileSystem             = fileSystem;
     _pactConfig             = pactConfig;
     _log = log;
 }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
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);
        }
Exemplo n.º 23
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);
        }
        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);
        }
Exemplo n.º 25
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);
        }
Exemplo n.º 26
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);
        }
Exemplo n.º 27
0
        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);
        }
Exemplo n.º 30
0
 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())
 {
 }
Exemplo n.º 31
0
        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);
        }
Exemplo n.º 32
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);
        }
Exemplo n.º 34
0
        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);
        }
Exemplo n.º 35
0
        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
        }
Exemplo n.º 36
0
        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)
 {
 }
Exemplo n.º 41
0
 internal NancyHttpHost(Uri baseUri, string providerName, PactConfig config)
     : this(baseUri, providerName, new MockProviderNancyBootstrapper(config), config.LogDir)
 {
     _baseUri = baseUri;
 }