示例#1
0
        public void ResponseParse_ActivationStarted_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(ACTIVATION_STARTED);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(1, responseFromString.Context.Properties.Count);
            // Property 1
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[0], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            Assert.NotNull(responseFromString.Event);
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA_SCENECONTROLLER, HeaderNames.ACTIVATION_STARTED);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(SceneStartedResponsePayload), responseFromString.GetPayloadType());
            SceneStartedResponsePayload p = e.Payload as SceneStartedResponsePayload;

            Assert.NotNull(p.Cause);
            Assert.Equal(CauseTypes.VOICE_INTERACTION, p.Cause.Type);
            Assert.Equal(DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), p.Timestamp);
        }
        public void ResponseParse_TemperatureSensor_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(TEMPERATURESENSOR_RESPONSE);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(2, responseFromString.Context.Properties.Count);
            // Property 1
            TestFunctionsV3.TestContextProperty(responseFromString.Context.Properties[0], PropertyNames.TEMPERATURE,
                                                Namespaces.ALEXA_TEMPERATURESENSOR, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null);
            Assert.Equal(typeof(Setpoint), responseFromString.Context.Properties[0].Value.GetType());
            Setpoint s = responseFromString.Context.Properties[0].Value as Setpoint;

            Assert.Equal(24.0, s.Value);
            Assert.Equal(Scale.CELSIUS, s.Scale);
            // Property 2
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[1], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            Assert.NotNull(responseFromString.Event);
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.STATE_REPORT);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), responseFromString.GetPayloadType());
        }
示例#3
0
        public void ResponseCreation_ChannelResponse_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(CHANGE_CHANNEL);
            SmartHomeResponse response = new SmartHomeResponse(request.Directive.Header);

            //Context
            Assert.Null(response.Context);
            response.Context = new Context();
            Channel  channel = new Channel("1234", "callsign1", "callsign2");
            Property p       = new Property(Namespaces.ALEXA_CHANNELCONTROLLER, PropertyNames.CHANNEL, channel,
                                            DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            Property p2 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, new ConnectivityPropertyValue(ConnectivityModes.OK),
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p);
            response.Context.Properties.Add(p2);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header);
            Assert.Null(e.Endpoint);
            Scope s = new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon");

            e.Endpoint = new Endpoint("endpoint-001", s);
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), e.Payload.GetType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("ChannelResponse", response);
        }
示例#4
0
        public void ResponseParse_ChangeReport_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(CHANGE_REPORT);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(2, responseFromString.Context.Properties.Count);
            // Property 1
            TestFunctionsV3.TestContextProperty(responseFromString.Context.Properties[0], PropertyNames.BRIGHTNESS, Namespaces.ALEXA_BRIGHTNESSCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null);
            Assert.Equal(typeof(System.Int32), responseFromString.Context.Properties[0].Value.GetType());
            Assert.Equal(85, responseFromString.Context.Properties[0].Value);
            // Property 2
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[1], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            Assert.NotNull(responseFromString.Event);
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.CHANGE_REPORT);
            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(ChangeReportPayload), e.Payload.GetType());
            ChangeReportPayload p = e.Payload as ChangeReportPayload;

            Assert.NotNull(p.Change);
            Assert.NotNull(p.Change.Cause);
            Assert.Equal(CauseTypes.PHYSICAL_INTERACTION, p.Change.Cause.Type);
            Assert.NotNull(p.Change.Properties);
            Assert.Equal(1, p.Change.Properties.Count);
            TestFunctionsV3.TestContextProperty(p.Change.Properties[0], PropertyNames.POWER_STATE, Namespaces.ALEXA_POWERCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null);
            Assert.Equal(typeof(PowerStates), p.Change.Properties[0].Value.GetType());
            Assert.Equal(PowerStates.ON, p.Change.Properties[0].Value);
        }
