public void Validate_ProviderStatesTearDownDefined_TearDownActionIsInvoked() { var actionInkoved = false; var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My interaction" } } }; var providerStates = new ProviderStates(setUp: null, tearDown: () => { actionInkoved = true; }); var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); providerServiceValidator.Validate(pact, providerStates); Assert.True(actionInkoved, "Provider states pact tearDown action is invoked"); }
private IHttpRequestSender GetSubject(FakeHttpClient fakeHttpClient = null) { _fakeHttpClient = fakeHttpClient ?? new FakeHttpClient(); _mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); _mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); return new HttpClientRequestSender( _fakeHttpClient, _mockHttpRequestMessageMapper, _mockProviderServiceResponseMapper); }
private IMockProviderService GetSubject(int port = 1234, bool enableSsl = false) { _mockHttpHost = Substitute.For<IHttpHost>(); _fakeHttpClient = new FakeHttpClient(); _mockHttpHostFactoryCallCount = 0; return new MockProviderService( (baseUri, mockContextService) => { _mockHttpHostFactoryCallCount++; return _mockHttpHost; }, port, enableSsl, baseUri => _fakeHttpClient); }
public void Validate_WhenInteractionDefinesAProviderStateAndNoProviderStatesAreSupplied_ThrowsInvalidOperationException() { var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { ProviderState = "My Provider State", Description = "My interaction" } } }; var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); Assert.Throws<InvalidOperationException>(() => providerServiceValidator.Validate(pact, null)); }
public void Validate_WithTwoInteractionsAndProviderStateSetupAndTearDownDefined_SetUpIsInvokedBeforeCompareAndTearDownIsInvokedAfterCompare() { const string providerState1 = "My Provider State"; const string providerState2 = "My Provider State 2"; const string setUpSuffix = "-SetUp"; const string tearDownSuffix = "-TearDown"; var actionInvocationLog = new List<string>(); var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { ProviderState = providerState1, Description = "My interaction" }, new ProviderServiceInteraction { ProviderState = providerState2, Description = "My interaction" }, } }; var providerStates = new ProviderStates(); providerStates.Add(new ProviderState(providerState1, setUp: () => actionInvocationLog.Add(providerState1 + setUpSuffix), tearDown: () => actionInvocationLog.Add(providerState1 + tearDownSuffix))); providerStates.Add(new ProviderState(providerState2, setUp: () => actionInvocationLog.Add(providerState2 + setUpSuffix), tearDown: () => actionInvocationLog.Add(providerState2 + tearDownSuffix))); var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); providerServiceValidator.Validate(pact, providerStates); Assert.Equal(4, actionInvocationLog.Count()); Assert.Equal(providerState1 + setUpSuffix, actionInvocationLog.First()); Assert.Equal(providerState1 + tearDownSuffix, actionInvocationLog.Skip(1).First()); Assert.Equal(providerState2 + setUpSuffix, actionInvocationLog.Skip(2).First()); Assert.Equal(providerState2 + tearDownSuffix, actionInvocationLog.Last()); }
public void Validate_WithNullInteractionsInPactFile_DoesNotCallHttpClientOrAnyOfTheMappersOrValidators() { var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" } }; var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); providerServiceValidator.Validate(pact, null); mockProviderServiceResponseComparer.Received(0).Compare(Arg.Any<ProviderServiceResponse>(), Arg.Any<ProviderServiceResponse>()); Assert.Equal(0, fakeHttpClient.SendAsyncCallCount); mockHttpRequestMessageMapper.Received(0).Convert(Arg.Any<ProviderServiceRequest>()); mockProviderServiceResponseMapper.Received(0).Convert(Arg.Any<HttpResponseMessage>()); }
public void Validate_WithNoInteractionsAndProviderStatesSetUpDefined_SetUpActionIsNotInvoked() { var actionInkoved = false; var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = null }; var providerStates = new ProviderStates(setUp: () => { actionInkoved = true; }, tearDown: null); var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); providerServiceValidator.Validate(pact, providerStates); Assert.False(actionInkoved, "Provider states pact setUp action is not invoked"); }
public void Validate_WithInteractionsInPactFile_CallsValidateOnTheProviderServiceResponseValidator() { var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My interaction" } } }; var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); providerServiceValidator.Validate(pact, null); mockProviderServiceResponseComparer.Received(1).Compare(Arg.Any<ProviderServiceResponse>(), Arg.Any<ProviderServiceResponse>()); }
public void Validate_WhenReporterHasErrors_ThrowsCompareFailedException() { var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My interaction" }, } }; var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var mockReporter = Substitute.For<IReporter>(); mockReporter .When(x => x.ThrowIfAnyErrors()) .Do(info => { throw new CompareFailedException("Compare failed"); }); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, mockReporter); Assert.Throws<CompareFailedException>(() => providerServiceValidator.Validate(pact, null)); mockReporter.Received(1).ThrowIfAnyErrors(); }
public void Validate_WhenProviderServiceResponseValidatorThrowsACompareFailedException_ThrowsACompareFailedException() { var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My interaction" } } }; var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); mockProviderServiceResponseComparer .When(x => x.Compare(Arg.Any<ProviderServiceResponse>(), Arg.Any<ProviderServiceResponse>())) .Do(x => { throw new CompareFailedException("Expected response cannot be null"); }); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); Assert.Throws<CompareFailedException>(() => providerServiceValidator.Validate(pact, null)); }
public void Validate_WhenProviderServiceResponseComparerThrowsAndProviderStatesTearDownDefined_TearDownActionIsInvoked() { var actionInkoved = false; var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { Description = "My interaction" } } }; var providerStates = new ProviderStates(setUp: null, tearDown: () => { actionInkoved = true; }); var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); mockProviderServiceResponseComparer .When(x => x.Compare(Arg.Any<ProviderServiceResponse>(), Arg.Any<ProviderServiceResponse>())) .Do(x => { throw new CompareFailedException("Expected response cannot be null"); }); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); Assert.Throws<CompareFailedException>(() => providerServiceValidator.Validate(pact, providerStates)); Assert.True(actionInkoved, "Provider states pact tearDown action is invoked"); }
public void Validate_WhenInteractionDefinesAProviderStateAndProviderStateIsSuppliedWithNoSetUpOrTearDown_NoProviderStateSetUpOrTearDownActionsAreInvoked() { var pact = new ProviderServicePactFile { Consumer = new Party { Name = "My client" }, Provider = new Party { Name = "My Provider" }, Interactions = new List<ProviderServiceInteraction> { new ProviderServiceInteraction { ProviderState = "My Provider State", Description = "My interaction" } } }; var providerStates = new ProviderStates(); providerStates.Add(new ProviderState("My Provider State")); var mockProviderServiceResponseComparer = Substitute.For<IProviderServiceResponseComparer>(); var fakeHttpClient = new FakeHttpClient(); var mockHttpRequestMessageMapper = Substitute.For<IHttpRequestMessageMapper>(); var mockProviderServiceResponseMapper = Substitute.For<IProviderServiceResponseMapper>(); var providerServiceValidator = new ProviderServiceValidator( mockProviderServiceResponseComparer, fakeHttpClient, mockHttpRequestMessageMapper, mockProviderServiceResponseMapper, new Reporter(new NoOpReportOutputter())); providerServiceValidator.Validate(pact, providerStates); }