public PactVerifierHostConfig(Uri baseUri, string pactUri, PactBrokerConfig brokerConfig, PactUriOptions pactBrokerUriOptions, Uri providerStateSetupUri, PactVerifierConfig config, IDictionary <string, string> environment)
        {
            var pactUriOption       = pactUri != null ? $"\"{FixPathForRuby(pactUri)}\" " : "";
            var providerStateOption = providerStateSetupUri != null ? $" --provider-states-setup-url \"{providerStateSetupUri.OriginalString}\"" : string.Empty;
            var pactBrokerOptions   = BuildPactBrokerOptions(brokerConfig);
            var brokerCredentials   = pactBrokerUriOptions != null ?
                                      !String.IsNullOrEmpty(pactBrokerUriOptions.Username) && !String.IsNullOrEmpty(pactBrokerUriOptions.Password) ?
                                      $" --broker-username \"{pactBrokerUriOptions.Username}\" --broker-password \"{pactBrokerUriOptions.Password}\"" :
                                      $" --broker-token \"{pactBrokerUriOptions.Token}\""
                 : string.Empty;
            var publishResults    = config?.PublishVerificationResults == true ? $" --publish-verification-results=true --provider-app-version=\"{config.ProviderVersion}\"" : string.Empty;
            var customHeaders     = this.BuildCustomHeaders(config);
            var verbose           = config?.Verbose == true ? " --verbose true" : string.Empty;
            var monkeyPatchOption = !string.IsNullOrEmpty(config?.MonkeyPatchFile) ? $" --monkeypatch=\"${config.MonkeyPatchFile}\"" : string.Empty;

            Script      = "pact-provider-verifier";
            Arguments   = $"{pactUriOption}--provider-base-url \"{baseUri.OriginalString}\"{providerStateOption}{pactBrokerOptions}{brokerCredentials}{publishResults}{customHeaders}{verbose}{monkeyPatchOption}";
            WaitForExit = true;
            Outputters  = config?.Outputters;
            Environment = new Dictionary <string, string>
            {
                { "PACT_INTERACTION_RERUN_COMMAND", "To re-run just this failing interaction, change the verify method to '.Verify(description: \"<PACT_DESCRIPTION>\", providerState: \"<PACT_PROVIDER_STATE>\")'. Please do not check in this change!" }
            };

            if (environment != null)
            {
                foreach (var envVar in environment)
                {
                    Environment.Add(envVar.Key, envVar.Value);
                }
            }
        }
        private string BuildPactBrokerOptions(PactBrokerConfig config)
        {
            if (config == null)
            {
                return(string.Empty);
            }

            var consumerVersionTags      = BuildTags("consumer-version-tag", config.ConsumerVersionTags);
            var providerVersionTags      = BuildTags("provider-version-tag", config.ProviderVersionTags);
            var consumerVersionSelectors = BuildTags("consumer-version-selector", config.ConsumerVersionSelectors);
            var enablePending            = config.EnablePending ? " --enable-pending" : "";

            return($" --pact-broker-base-url \"{config.BrokerBaseUri}\" --provider \"{config.ProviderName}\"{consumerVersionTags}{providerVersionTags}{consumerVersionSelectors}{enablePending}");
        }
        private string BuildPactBrokerOptions(PactBrokerConfig config)
        {
            if (config == null)
            {
                return(string.Empty);
            }

            var consumerVersionTags      = BuildTags("consumer-version-tag", config.ConsumerVersionTags);
            var providerVersionTags      = BuildTags("provider-version-tag", config.ProviderVersionTags);
            var consumerVersionSelectors = BuildTags("consumer-version-selector", config.ConsumerVersionSelectors);
            var enablePending            = config.EnablePending ? " --enable-pending" : "";
            var includeWipPactsSince     = !String.IsNullOrEmpty(config.IncludeWipPactsSince) ? $" --include-wip-pacts-since \"{config.IncludeWipPactsSince}\"" : string.Empty;

            return($" --pact-broker-base-url \"{config.BrokerBaseUri}\" --provider \"{config.ProviderName}\"{consumerVersionTags}{providerVersionTags}{consumerVersionSelectors}{enablePending}{includeWipPactsSince}");
        }
Esempio n. 4
0
 private IPactCoreHostConfig GetSubject(Uri baseUri    = null,
                                        string pactUri = null,
                                        PactBrokerConfig brokerConfig            = null,
                                        PactUriOptions pactBrokerUriOptions      = null,
                                        Uri providerStateSetupUri                = null,
                                        PactVerifierConfig verifierConfig        = null,
                                        IDictionary <string, string> environment = null)
 {
     return(new PactVerifierHostConfig(
                baseUri ?? new Uri("http://localhost:2833"),
                pactUri,
                brokerConfig,
                pactBrokerUriOptions,
                providerStateSetupUri,
                verifierConfig,
                environment));
 }