示例#5
0
        public void ResponseCreation_Deactivate_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(DEACTIVATE);
            SmartHomeResponse response = new SmartHomeResponse(request.Directive.Header);

            Assert.Null(response.Context);
            response.Context = new Context();
            ConnectivityPropertyValue value = new ConnectivityPropertyValue(ConnectivityModes.OK);
            Property p2 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, value,
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p2);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header, Namespaces.ALEXA_SCENECONTROLLER, HeaderNames.DEACTIVATION_STARTED);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(SceneStartedResponsePayload), response.GetPayloadType());
            SceneStartedResponsePayload p = response.Event.Payload as SceneStartedResponsePayload;

            Assert.Null(p.Cause);
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.Cause     = new Cause(CauseTypes.APP_INTERACTION);
            p.Timestamp = DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime();
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("Deactivate", response);
        }
示例#6
0
        public void ResponseCreation_TemperatureOOR_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_T_TEMPERATURE_TRIPLEMODE_REQUEST);
            SmartHomeResponse response = SmartHomeResponse.CreateErrorResponse(request.Directive.Header, ErrorTypes.TEMPERATURE_VALUE_OUT_OF_RANGE);

            Assert.Null(response.Context);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header, Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(TemperatureOutOfRangeErrorPayload), response.GetPayloadType());
            TemperatureOutOfRangeErrorPayload p = response.Event.Payload as TemperatureOutOfRangeErrorPayload;

            Assert.Equal(ErrorTypes.TEMPERATURE_VALUE_OUT_OF_RANGE, p.Type);
            Assert.Null(p.Message);
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.Message = "The requested temperature of -15 is out of range";
            Assert.Null(p.ValidRange);
            p.ValidRange = new TemperatureValidRange(new Setpoint(15.0, Scale.CELSIUS), new Setpoint(20.0, Scale.CELSIUS));
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("TemperatureOOR", response);
        }
        public void ResponseCreation_TemperatureSensor_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(REPORT_STATE);
            SmartHomeResponse response = new SmartHomeResponse(request.Directive.Header);

            Assert.Null(response.Context);
            response.Context = new Context();
            Setpoint s = new Setpoint(24.0, Scale.CELSIUS);
            Property p = new Property(Namespaces.ALEXA_TEMPERATURESENSOR, PropertyNames.TEMPERATURE, 50,
                                      DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            ConnectivityPropertyValue value = new ConnectivityPropertyValue(ConnectivityModes.OK);
            Property p2 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, value,
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p);
            response.Context.Properties.Add(p2);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header, headerName: HeaderNames.STATE_REPORT);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), response.GetPayloadType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("TemperatureSensor", response);
        }
        public void ResponseCreation_CameraStream_Test()
        {
            SmartHomeRequest  requestFromString = JsonConvert.DeserializeObject <SmartHomeRequest>(INIT_CAMERA_STREAMS_REQUEST);
            SmartHomeResponse response          = new SmartHomeResponse(requestFromString.Directive.Header);

            Assert.NotNull(response);
            Assert.Null(response.Context);
            response.Context = new Context();
            response.Context.Properties.Add(new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, new ConnectivityPropertyValue(ConnectivityModes.OK),
                                                         DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200));
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, requestFromString.Directive.Header, Namespaces.ALEXA_CAMERASTREAMCONTROLLER);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(ResponseCameraStreamsPayload), response.GetPayloadType());
            ResponseCameraStreamsPayload p = e.Payload as ResponseCameraStreamsPayload;

            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.CameraStreams = new System.Collections.Generic.List <ResponseCameraStream>();
            p.CameraStreams.Add(new ResponseCameraStream("rtsp://*****:*****@link.to.video:443/feed1.mp4", CameraProtocols.RTSP,
                                                         new Resolution(1920, 1080), CameraAuthorizationTypes.BASIC, VideoCodecs.H264, AudioCodecs.AAC, 30,
                                                         DateTime.Parse("2017-09-27T20:30:30.45Z").ToUniversalTime()));
            p.CameraStreams.Add(new ResponseCameraStream("rtsp://*****:*****@link.to.video:443/feed2.mp4", CameraProtocols.RTSP,
                                                         new Resolution(1280, 720), CameraAuthorizationTypes.DIGEST, VideoCodecs.MPEG2, AudioCodecs.G711,
                                                         30, DateTime.Parse("2017-09-27T20:30:30.45Z").ToUniversalTime()));
            p.ImageURI = "https://*****:*****@link.to.image/image.jpg";
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("CameraStream", response);
        }
