コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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]);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }