diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/CloudErrorTransform.json b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/CloudErrorTransform.json
new file mode 100644
index 0000000..ca67260
--- /dev/null
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/CloudErrorTransform.json
@@ -0,0 +1,19 @@
+{
+ "type": "System.Management.Automation.ActionPreferenceStopException",
+ "transforms": [
+ {
+ "query": "select",
+ "property": "ErrorRecord",
+ "result": "System.Management.Automation.ErrorRecord"
+ },
+ {
+ "query": "select",
+ "property": "Exception",
+ "result": "Microsoft.Rest.Azure.CloudException"
+ },
+ {
+ "query": "select",
+ "property": "Body"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/PSSwagger.LTF.ConsoleServer.csproj b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/PSSwagger.LTF.ConsoleServer.csproj
index 64e6192..5c58507 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/PSSwagger.LTF.ConsoleServer.csproj
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/PSSwagger.LTF.ConsoleServer.csproj
@@ -10,9 +10,12 @@
-
+
+
+ PreserveNewest
+
\ No newline at end of file
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/Program.cs b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/Program.cs
index 31a21d2..e6b1b62 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/Program.cs
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/Program.cs
@@ -11,6 +11,7 @@ namespace PSSwagger.LTF.ConsoleServer
using Lib.PowerShell;
using Lib.ServiceTracing;
using Newtonsoft.Json;
+ using PSSwagger.LTF.Lib.Transforms;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -81,7 +82,8 @@ static void Main(string[] args)
RunspaceManager = runspace,
ModulePath = serverArgs.ModulePath,
TracingManager = new ServiceTracingManager(),
- SpecificationPaths = serverArgs.SpecificationPaths
+ SpecificationPaths = serverArgs.SpecificationPaths,
+ ObjectTransforms = serverArgs.GetTransforms()
});
try
@@ -109,6 +111,7 @@ class ServerArgs
public List Errors { get; set; }
public bool EnablePipeLog { get; set; }
public bool EnableEventLog { get; set; }
+ public List TransformDefinitionFiles { get; set; }
public ServerArgs()
{
@@ -118,6 +121,18 @@ public ServerArgs()
this.LogPipeName = "psswagger-ltf-consoleserver";
this.EnablePipeLog = true;
this.EnableEventLog = false;
+ this.TransformDefinitionFiles = new List();
+ }
+
+ public IList GetTransforms()
+ {
+ List transforms = new List();
+ foreach (string file in this.TransformDefinitionFiles)
+ {
+ transforms.Add(JsonConvert.DeserializeObject(File.ReadAllText(file)));
+ }
+
+ return transforms;
}
public ServerArgs Parse(string[] args)
@@ -166,6 +181,10 @@ public ServerArgs Parse(string[] args)
case "logpipename":
this.LogPipeName = arg;
break;
+ case "transform":
+ // Let's merge these instead of overwriting maybe?
+ this.TransformDefinitionFiles.Add(arg);
+ break;
default:
this.Errors.Add(String.Format(CultureInfo.CurrentCulture, "Unknown argument: {0}", lastArg));
break;
@@ -216,6 +235,12 @@ public ServerArgs Parse(string jsonFilePath)
{
this.SpecificationPaths = fromFile.SpecificationPaths;
}
+
+ if (fromFile.TransformDefinitionFiles != null && fromFile.TransformDefinitionFiles.Count > 0)
+ {
+ // Let's merge these instead of overwriting maybe?
+ this.TransformDefinitionFiles.AddRange(fromFile.TransformDefinitionFiles);
+ }
}
return this;
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/config.json b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/config.json
index 7a73a41..8506565 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/config.json
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.ConsoleServer/config.json
@@ -1,2 +1,3 @@
{
+ "TransformDefinitionFiles": [ "CloudErrorTransform.json" ]
}
\ No newline at end of file
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.IO.Lib/PSSwagger.LTF.IO.Lib.csproj b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.IO.Lib/PSSwagger.LTF.IO.Lib.csproj
index 58dd87f..93881b2 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.IO.Lib/PSSwagger.LTF.IO.Lib.csproj
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.IO.Lib/PSSwagger.LTF.IO.Lib.csproj
@@ -3,7 +3,7 @@
net452
-
+
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/LiveTestServer.cs b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/LiveTestServer.cs
index d80b65c..d53ffb3 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/LiveTestServer.cs
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/LiveTestServer.cs
@@ -16,6 +16,7 @@ namespace PSSwagger.LTF.Lib
using System.IO;
using System.Threading;
using System.Threading.Tasks;
+ using Transforms;
public class LiveTestServerStartParams
{
@@ -27,9 +28,11 @@ public class LiveTestServerStartParams
public IList SpecificationPaths { get; set; }
public LiveTestCredentialFactory CredentialFactory { get; set; }
public ServiceTracingManager TracingManager { get; set; }
+ public IList ObjectTransforms { get; set; }
public LiveTestServerStartParams()
{
this.SpecificationPaths = new List();
+ this.ObjectTransforms = new List();
}
}
@@ -187,7 +190,7 @@ public async Task RunAsync()
}
else
{
- response = msg.MakeResponse(commandResult, serviceTracer, this.parameters.Logger);
+ response = msg.MakeResponse(commandResult, serviceTracer, parameters.ObjectTransforms, this.parameters.Logger);
}
}
catch (Exception exRequest)
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestError.cs b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestError.cs
index 068e9f4..46985d9 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestError.cs
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestError.cs
@@ -3,6 +3,9 @@
// Licensed under the MIT license.
namespace PSSwagger.LTF.Lib.Messages
{
+ using Microsoft.Rest;
+ using System.Net.Http;
+
///
/// Error response from test operation.
///
@@ -10,11 +13,7 @@ public class LiveTestError
{
public long Code { get; set; }
public string Message { get; set; }
- public LiveTestResult Data { get; set; }
-
- public LiveTestError()
- {
- this.Data = new LiveTestResult();
- }
+ public object Data { get; set; }
+ public HttpResponseMessage HttpResponse { get; set; }
}
}
\ No newline at end of file
diff --git a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestRequest.cs b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestRequest.cs
index 950bb2a..bb0b727 100644
--- a/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestRequest.cs
+++ b/PSSwagger.LiveTestFramework/src/PSSwagger.LTF.Lib/Messages/LiveTestRequest.cs
@@ -11,6 +11,7 @@ namespace PSSwagger.LTF.Lib.Messages
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
+ using Transforms;
///
/// An Azure Live Test Framework JSON-RPC request.
@@ -28,7 +29,7 @@ public class LiveTestRequest : JsonRpcBase
[JsonIgnore]
public bool HttpResponse { get; set; }
- public LiveTestResponse MakeResponse(CommandExecutionResult commandResult, IServiceTracer tracer, Logger logger)
+ public LiveTestResponse MakeResponse(CommandExecutionResult commandResult, IServiceTracer tracer, IList transforms, Logger logger)
{
LiveTestResponse response = MakeBaseResponse();
if (commandResult.HadErrors)
@@ -41,7 +42,31 @@ public LiveTestResponse MakeResponse(CommandExecutionResult commandResult, IServ
response.Error = new LiveTestError();
response.Error.Code = InvalidRequest;
- response.Error.Data = GetLiveTestResult(commandResult.Errors, tracer);
+ List