示例#9
0
        public void TestRequestedSetpointErrorResponse()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(ERROR_RESPONSE_SETPOINTS_TOO_CLOSE);

            //Context check
            Assert.Null(responseFromString.Context);
            //Event Check
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
            //Endpoint
            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            //Payload
            Assert.Equal(typeof(RequestedSetpointsTooCloseErrorPayload), responseFromString.GetPayloadType());
            RequestedSetpointsTooCloseErrorPayload p = e.Payload as RequestedSetpointsTooCloseErrorPayload;

            Assert.Equal(ErrorTypes.REQUESTED_SETPOINTS_TOO_CLOSE, p.Type);
            Assert.Equal("The requested temperature results in setpoints too close", p.Message);
            Assert.NotNull(p.MinimumTemperatureDelta);
            Assert.Equal(2.0, p.MinimumTemperatureDelta.Value);
            Assert.Equal(Scale.CELSIUS, p.MinimumTemperatureDelta.Scale);
        }
        public void ResponseCreation_ColorTemperatureResponse_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_COLORTEMPERATURE);
            SmartHomeResponse response = new SmartHomeResponse(request.Directive.Header);

            Assert.Null(response.Context);
            response.Context = new Context();
            Color    color = new Color(350.5, 0.7138, 0.6524);
            Property p     = new Property(Namespaces.ALEXA_COLORTEMPERATURECONTROLLER, PropertyNames.COLOR_TEMPERATURE_IN_KELVIN,
                                          5000, DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            ConnectivityPropertyValue value = new ConnectivityPropertyValue(ConnectivityModes.OK);
            Property p2 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, value,
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p);
            response.Context.Properties.Add(p2);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), response.GetPayloadType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("ColorTemperature", response);
        }
示例#11
0
        public void ResponseParse_SetTemperatureTripleMode_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(SET_T_TEMPERATURE_TRIPLEMODE_RESPONSE);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(5, responseFromString.Context.Properties.Count);
            // Property 1
            TestPropertySetpoint(responseFromString.Context.Properties[0], PropertyNames.LOWER_SETPOINT,
                                 Namespaces.ALEXA_THERMOSTATCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null, 68.0, Scale.FAHRENHEIT);
            // Property 2
            TestPropertySetpoint(responseFromString.Context.Properties[1], PropertyNames.TARGET_SETPOINT,
                                 Namespaces.ALEXA_THERMOSTATCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null, 72.0, Scale.FAHRENHEIT);
            // Property 3
            TestPropertySetpoint(responseFromString.Context.Properties[2], PropertyNames.UPPER_SETPOINT,
                                 Namespaces.ALEXA_THERMOSTATCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null, 76.0, Scale.FAHRENHEIT);
            // Property 4
            TestPropertyThermostatMode(responseFromString.Context.Properties[3], DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null, ThermostatModes.AUTO);
            // Property 5
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[4], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            TestFunctionsV3.TestBasicEventWithEmptyPayload(responseFromString, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
                                                           "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", ScopeTypes.BearerToken,
                                                           "access-token-from-Amazon", "endpoint-001");
        }
