public void DsfWebPutActivity_Execute_WithInValidWebResponse_ShouldError() { //------------Setup for test-------------------------- const string response = "{\"Location\": \"Paris\",\"Time\": \"May 29, 2013 - 09:00 AM EDT / 2013.05.29 1300 UTC\"," + "\"Wind\": \"from the NW (320 degrees) at 10 MPH (9 KT) (direction variable):0\"," + "\"Visibility\": \"greater than 7 mile(s):0\"," + "\"Temperature\": \"59 F (15 C)\"," + "\"DewPoint\": \"41 F (5 C)\"," + "\"RelativeHumidity\": \"51%\"," + "\"Pressure\": \"29.65 in. Hg (1004 hPa)\"," + "\"Status\": \"Success\"" + "}"; const string invalidResponse = "{\"Location\" \"Paris\",\"Time\": \"May 29, 2013 - 09:00 AM EDT / 2013.05.29 1300 UTC\"," + "\"Wind\": \"from the NW (320 degrees) at 10 MPH (9 KT) (direction variable):0\"," + "\"Visibility\": \"greater than 7 mile(s):0\"," + "\"Temperature\": \"59 F (15 C)\"," + "\"DewPoint\": \"41 F (5 C)\"," + "\"RelativeHumidity\": \"51%\"," + "\"Pressure\": \"29.65 in. Hg (1004 hPa)\"," + "\"Status\": \"Success\"" + ""; var environment = new ExecutionEnvironment(); environment.Assign("[[City]]", "PMB", 0); environment.Assign("[[CountryName]]", "South Africa", 0); var DsfWebPutActivity = new TestDsfWebPutActivity { ResourceCatalog = new Mock <IResourceCatalog>().Object }; var serviceInputs = new List <IServiceInput> { new ServiceInput("CityName", "[[City]]"), new ServiceInput("Country", "[[CountryName]]") }; var serviceOutputs = new List <IServiceOutputMapping> { new ServiceOutputMapping("Location", "[[weather().Location]]", "weather"), new ServiceOutputMapping("Time", "[[weather().Time]]", "weather"), new ServiceOutputMapping("Wind", "[[weather().Wind]]", "weather"), new ServiceOutputMapping("Visibility", "[[Visibility]]", "") }; DsfWebPutActivity.Inputs = serviceInputs; DsfWebPutActivity.Outputs = serviceOutputs; var serviceXml = XmlResource.Fetch("WebService"); using (var service = new WebService(serviceXml) { RequestResponse = response }) { DsfWebPutActivity.OutputDescription = service.GetOutputDescription(); DsfWebPutActivity.ResponseFromWeb = invalidResponse; var dataObjectMock = new Mock <IDSFDataObject>(); dataObjectMock.Setup(o => o.Environment).Returns(environment); dataObjectMock.Setup(o => o.EsbChannel).Returns(new Mock <IEsbChannel>().Object); DsfWebPutActivity.ResourceID = InArgument <Guid> .FromValue(Guid.Empty); DsfWebPutActivity.QueryString = ""; DsfWebPutActivity.PutData = ""; DsfWebPutActivity.SourceId = Guid.Empty; DsfWebPutActivity.Headers = new List <INameValue>(); //------------Execute Test--------------------------- DsfWebPutActivity.Execute(dataObjectMock.Object, 0); //------------Assert Results------------------------- Assert.IsNotNull(DsfWebPutActivity.OutputDescription); Assert.AreEqual(1, environment.Errors.Count); StringAssert.Contains(environment.Errors.ToList()[0], "Invalid character after parsing property name"); } }
public void DsfWebPutActivity_Execute_WithValidTextResponse_ShouldSetVariables() { //------------Setup for test-------------------------- const string response = "{\"Location\": \"Paris\",\"Time\": \"May 29, 2013 - 09:00 AM EDT / 2013.05.29 1300 UTC\"," + "\"Wind\": \"from the NW (320 degrees) at 10 MPH (9 KT) (direction variable):0\"," + "\"Visibility\": \"greater than 7 mile(s):0\"," + "\"Temperature\": \"59 F (15 C)\"," + "\"DewPoint\": \"41 F (5 C)\"," + "\"RelativeHumidity\": \"51%\"," + "\"Pressure\": \"29.65 in. Hg (1004 hPa)\"," + "\"Status\": \"Success\"" + "}"; var environment = new ExecutionEnvironment(); environment.Assign("[[City]]", "PMB", 0); environment.Assign("[[CountryName]]", "South Africa", 0); var DsfWebPutActivity = new TestDsfWebPutActivity { ResourceCatalog = new Mock <IResourceCatalog>().Object }; var serviceInputs = new List <IServiceInput> { new ServiceInput("CityName", "[[City]]"), new ServiceInput("Country", "[[CountryName]]") }; var serviceOutputs = new List <IServiceOutputMapping> { new ServiceOutputMapping("Response", "[[Response]]", "") }; DsfWebPutActivity.Inputs = serviceInputs; DsfWebPutActivity.Outputs = serviceOutputs; var serviceXml = XmlResource.Fetch("WebService"); using (var service = new WebService(serviceXml) { RequestResponse = response }) { DsfWebPutActivity.OutputDescription = service.GetOutputDescription(); DsfWebPutActivity.ResponseFromWeb = response; var dataObjectMock = new Mock <IDSFDataObject>(); dataObjectMock.Setup(o => o.Environment).Returns(environment); dataObjectMock.Setup(o => o.EsbChannel).Returns(new Mock <IEsbChannel>().Object); DsfWebPutActivity.ResourceID = InArgument <Guid> .FromValue(Guid.Empty); DsfWebPutActivity.QueryString = ""; DsfWebPutActivity.PutData = ""; DsfWebPutActivity.SourceId = Guid.Empty; DsfWebPutActivity.Headers = new List <INameValue>(); DsfWebPutActivity.OutputDescription = new OutputDescription(); DsfWebPutActivity.OutputDescription.DataSourceShapes.Add(new DataSourceShape { Paths = new List <IPath> { new StringPath { ActualPath = "[[Response]]", OutputExpression = "[[Response]]" } } }); //------------Execute Test--------------------------- DsfWebPutActivity.Execute(dataObjectMock.Object, 0); //------------Assert Results------------------------- Assert.IsNotNull(DsfWebPutActivity.OutputDescription); Assert.AreEqual(response, ExecutionEnvironment.WarewolfEvalResultToString(environment.Eval("[[Response]]", 0))); } }