public void Verify(string description = null, string providerState = null) { if (String.IsNullOrEmpty(PactFileUri)) { throw new InvalidOperationException( "PactFileUri has not been set, please supply a uri using the PactUri method."); } MessagePactFile pactFile; try { string pactFileJson; if (IsWebUri(PactFileUri)) { pactFileJson = HttpGetPactFile(); } else { pactFileJson = File.ReadAllText(PactFileUri); } pactFile = JsonConvert.DeserializeObject <MessagePactFile>(pactFileJson); } catch (Exception ex) { throw new InvalidOperationException( String.Format("Json Pact file could not be retrieved using uri \'{0}\'.", PactFileUri), ex); } //Filter interactions if (description != null) { pactFile.Messages = pactFile.Messages.Where(x => x.Description.Equals(description)); } if (providerState != null) { pactFile.Messages = pactFile.Messages.Where(x => x.ProviderState.Equals(providerState)); } if ((description != null || providerState != null) && (pactFile.Messages == null || !pactFile.Messages.Any())) { throw new ArgumentException( "The specified description and/or providerState filter yielded no interactions."); } var loggerName = LogProvider.CurrentLogProvider.AddLogger(_pactVerifierConfig.LogDir, ProviderName.ToLowerSnakeCase(), "{0}_verifier.log"); _pactVerifierConfig.LoggerName = loggerName; var verificationResult = new PactVerificationResult { ProviderApplicationVersion = _pactVerifierConfig.ProviderVersion }; try { var validator = new MessageProviderValidator(new Reporter(_pactVerifierConfig), _pactVerifierConfig); validator.Validate(pactFile, ProviderStates); verificationResult.Success = true; } finally { if (_pactVerifierConfig.PublishVerificationResults) { HttpPostPublishVerificationResults( pactFile.Links.PublishVerificationResults.Href, verificationResult); } LogProvider.CurrentLogProvider.RemoveLogger(_pactVerifierConfig.LoggerName); } }
public void Verify(string description = null, string providerState = null) { if (String.IsNullOrEmpty(PactFileUri)) { throw new InvalidOperationException( "PactFileUri has not been set, please supply a uri using the PactUri method."); } MessagePactFile pactFile; try { string pactFileJson; if (IsWebUri(PactFileUri)) { //Pact broker does not handle v3 specs for messages at this time throw new NotImplementedException( "Pact broker does not handle v3 specs for messages at this time. Use a local pact file uri."); } pactFileJson = File.ReadAllText(PactFileUri); pactFile = JsonConvert.DeserializeObject <MessagePactFile>(pactFileJson); } catch (Exception ex) { throw new InvalidOperationException( String.Format("Json Pact file could not be retrieved using uri \'{0}\'.", PactFileUri), ex); } //Filter interactions if (description != null) { pactFile.Messages = pactFile.Messages.Where(x => x.Description.Equals(description)); } if (providerState != null) { pactFile.Messages = pactFile.Messages.Where(x => x.ProviderState.Equals(providerState)); } if ((description != null || providerState != null) && (pactFile.Messages == null || !pactFile.Messages.Any())) { throw new ArgumentException( "The specified description and/or providerState filter yielded no interactions."); } var loggerName = LogProvider.CurrentLogProvider.AddLogger(pactVerifierConfig.LogDir, ProviderName.ToLowerSnakeCase(), "{0}_verifier.log"); pactVerifierConfig.LoggerName = loggerName; try { var validator = new MessageProviderValidator(new Reporter(pactVerifierConfig), pactVerifierConfig); validator.Validate(pactFile, ProviderStates); } finally { LogProvider.CurrentLogProvider.RemoveLogger(pactVerifierConfig.LoggerName); } }