示例#12
0
 public void TestTempValueOORResponse()
 {
     SmartHomeResponse responseFromString = JsonConvert.DeserializeObject<SmartHomeResponse>(TEMPVALUE_OOR);
     //Context check
     Assert.Null(responseFromString.Context);
     //Event Check
     Assert.Equal(typeof(Event), responseFromString.Event.GetType());
     Event e = responseFromString.Event as Event;
     TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.ERROR_RESPONSE);
     Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
     //Endpoint
     TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
     TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
     //Payload
     Assert.Equal(typeof(TemperatureOutOfRangeErrorPayload), responseFromString.GetPayloadType());
     TemperatureOutOfRangeErrorPayload p = e.Payload as TemperatureOutOfRangeErrorPayload;
     Assert.Equal(ErrorTypes.TEMPERATURE_VALUE_OUT_OF_RANGE, p.Type);
     Assert.Equal("The requested temperature of -15 is out of range", p.Message);
     Assert.NotNull(p.ValidRange);
     Assert.NotNull(p.ValidRange.MaximumValue);
     Assert.Equal(30.0, p.ValidRange.MaximumValue.Value);
     Assert.Equal(Scale.CELSIUS, p.ValidRange.MaximumValue.Scale);
     Assert.NotNull(p.ValidRange.MinimumValue);
     Assert.Equal(15.0, p.ValidRange.MinimumValue.Value);
     Assert.Equal(Scale.CELSIUS, p.ValidRange.MinimumValue.Scale);
 }
示例#13
0
        public void ResponseCreation_SetpointError_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_T_TEMPERATURE_TRIPLEMODE_REQUEST);
            SmartHomeResponse response = SmartHomeResponse.CreateErrorResponse(request.Directive.Header, ErrorTypes.REQUESTED_SETPOINTS_TOO_CLOSE);

            Assert.Null(response.Context);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header, Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(RequestedSetpointsTooCloseErrorPayload), response.GetPayloadType());
            RequestedSetpointsTooCloseErrorPayload p = response.Event.Payload as RequestedSetpointsTooCloseErrorPayload;

            Assert.Equal(ErrorTypes.REQUESTED_SETPOINTS_TOO_CLOSE, p.Type);
            Assert.Null(p.Message);
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.Message = "The requested temperature results in setpoints too close";
            Assert.Null(p.MinimumTemperatureDelta);
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.MinimumTemperatureDelta = new Setpoint(2.0, Scale.CELSIUS);
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("Setpoints too clos", response);
        }
示例#14
0
        public void ResponseCreation_SetTemperatureSingleMode_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_T_TEMPERATURE_SINGLEMODE_REQUEST);
            SmartHomeResponse response = new SmartHomeResponse(request.Directive.Header);

            Assert.Null(response.Context);
            response.Context = new Context();
            Property p = new Property(Namespaces.ALEXA_THERMOSTATCONTROLLER, PropertyNames.TARGET_SETPOINT,
                                      new Setpoint(25.0, Scale.CELSIUS), DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            Property p3 = new Property(Namespaces.ALEXA_COLORTEMPERATURECONTROLLER, PropertyNames.THERMOSTATMODE,
                                       ThermostatModes.HEAT, DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            ConnectivityPropertyValue value = new ConnectivityPropertyValue(ConnectivityModes.OK);
            Property p4 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, value,
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p);
            response.Context.Properties.Add(p3);
            response.Context.Properties.Add(p4);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), response.GetPayloadType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("SetTemperatureSingleMode", response);
        }
示例#15
0
        public void ResponseCreation_Unlock_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(UNLOCK_REQUEST);
            SmartHomeResponse response = new SmartHomeResponse(request.Directive.Header);

            Assert.Null(response.Context);
            response.Context = new Context();
            Property p = new Property(Namespaces.ALEXA_LOCKCONTROLLER, PropertyNames.LOCK_STATE,
                                      LockModes.UNLOCKED, DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            ConnectivityPropertyValue value = new ConnectivityPropertyValue(ConnectivityModes.OK);
            Property p2 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, value,
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p);
            response.Context.Properties.Add(p2);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), response.GetPayloadType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("Lock", response);
        }
