public void Returns_callback_gets_request_data() { var doc = new XDoc("doc").Elem("foo", StringUtil.CreateAlphaNumericKey(6)); var success = new XDoc("yay"); var uri = new XUri("http://mock/foo/").With("foo", "baz"); MockPlug.Setup(new XUri("http://mock/foo")).Returns(invocation => { if (invocation.Verb != "POST") { return(DreamMessage.BadRequest("wrong verb: " + invocation.Verb)); } if (invocation.Uri != uri) { return(DreamMessage.BadRequest("wrong uri: " + invocation.Uri)); } if (invocation.Request.Headers["header"] != "value") { return(DreamMessage.BadRequest("wrong header value")); } if (invocation.Request.ToDocument() != doc) { return(DreamMessage.BadRequest("wrong body")); } return(DreamMessage.Ok(success)); }); var msg = Plug.New(uri).WithHeader("header", "value").Post(doc, new Result <DreamMessage>()).Wait(); Assert.IsTrue(msg.IsSuccessful, msg.ToDocument().ToPrettyString()); Assert.AreEqual(success, msg.ToDocument()); }
public void Can_verify_call() { var mock = MockPlug.Setup(new XUri("http://mock/foo")).ExpectCalls(Times.AtLeastOnce()); Assert.IsTrue(Plug.New("http://mock/foo").Get(new Result <DreamMessage>()).Wait().IsSuccessful); mock.Verify(); }
public void Can_add_headers_to_the_response_before_specifying_message() { MockPlug.Setup(new XUri("http://mock/foo")).WithResponseHeader("foo", "bar").Returns(DreamMessage.NotModified()); var msg = Plug.New("http://mock/foo").Get(new Result <DreamMessage>()).Wait(); Assert.AreEqual(DreamStatus.NotModified, msg.Status); Assert.AreEqual("bar", msg.Headers["foo"]); }
public void Can_add_headers_to_the_response() { MockPlug.Setup(new XUri("http://mock/foo")).WithResponseHeader("foo", "bar"); var msg = Plug.New("http://mock/foo").Get(new Result <DreamMessage>()).Wait(); Assert.IsTrue(msg.IsSuccessful); Assert.AreEqual("bar", msg.Headers["foo"]); }
public void Can_return_XDoc() { var doc = new XDoc("doc").Elem("foo", StringUtil.CreateAlphaNumericKey(6)); MockPlug.Setup(new XUri("http://mock/foo")).Returns(doc); var msg = Plug.New("http://mock/foo").Get(new Result <DreamMessage>()).Wait(); Assert.IsTrue(msg.IsSuccessful); Assert.AreEqual(doc, msg.ToDocument()); }
public void Can_provide_callback_for_custom_body_check_and_pick_mockplug_based_on_its_return() { var a = MockPlug.Setup(new XUri("http://mock/foo")).WithMessage(msg => false); var b = MockPlug.Setup(new XUri("http://mock/foo")).WithMessage(msg => true); var c = MockPlug.Setup(new XUri("http://mock/foo")).WithMessage(msg => false); Assert.IsTrue(Plug.New("http://mock/foo/").Post(new XDoc("doc"), new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Can_pick_appropriate_MockPlug_based_on_body() { var a = MockPlug.Setup(new XUri("http://mock/foo")).WithBody(new XDoc("doc").Elem("x", "a")); var b = MockPlug.Setup(new XUri("http://mock/foo")).WithBody(new XDoc("doc").Elem("x", "b")); var c = MockPlug.Setup(new XUri("http://mock/foo")).WithBody(new XDoc("doc").Elem("x", "c")); Assert.IsTrue(Plug.New("http://mock/foo/").Post(new XDoc("doc").Elem("x", "b"), new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Can_pick_appropriate_MockPlug_based_on_most_less_specific_header_with_value_match() { var a = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a"); var b = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a").WithHeader("x", "1"); var c = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a").WithHeader("x", "2").WithHeader("y", "2"); Assert.IsTrue(Plug.New("http://mock/foo/").WithHeader("bar", "a").WithHeader("x", "1").Get(new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Can_pick_appropriate_MockPlug_based_on_header_values_via_callback() { var a = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", x => x == "a"); var b = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", x => x == "b"); var c = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", x => x == "c"); Assert.IsTrue(Plug.New("http://mock/foo/").WithHeader("bar", "b").Get(new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Can_pick_appropriate_MockPlug_based_on_headers() { var bar = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a"); var eek = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("eek", "b"); var baz = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("baz", "c"); Assert.IsTrue(Plug.New("http://mock/foo/").WithHeader("eek", "b").Get(new Result <DreamMessage>()).Wait().IsSuccessful); bar.Verify(2.Seconds(), Times.Never()); baz.Verify(0.Seconds(), Times.Never()); eek.Verify(Times.Once()); }
public void Can_pick_appropriate_MockPlug_based_on_subpath() { var a = MockPlug.Setup(new XUri("http://mock/foo")).At("bar"); var b = MockPlug.Setup(new XUri("http://mock/foo")).At("eek"); var c = MockPlug.Setup(new XUri("http://mock/foo")).At("baz"); Assert.IsTrue(Plug.New("http://mock/foo/eek").Get(new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Specific_verb_gets_picked_over_wildcard2() { var a = MockPlug.Setup(new XUri("http://mock/foo")).Verb("DELETE"); var b = MockPlug.Setup(new XUri("http://mock/foo")).Verb("GET"); var c = MockPlug.Setup(new XUri("http://mock/foo")); Assert.IsTrue(Plug.New("http://mock/foo").Get(new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Extraneous_headers_are_not_considered_in_matching() { var a = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a"); var b = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a").WithHeader("x", "1"); var c = MockPlug.Setup(new XUri("http://mock/foo")).WithHeader("bar", "a").WithHeader("x", "2").WithHeader("y", "2"); Assert.IsTrue(Plug.New("http://mock/foo/").WithHeader("bar", "a").WithHeader("x", "1").WithHeader("y", "2").Get(new Result <DreamMessage>()).Wait().IsSuccessful); a.Verify(2.Seconds(), Times.Never()); c.Verify(0.Seconds(), Times.Never()); b.Verify(Times.Once()); }
public void Can_add_headers_to_the_response_before_specifying_document() { var doc = new XDoc("doc").Elem("foo", StringUtil.CreateAlphaNumericKey(6)); MockPlug.Setup(new XUri("http://mock/foo")).WithResponseHeader("foo", "bar").Returns(doc); var msg = Plug.New("http://mock/foo").Get(new Result <DreamMessage>()).Wait(); Assert.IsTrue(msg.IsSuccessful); Assert.AreEqual("bar", msg.Headers["foo"]); Assert.AreEqual(doc, msg.ToDocument()); }
public void Returns_callback_gets_response_headers_if_added_after_callback() { var success = new XDoc("yay"); MockPlug.Setup(new XUri("http://mock/foo")) .Returns(invocation => { return(invocation.ResponseHeaders["foo"] != "bar" ? DreamMessage.BadRequest("wrong response header") : DreamMessage.Ok(success)); }) .WithResponseHeader("foo", "bar"); var msg = Plug.New("http://mock/foo/").Get(new Result <DreamMessage>()).Wait(); Assert.IsTrue(msg.IsSuccessful, msg.ToDocument().ToPrettyString()); Assert.AreEqual(success, msg.ToDocument()); }
public void Can_differentiate_multiple_plugs_and_their_call_counts() { var bar = MockPlug.Setup(new XUri("http://mock/foo")).At("bar").ExpectAtLeastOneCall(); var eek = MockPlug.Setup(new XUri("http://mock/foo")).At("eek").With("a", "b").ExpectCalls(Times.Exactly(3)); var baz = MockPlug.Setup(new XUri("http://mock/foo")).At("eek").With("b", "c").ExpectAtLeastOneCall(); Assert.IsTrue(Plug.New("http://mock/foo/bar").Get(new Result <DreamMessage>()).Wait().IsSuccessful); Assert.IsTrue(Plug.New("http://mock/foo/bar").Get(new Result <DreamMessage>()).Wait().IsSuccessful); Assert.IsTrue(Plug.New("http://mock/foo/eek").With("a", "b").Get(new Result <DreamMessage>()).Wait().IsSuccessful); Assert.IsTrue(Plug.New("http://mock/foo/eek").With("a", "b").Get(new Result <DreamMessage>()).Wait().IsSuccessful); Assert.IsTrue(Plug.New("http://mock/foo/eek").With("a", "b").Get(new Result <DreamMessage>()).Wait().IsSuccessful); Assert.IsTrue(Plug.New("http://mock/foo/eek").With("b", "c").Get(new Result <DreamMessage>()).Wait().IsSuccessful); bar.Verify(); baz.Verify(); eek.Verify(); }
public void Can_mock_a_request_with_a_stream_body() { var tmp = Path.GetTempFileName(); var payload = "blahblah"; File.WriteAllText(tmp, payload); var message = DreamMessage.FromFile(tmp); var uri = new XUri("http://mock/post/stream"); MockPlug.Setup(uri).Verb("POST") .WithMessage(m => m.ToText() == payload) .ExpectAtLeastOneCall(); var response = Plug.New(uri).Post(message, new Result <DreamMessage>()).Wait(); response.AssertSuccess(); MockPlug.VerifyAll(1.Seconds()); }
public void MockPlug_without_call_expectation_does_not_throw_on_Verify() { var mock = MockPlug.Setup(new XUri("http://mock/foo")); mock.Verify(TimeSpan.FromSeconds(3)); }
public void Can_verify_lack_of_call() { var mock = MockPlug.Setup(new XUri("http://mock/foo")).ExpectCalls(Times.Never()); mock.Verify(TimeSpan.FromSeconds(3)); }