public void ApplyGet200() { var connector = new BasicConnector(HttpTransportMock.Object, Digest, Secret); ResourceMock.SetupProperty(r => r.Location, Url); ResourceMock.SetupGet(r => r.ContentType).Returns(ContentType); var request = (HttpWebRequest)WebRequest.Create(Url); HttpTransportMock.Setup(t => t.CreateRequest(Url)).Returns(request); ResponseMock.SetupGet(r => r.Data).Returns(PayLoad); HttpTransportMock.Setup(t => t.Send(request, PayLoad)).Returns(ResponseMock.Object); connector.Apply(HttpMethod.Get, ResourceMock.Object, null); HttpTransportMock.Verify(t => t.CreateRequest(Url), Times.Once()); HttpTransportMock.Verify(t => t.Send(request, PayLoad), Times.Once()); Assert.That(request.Method, Is.EqualTo(HttpMethod.Get.ToString().ToUpper())); Assert.That(request.UserAgent, Is.EqualTo(connector.UserAgent.ToString())); var authorization = string.Format("Klarna {0}", Digest.Create(string.Concat(PayLoad, Secret))); Assert.That(request.Headers["Authorization"], Is.EqualTo(authorization)); Assert.That(request.Accept, Is.EqualTo(ContentType)); Assert.That(request.ContentType, Is.Null); }
public void CreateDigest() { var article = new Dictionary <string, object>() { { "artno", "id_1" }, { "name", "product" }, { "price", 12345 }, { "vat", 25 }, { "qty", 1 } }; var goodsList = new List <Dictionary <string, object> >() { article }; var data = new Dictionary <string, object>() { { "eid", 1245 }, { "goods_list", goodsList }, { "currency", "SEK" }, { "country", "SWE" }, { "language", "SV" } }; var json = JsonConvert.SerializeObject(data); var digest = new Digest(); var actual = digest.Create(string.Concat(json, "mySecret")); const string Expected = "MO/6KvzsY2y+F+/SexH7Hyg16gFpsPDx5A2PtLZd0Zs="; Assert.That(actual, Is.EqualTo(Expected)); }
public void ApplyGet303And503() { var connector = new BasicConnector(HttpTransportMock.Object, Digest, Secret); var newLocation = new Uri("http://NewLocation.com"); ResourceMock.SetupProperty(r => r.Location, Url); ResourceMock.SetupGet(r => r.ContentType).Returns(ContentType); // First request and response var request1 = (HttpWebRequest)WebRequest.Create(Url); HttpTransportMock.Setup(t => t.CreateRequest(Url)).Returns(request1); var responseMock1 = new Mock <IHttpResponse>(); responseMock1.SetupGet(r => r.StatusCode).Returns(HttpStatusCode.SeeOther); responseMock1.Setup(r => r.Header("Location")).Returns(newLocation.OriginalString); responseMock1.SetupGet(r => r.Data).Returns(PayLoad); HttpTransportMock.Setup(t => t.Send(request1, PayLoad)).Returns(responseMock1.Object); // Second request and response var request2 = (HttpWebRequest)WebRequest.Create(newLocation); HttpTransportMock.Setup(t => t.CreateRequest(newLocation)).Returns(request2); var responseMock2 = new Mock <IHttpResponse>(); responseMock2.SetupGet(r => r.StatusCode).Returns(HttpStatusCode.ServiceUnavailable); responseMock2.SetupGet(r => r.Data).Returns(PayLoad); HttpTransportMock.Setup(t => t.Send(request2, PayLoad)).Returns(responseMock2.Object); var ex = Assert.Throws <ConnectorException>( () => connector.Apply(HttpMethod.Get, ResourceMock.Object, null)); var code = (HttpStatusCode)ex.Data["HttpStatusCode"]; Assert.That(code, Is.Not.Null); Assert.That((int)code, Is.EqualTo(503)); HttpTransportMock.Verify(t => t.CreateRequest(Url), Times.Once()); HttpTransportMock.Verify(t => t.Send(request1, PayLoad), Times.Once()); HttpTransportMock.Verify(t => t.CreateRequest(newLocation), Times.Once()); HttpTransportMock.Verify(t => t.Send(request2, PayLoad), Times.Once()); Assert.That(request1.Method, Is.EqualTo(HttpMethod.Get.ToString().ToUpper())); Assert.That(request1.UserAgent, Is.EqualTo(connector.UserAgent.ToString())); var authorization = string.Format("Klarna {0}", Digest.Create(string.Concat(PayLoad, Secret))); Assert.That(request1.Headers["Authorization"], Is.EqualTo(authorization)); Assert.That(request1.Accept, Is.EqualTo(ContentType)); Assert.That(request1.ContentType, Is.Null); Assert.That(request2.Method, Is.EqualTo(HttpMethod.Get.ToString().ToUpper())); Assert.That(request2.UserAgent, Is.EqualTo(connector.UserAgent.ToString())); Assert.That(request2.Headers["Authorization"], Is.EqualTo(authorization)); Assert.That(request2.Accept, Is.EqualTo(ContentType)); Assert.That(request2.ContentType, Is.Null); Assert.That(ResourceMock.Object.Location.OriginalString, Is.EqualTo(Url.OriginalString)); }
public void ApplyPost302EnsureNotRedirected() { var connector = new BasicConnector(HttpTransportMock.Object, Digest, Secret); var newLocation = new Uri("http://NewLocation.com"); ResourceMock.SetupProperty(r => r.Location, Url); ResourceMock.SetupGet(r => r.ContentType).Returns(ContentType); var resourceData = new Dictionary <string, object>() { { "Year", 2012 } }; ResourceMock.Setup(r => r.Marshal()).Returns(resourceData); // First request and response var request1 = (HttpWebRequest)WebRequest.Create(Url); HttpTransportMock.Setup(t => t.CreateRequest(Url)).Returns(request1); var responseMock1 = new Mock <IHttpResponse>(); responseMock1.SetupGet(r => r.StatusCode).Returns(HttpStatusCode.Found); responseMock1.Setup(r => r.Header("Location")).Returns(newLocation.OriginalString); PayLoad = "{\"Year\":2012}"; responseMock1.SetupGet(r => r.Data).Returns(PayLoad); HttpTransportMock.Setup(t => t.Send(request1, PayLoad)).Returns(responseMock1.Object); // Second request and response var request2 = (HttpWebRequest)WebRequest.Create(newLocation); HttpTransportMock.Setup(t => t.CreateRequest(newLocation)).Returns(request2); var responseMock2 = new Mock <IHttpResponse>(); responseMock2.SetupGet(r => r.StatusCode).Returns(HttpStatusCode.ServiceUnavailable); responseMock2.SetupGet(r => r.Data).Returns(PayLoad); HttpTransportMock.Setup(t => t.Send(request2, PayLoad)).Returns(responseMock2.Object); connector.Apply(HttpMethod.Post, ResourceMock.Object, null); HttpTransportMock.Verify(t => t.CreateRequest(Url), Times.Once()); HttpTransportMock.Verify(t => t.Send(request1, PayLoad), Times.Once()); HttpTransportMock.Verify(t => t.CreateRequest(newLocation), Times.Never()); HttpTransportMock.Verify(t => t.Send(request2, PayLoad), Times.Never()); Assert.That(request1.Method, Is.EqualTo(HttpMethod.Post.ToString().ToUpper())); Assert.That(request1.UserAgent, Is.EqualTo(connector.UserAgent.ToString())); var authorization = string.Format("Klarna {0}", Digest.Create(string.Concat(PayLoad, Secret))); Assert.That(request1.Headers["Authorization"], Is.EqualTo(authorization)); Assert.That(request1.Accept, Is.EqualTo(ContentType)); Assert.That(request1.ContentType, Is.EqualTo(ContentType)); Assert.That(ResourceMock.Object.Location.OriginalString, Is.EqualTo(Url.OriginalString)); }
public void CreateAndCreateFromString(HashType hashType, string secretKey, string hash) { const string data = "Hello"; var digest1 = Digest.Create(hashType, data, secretKey); Assert.AreEqual(hash, digest1.Hash); Assert.AreEqual(data, digest1.Data); // Check its reversable var digest1String = digest1.ToString(); var digest2 = Digest.CreateFromString(digest1String, secretKey); Assert.AreEqual(digest1.Data, digest2.Data); Assert.AreEqual(digest1.Hash, digest2.Hash); }
public void ApplyPost201UpdatedLocation() { var connector = new BasicConnector(HttpTransportMock.Object, Digest, Secret); ResourceMock.SetupProperty(r => r.Location, Url); ResourceMock.SetupGet(r => r.ContentType).Returns(ContentType); var resourceData = new Dictionary <string, object>() { { "Year", 2012 } }; ResourceMock.Setup(r => r.Marshal()).Returns(resourceData); var request = (HttpWebRequest)WebRequest.Create(Url); HttpTransportMock.Setup(t => t.CreateRequest(Url)).Returns(request); PayLoad = "{\"Year\":2012}"; ResponseMock.SetupGet(r => r.Data).Returns(PayLoad); ResponseMock.SetupGet(r => r.StatusCode).Returns(HttpStatusCode.Created); const string UpdatedLocation = "http://NewLocation.com"; ResponseMock.Setup(r => r.Header("Location")).Returns(UpdatedLocation); HttpTransportMock.Setup(t => t.Send(request, PayLoad)).Returns(ResponseMock.Object); connector.Apply(HttpMethod.Post, ResourceMock.Object, null); HttpTransportMock.Verify(t => t.CreateRequest(Url), Times.Once()); HttpTransportMock.Verify(t => t.Send(request, PayLoad), Times.Once()); Assert.That(request.Method, Is.EqualTo(HttpMethod.Post.ToString().ToUpper())); Assert.That(request.UserAgent, Is.EqualTo(connector.UserAgent.ToString())); var authorization = string.Format("Klarna {0}", Digest.Create(string.Concat(PayLoad, Secret))); Assert.That(request.Headers["Authorization"], Is.EqualTo(authorization)); Assert.That(request.Accept, Is.EqualTo(ContentType)); Assert.That(request.ContentType, Is.EqualTo(ContentType)); Assert.That(ResourceMock.Object.Location.OriginalString, Is.EqualTo(UpdatedLocation)); }