示例#16
0
        public static void TestBasicEventWithEmptyPayload(SmartHomeResponse repo, string accessToken, string correlationToken, ScopeTypes endpointType, string endpointToken, string endpointID)
        {
            Assert.NotNull(repo.Event);
            Assert.Equal(typeof(Event), repo.Event.GetType());
            //Header Check
            TestFunctionsV3.TestHeaderV3(repo.Event.Header, accessToken, Namespaces.ALEXA, HeaderNames.RESPONSE);
            Assert.Equal(correlationToken, repo.Event.Header.CorrelationToken);
            //Endpoint Check
            Event e = repo.Event as Event;

            TestFunctionsV3.TestEndpointV3(e.Endpoint, endpointID);
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, endpointToken);
            //Payload Check
            Assert.Equal(typeof(Payload), repo.GetPayloadType());
        }
        public void ResponseParse_PlaybackResponse_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(PLAYBACK_RESPONSE);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(1, responseFromString.Context.Properties.Count);
            // Property 2
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[0], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            TestFunctionsV3.TestBasicEventWithEmptyPayload(responseFromString, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
                                                           "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", ScopeTypes.BearerToken,
                                                           "access-token-from-Amazon", "endpoint-001");
        }
示例#18
0
        public void ResponseCreation_AdjustBrightness_Test()
        {
            SmartHomeRequest  requestFromString = JsonConvert.DeserializeObject <SmartHomeRequest>(ADJUST_BRIGHTNESS_REQUEST);
            SmartHomeResponse response          = new SmartHomeResponse(requestFromString.Directive.Header);

            Assert.NotNull(response);
            Assert.Null(response.Context);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, requestFromString.Directive.Header);
            Assert.Null(e.Endpoint);
            Assert.NotNull(e.Payload);
            Util.Util.WriteJsonToConsole("AdjustBrightness", response);
        }
示例#19
0
        public void ResponseParse_Unlock_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(UNLOCK_RESPONSE);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(2, responseFromString.Context.Properties.Count);
            // Property 1
            TestFunctionsV3.TestContextProperty(responseFromString.Context.Properties[0], PropertyNames.LOCK_STATE, Namespaces.ALEXA_LOCKCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null);
            Assert.Equal(typeof(LockModes), responseFromString.Context.Properties[0].Value.GetType());
            Assert.Equal(LockModes.UNLOCKED, responseFromString.Context.Properties[0].Value);
            // Property 2
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[1], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            TestFunctionsV3.TestBasicEventWithEmptyPayload(responseFromString, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
                                                           "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", ScopeTypes.BearerToken,
                                                           "access-token-from-Amazon", "endpoint-001");
        }
        public void ResponseParse_DefferedResponse_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(DEFFERED);

            //Context check
            Assert.Null(responseFromString.Context);
            //Event Check
            Assert.NotNull(responseFromString.Event);
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.DEFFERED_RESPONSE);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(DefferedResponsePayload), e.Payload.GetType());
            DefferedResponsePayload p = e.Payload as DefferedResponsePayload;

            Assert.Equal(20, p.EstimatedDeferralInSeconds);
        }
示例#21
0
 public void TestGeneralErrorResponse()
 {
     SmartHomeResponse responseFromString = JsonConvert.DeserializeObject<SmartHomeResponse>(GENERAL_ERROR);
     //Context check
     Assert.Null(responseFromString.Context);
     //Event Check
     Assert.Equal(typeof(Event), responseFromString.Event.GetType());
     Event e = responseFromString.Event as Event;
     TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.ERROR_RESPONSE);
     Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
     //Endpoint
     TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
     TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
     //Payload
     Assert.Equal(typeof(ErrorPayload), responseFromString.GetPayloadType());
     ErrorPayload p = e.Payload as ErrorPayload;
     Assert.Equal(ErrorTypes.ENDPOINT_UNREACHABLE, p.Type);
     Assert.Equal("Unable to reach endpoint-001 because it appears to be offline", p.Message);
 }
