public void RegistersAllSubConverters() { GeneratedModule module = new GeneratedModule(null); OperationData test = new OperationData("testoperationid", "Get-Test"); module.Operations["testoperationid"] = test; RuntimeTypeData jsonParmData = new RuntimeTypeData() { Type = typeof(LiveTestRequestConverterTestsObject) }; jsonParmData.Properties["property"] = new ParameterData() { Name = "property", JsonName = "prop", Type = new RuntimeTypeData() { Type = typeof(string) } }; test.Parameters["jsonparm"] = new ParameterData() { Name = "jsonParm", Type = jsonParmData }; LiveTestRequestConverter converter = new LiveTestRequestConverter(module); JsonSerializerSettings settings = new JsonSerializerSettings(); converter.RegisterSelf(settings); // 1. LiveTestRequestConverter // 2. DynamicTypedObjectConverter for LiveTestRequestConverterTestsObject Assert.Equal(2, settings.Converters.Count); }
public void ReservedParameterStaysJObject() { GeneratedModule module = new GeneratedModule(null); OperationData test = new OperationData("testoperationid", "Get-Test"); module.Operations["testoperationid"] = test; test.Parameters["__reserved"] = new ParameterData() { Name = "__reserved", Type = new RuntimeTypeData() { Type = typeof(string) } }; LiveTestRequestConverter converter = new LiveTestRequestConverter(module); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(converter); string json = "{\"method\":\"A.testOperationId\",\"jsonrpc\":\"2.0\",\"id\":\"0\",\"params\":{\"__reserved\":{}}}"; LiveTestRequest request = JsonConvert.DeserializeObject <LiveTestRequest>(json, settings); Assert.NotNull(request); Assert.Equal("0", request.Id); Assert.Equal("2.0", request.JsonRpc); Assert.Equal("A.testOperationId", request.Method); Assert.Equal("testoperationid", request.OperationId); Assert.True(request.Params.ContainsKey("__reserved")); Assert.Equal(typeof(JObject), request.Params["__reserved"].GetType()); }
public void ProcessOperationFromJsonFull() { MockRunspaceManager runspace = new MockRunspaceManager(); GeneratedModule module = new GeneratedModule(runspace); module.Operations["thing_get"] = new OperationData("Thing_Get", "Get-Thing") { Parameters = new Dictionary <string, ParameterData>() { { "parameter", new ParameterData() { Name = "Parameter", Type = new RuntimeTypeData(typeof(GeneratedModuleTestsObject)) } } } }; string json = "{\"method\":\"Things.Thing_Get\",\"params\":{\"__reserved\":{\"credentials\":[{\"x-ps-credtype\":\"commandBased\",\"tenantId\":\"testTenantId\",\"clientId\":\"testClientId\",\"secret\":\"testSecret\"},{\"x-ps-credtype\":\"parameterBased\",\"tenantId\":\"testTenantId\",\"clientId\":\"testClientId\",\"secret\":\"testSecret\"}]},\"parameter\":{\"string\":\"testValue\",\"number\":500,\"object\":{\"decimal\":1.2,\"boolean\":true}}}}"; LiveTestRequestConverter converter = new LiveTestRequestConverter(module); Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings(); converter.RegisterSelf(settings); MockTestCredentialFactory credentialsFactory = new MockTestCredentialFactory(); credentialsFactory.RegisterProvider("commandbased", new CommandBasedCredentialProvider()); credentialsFactory.RegisterProvider("parameterbased", new ParameterBasedCredentialProvider()); LiveTestRequest request = Newtonsoft.Json.JsonConvert.DeserializeObject <LiveTestRequest>(json, settings); CommandExecutionResult result = module.ProcessRequest(request, credentialsFactory); Assert.Equal("Login-Account [parameter {[String testValue] [Number 500] [Object [Decimal 1.2] [Boolean True]]}]", (string)runspace.InvokeHistory[0]); Assert.Equal("Login-Account [parameter {[String testValue] [Number 500] [Object [Decimal 1.2] [Boolean True]]}] [CredentialKey testCredentials]", (string)runspace.InvokeHistory[1]); }
public void ConvertsMappedPropertyOfParameter() { GeneratedModule module = new GeneratedModule(null); OperationData test = new OperationData("testoperationid", "Get-Test"); module.Operations["testoperationid"] = test; RuntimeTypeData jsonParmData = new RuntimeTypeData() { Type = typeof(LiveTestRequestConverterTestsObject) }; jsonParmData.Properties["property"] = new ParameterData() { Name = "property", JsonName = "prop", Type = new RuntimeTypeData() { Type = typeof(string) } }; test.Parameters["jsonparm"] = new ParameterData() { Name = "jsonParm", Type = jsonParmData }; LiveTestRequestConverter converter = new LiveTestRequestConverter(module); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(converter); settings.Converters.Add(new DynamicTypedObjectConverter(jsonParmData)); string json = "{\"method\":\"A.testOperationId\",\"jsonrpc\":\"2.0\",\"id\":\"0\",\"params\":{\"jsonparm\":{\"prop\":\"testValue\"}}}"; LiveTestRequest request = JsonConvert.DeserializeObject <LiveTestRequest>(json, settings); Assert.NotNull(request); Assert.Equal("0", request.Id); Assert.Equal("2.0", request.JsonRpc); Assert.Equal("A.testOperationId", request.Method); Assert.Equal("testoperationid", request.OperationId); Assert.True(request.Params.ContainsKey("jsonparm")); Assert.Equal(typeof(LiveTestRequestConverterTestsObject), request.Params["jsonparm"].GetType()); Assert.Equal("testValue", ((LiveTestRequestConverterTestsObject)request.Params["jsonparm"]).Property); string reserialized = JsonConvert.SerializeObject(request, settings); Assert.Equal(json, reserialized); }
public void ConvertsPrimitiveParameters() { GeneratedModule module = new GeneratedModule(null); OperationData test = new OperationData("testoperationid", "Get-Test"); module.Operations["testoperationid"] = test; test.Parameters["string"] = new ParameterData() { Name = "string", JsonName = "stringparm", Type = new RuntimeTypeData() { Type = typeof(string) } }; test.Parameters["bool"] = new ParameterData() { Name = "bool", JsonName = "boolparm", Type = new RuntimeTypeData() { Type = typeof(bool) } }; test.Parameters["array"] = new ParameterData() { Name = "array", JsonName = "arrayparm", Type = new RuntimeTypeData() { Type = typeof(bool[]) } }; LiveTestRequestConverter converter = new LiveTestRequestConverter(module); JsonSerializerSettings settings = new JsonSerializerSettings(); converter.RegisterSelf(settings); string json = "{\"method\":\"A.testOperationId\",\"jsonrpc\":\"2.0\",\"id\":\"0\",\"params\":{\"stringparm\":\"testValue\",\"boolparm\":true,\"arrayparm\":[true,false]}}"; LiveTestRequest request = JsonConvert.DeserializeObject <LiveTestRequest>(json, settings); Assert.NotNull(request); Assert.Equal("0", request.Id); Assert.Equal("2.0", request.JsonRpc); Assert.Equal("A.testOperationId", request.Method); Assert.Equal("testoperationid", request.OperationId); Assert.True(request.Params.ContainsKey("string")); Assert.Equal(typeof(string), request.Params["string"].GetType()); Assert.Equal("testValue", (string)request.Params["string"]); Assert.True(request.Params.ContainsKey("bool")); Assert.Equal(typeof(bool), request.Params["bool"].GetType()); Assert.True((bool)request.Params["bool"]); Assert.True(request.Params.ContainsKey("array")); Assert.Equal(typeof(bool[]), request.Params["array"].GetType()); Assert.Equal(2, ((bool[])request.Params["array"]).Length); Assert.True(((bool[])request.Params["array"])[0]); Assert.False(((bool[])request.Params["array"])[1]); string reserialized = JsonConvert.SerializeObject(request, settings); Assert.Equal(json, reserialized); }