示例#22
0
        public void ResponseCreation_ChangeReport_Test()
        {
            SmartHomeResponse response = SmartHomeResponse.CreateChangeReportEvent(true);

            Assert.NotNull(response.Event);
            Assert.Null(response.Context);
            response.Context = new Context();
            Property p1 = new Property(Namespaces.ALEXA_BRIGHTNESSCONTROLLER, PropertyNames.BRIGHTNESS, 85,
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);
            Property p2 = new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, new ConnectivityPropertyValue(ConnectivityModes.OK),
                                       DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200);

            response.Context.Properties.Add(p1);
            response.Context.Properties.Add(p2);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            //Header
            Assert.NotNull(e.Header);
            Assert.Equal(Namespaces.ALEXA, e.Header.Namespace);
            Assert.Equal(HeaderNames.CHANGE_REPORT, e.Header.Name);
            e.Header.MessageId = "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4";
            //Payload
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(ChangeReportPayload), e.Payload.GetType());
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            ChangeReportPayload p = e.Payload as ChangeReportPayload;

            p.Change = new Change();
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.Change.Cause = new Cause(CauseTypes.PHYSICAL_INTERACTION);
            p.Change.Properties.Add(new Property(Namespaces.ALEXA_POWERCONTROLLER, PropertyNames.POWER_STATE, PowerStates.ON,
                                                 DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200));
            //Endpoint
            Assert.Null(e.Endpoint);
            //Diffrent Response
            SmartHomeResponse responseWithOutPayload = SmartHomeResponse.CreateChangeReportEvent(false);

            Assert.NotNull(responseWithOutPayload.Event.Payload);
            Assert.Equal(typeof(Payload), responseWithOutPayload.GetPayloadType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("ChangeReport", response);
        }
示例#23
0
 public void TestEndpointLowPowerResponse()
 {
     SmartHomeResponse responseFromString = JsonConvert.DeserializeObject<SmartHomeResponse>(ENDPOINT_LOW_POWER);
     //Context check
     Assert.Null(responseFromString.Context);
     //Event Check
     Assert.Equal(typeof(Event), responseFromString.Event.GetType());
     Event e = responseFromString.Event as Event;
     TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA, HeaderNames.ERROR_RESPONSE);
     Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
     //Endpoint
     TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
     TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
     //Payload
     Assert.Equal(typeof(EndpointLowPowerErrorPayload), responseFromString.GetPayloadType());
     EndpointLowPowerErrorPayload p = e.Payload as EndpointLowPowerErrorPayload;
     Assert.Equal(ErrorTypes.ENDPOINT_LOW_POWER, p.Type);
     Assert.Equal("The lock battery is low", p.Message);
     Assert.Equal(5, p.PercentageState);
 }
示例#24
0
        public void TestGeneralErrorResponse()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(GENERAL_ERROR);

            //Context check
            Assert.Null(responseFromString.Context);
            //Event Check
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestHeaderV3(e.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", e.Header.CorrelationToken);
            //Endpoint
            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            //Payload
            Assert.Equal(typeof(ErrorPayload), responseFromString.GetPayloadType());
            ErrorPayload p = e.Payload as ErrorPayload;

            Assert.Equal(ErrorTypes.THERMOSTAT_IS_OFF, p.Type);
            Assert.Equal("The thermostat is off, cannot turn on due to safety reasons", p.Message);
        }
示例#25
0
        public void ResponseCreation_SetBrightness_Test()
        {
            SmartHomeRequest  requestFromString = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_BRIGHTNESS_REQUEST);
            SmartHomeResponse response          = new SmartHomeResponse(requestFromString.Directive.Header);

            Assert.NotNull(response);
            Assert.Null(response.Context);
            response.Context = new Context();
            response.Context.Properties.Add(new Property(Namespaces.ALEXA_BRIGHTNESSCONTROLLER, PropertyNames.BRIGHTNESS, 75,
                                                         DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200));
            response.Context.Properties.Add(new Property(Namespaces.ALEXA_ENDPOINTHEALTH, PropertyNames.CONNECTIVITY, new ConnectivityPropertyValue(ConnectivityModes.OK),
                                                         DateTime.Parse("2017-09-27T18:30:30.45Z").ToUniversalTime(), 200));
            Assert.NotNull(response.Event);
            Event e = response.Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, requestFromString.Directive.Header);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(Payload), e.Payload.GetType());
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("SetBrightness", response);
        }
        public void ResponseCreation_DefferedResponse_Test()
        {
            SmartHomeResponse response = SmartHomeResponse.CreateDefferedResponse();

            Assert.Null(response.Context);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            Assert.NotNull(e.Header);
            Assert.Equal(Namespaces.ALEXA, e.Header.Namespace);
            Assert.Equal(HeaderNames.DEFFERED_RESPONSE, e.Header.Name);
            Assert.Null(e.Header.CorrelationToken);
            Assert.NotNull(e.Header.MessageId);
            //Payload
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(DefferedResponsePayload), e.Payload.GetType());
            DefferedResponsePayload p = e.Payload as DefferedResponsePayload;

            p.EstimatedDeferralInSeconds = 20;
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("Deffered", response);
        }
示例#27
0
        public void ResponseParse_SetColor_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(SET_COLOR_RESPONSE);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(2, responseFromString.Context.Properties.Count);
            // Property 1
            TestFunctionsV3.TestContextProperty(responseFromString.Context.Properties[0], PropertyNames.COLOR, Namespaces.ALEXA_COLORCONTROLLER, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null);
            Assert.Equal(typeof(Color), responseFromString.Context.Properties[0].Value.GetType());
            Color color = responseFromString.Context.Properties[0].Value as Color;

            Assert.Equal(0.6524, color.Brightness);
            Assert.Equal(350.5, color.Hue);
            Assert.Equal(0.7138, color.Saturation);
            // Property 2
            TestFunctionsV3.TestBasicHealthCheckProperty(responseFromString.Context.Properties[1], ConnectivityModes.OK, DateTime.Parse("2017-09-27T18:30:30.45Z"));
            //Event Check
            TestFunctionsV3.TestBasicEventWithEmptyPayload(responseFromString, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
                                                           "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", ScopeTypes.BearerToken,
                                                           "access-token-from-Amazon", "endpoint-001");
        }
        public void ResponseParse_CameraStream_Test()
        {
            SmartHomeResponse responseFromString = JsonConvert.DeserializeObject <SmartHomeResponse>(CAMERA_STREAM_RESPONSE);

            //Context check
            Assert.NotNull(responseFromString.Context);
            Assert.NotNull(responseFromString.Context.Properties);
            Assert.Equal(1, responseFromString.Context.Properties.Count);
            // Property 1
            TestFunctionsV3.TestContextProperty(responseFromString.Context.Properties[0], PropertyNames.CONNECTIVITY, Namespaces.ALEXA_ENDPOINTHEALTH, DateTime.Parse("2017-09-27T18:30:30.45Z"), 200, null);
            Assert.Equal(responseFromString.Context.Properties[0].Value.GetType(), typeof(ConnectivityPropertyValue));
            ConnectivityPropertyValue conn = responseFromString.Context.Properties[0].Value as ConnectivityPropertyValue;

            Assert.Equal(ConnectivityModes.OK, conn.Value);
            //Event Check
            Assert.NotNull(responseFromString.Event);
            Assert.Equal(typeof(Event), responseFromString.Event.GetType());
            //Header Check
            TestFunctionsV3.TestHeaderV3(responseFromString.Event.Header, "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4", Namespaces.ALEXA_CAMERASTREAMCONTROLLER, HeaderNames.RESPONSE);
            Assert.Equal("dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==", responseFromString.Event.Header.CorrelationToken);
            //Endpoint Check
            Event e = responseFromString.Event as Event;

            TestFunctionsV3.TestEndpointV3(e.Endpoint, "endpoint-001");
            TestFunctionsV3.TestBearerTokenV3(e.Endpoint.Scope, "access-token-from-Amazon");
            //Payload Check
            Assert.Equal(typeof(ResponseCameraStreamsPayload), responseFromString.GetPayloadType());
            ResponseCameraStreamsPayload payload = responseFromString.Event.Payload as ResponseCameraStreamsPayload;

            Assert.NotNull(payload.CameraStreams);
            Assert.Equal(2, payload.CameraStreams.Count);
            TestResponseCameraStream(payload.CameraStreams[0], "rtsp://*****:*****@link.to.video:443/feed1.mp4",
                                     DateTime.Parse("2017-09-27T20:30:30.45Z"), 30, CameraProtocols.RTSP, 1920, 1080, CameraAuthorizationTypes.BASIC, VideoCodecs.H264, AudioCodecs.AAC);
            TestResponseCameraStream(payload.CameraStreams[1], "rtsp://*****:*****@link.to.video:443/feed2.mp4",
                                     DateTime.Parse("2017-09-27T20:30:30.45Z"), 60, CameraProtocols.RTSP, 1280, 720, CameraAuthorizationTypes.DIGEST, VideoCodecs.MPEG2, AudioCodecs.G711);
            Assert.Equal("https://*****:*****@link.to.image/image.jpg", payload.ImageURI);
        }
示例#29
0
        public IActionResult Post([FromBody] SmartHomeRequest smartRequest)
        {
            if (Request.Headers.ContainsKey("Authorization"))
            {
                SmartHomeResponse resp = new SmartHomeResponse();
                resp.requestId           = smartRequest.requestId;
                resp.payload.agentUserId = "josh";

                foreach (var intent in smartRequest.inputs)
                {
                    if (intent.intent == "action.devices.SYNC")
                    {
                        resp.payload.devices = new List <Device>()
                        {
                            Utils.GetDevice()
                        };
                    }
                    else if (intent.intent == "action.devices.EXECUTE")
                    {
                        var commandInfo   = intent.payload.commands.FirstOrDefault();
                        var executionInfo = commandInfo.execution.FirstOrDefault();

                        var commandsResponse = ExecutionFactory.Execute(commandInfo.devices.FirstOrDefault().id, executionInfo.command, executionInfo.parameters);

                        resp.payload.commands = new List <CommandsResponse>()
                        {
                            commandsResponse
                        };
                    }
                }

                return(Ok(resp));
            }

            return(StatusCode(400));
        }
示例#30
0
        public void ResponseCreation_GeneralError_Test()
        {
            SmartHomeRequest  request  = JsonConvert.DeserializeObject <SmartHomeRequest>(SET_T_TEMPERATURE_TRIPLEMODE_REQUEST);
            SmartHomeResponse response = SmartHomeResponse.CreateErrorResponse(request.Directive.Header, ErrorTypes.THERMOSTAT_IS_OFF);

            Assert.Null(response.Context);
            Assert.NotNull(response.Event);
            Assert.Equal(typeof(Event), response.Event.GetType());
            Event e = response.Event as Event;

            TestFunctionsV3.CheckResponseCreatedBaseHeader(e.Header, request.Directive.Header, Namespaces.ALEXA_THERMOSTATCONTROLLER, HeaderNames.ERROR_RESPONSE);
            Assert.Null(e.Endpoint);
            e.Endpoint = new Endpoint("endpoint-001", new NET.JsonObjects.Scopes.BearerToken("access-token-from-Amazon"));
            Assert.NotNull(e.Payload);
            Assert.Equal(typeof(ErrorPayload), response.GetPayloadType());
            ErrorPayload p = response.Event.Payload as ErrorPayload;

            Assert.Equal(ErrorTypes.THERMOSTAT_IS_OFF, p.Type);
            Assert.Null(p.Message);
            Assert.Throws <JsonSerializationException>(() => JsonConvert.SerializeObject(response));
            p.Message = "The thermostat is off, cannot turn on due to safety reasons";
            Assert.NotNull(JsonConvert.SerializeObject(response));
            Util.Util.WriteJsonToConsole("GeneralErrorThermostat", response);
        }