def setUp(self):
     self.request_envelope = RequestEnvelope()
     self.context = Context()
     self.system = SystemState()
     self.user = User()
     self.device = Device()
     self.person = Person()
Esempio n. 2
0
    def setUp(self):
        self.test_locale = "foo_locale"
        self.test_request_type = "LaunchRequest"
        self.test_dialog_state = DialogState.COMPLETED
        self.test_intent_name = "foo_intent"
        self.test_slot_name = "foo_slot"
        self.test_slot_value = "foo_slot_value"
        self.test_slot = Slot(name=self.test_slot_name,
                              value=self.test_slot_value)
        self.test_api_access_token = "foo_api_access_token"
        self.test_access_token = "foo_account_linking_access_token"
        self.test_device_id = "foo_device_id"
        self.test_supported_interfaces = SupportedInterfaces(
            display=DisplayInterface(template_version="test_template",
                                     markup_version="test_markup"))
        self.test_new_session = False

        self.test_launch_request = LaunchRequest(locale=self.test_locale)
        self.test_intent_request = IntentRequest(
            dialog_state=self.test_dialog_state,
            intent=Intent(name=self.test_intent_name,
                          slots={
                              self.test_slot_name:
                              Slot(name=self.test_slot_name,
                                   value=self.test_slot_value)
                          }))
        self.test_request_envelope = RequestEnvelope(
            session=Session(new=self.test_new_session),
            context=Context(
                system=SystemState(user=User(
                    access_token=self.test_access_token),
                                   api_access_token=self.test_api_access_token,
                                   device=Device(device_id=self.test_device_id,
                                                 supported_interfaces=self.
                                                 test_supported_interfaces))))
Esempio n. 3
0
def create_request_envelope(session_attributes: Dict[str, Any],
                            request: Request) -> RequestEnvelope:
    """Creates a request envelope."""
    application = Application(application_id=APPLICATION_ID)
    user = User(user_id=USER_ID,
                access_token=None,
                permissions=Permissions(consent_token=None))
    request_envelope = RequestEnvelope(
        version="1.0",
        session=Session(new=False,
                        session_id=SESSION_ID,
                        user=user,
                        attributes=session_attributes,
                        application=application),
        context=Context(system=SystemState(
            application=application,
            user=user,
            device=Device(device_id=DEVICE_ID,
                          supported_interfaces=SupportedInterfaces(
                              audio_player=AudioPlayerInterface(),
                              display=None,
                              video_app=None)),
            api_endpoint=API_ENDPOINT,
            api_access_token=None)),
        request=request)

    return request_envelope
    def test_viewport_map_to_unknown_for_no_viewport(self):
        viewport_state = None
        test_request_env = RequestEnvelope(
            context=Context(
                viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env)
                is viewport.ViewportProfile.UNKNOWN_VIEWPORT_PROFILE), (
            "Viewport profile couldn't resolve UNKNOWN_VIEWPORT_PROFILE")
Esempio n. 5
0
    def test_viewport_map_to_tv_landscape_medium(self):
        viewport_state = ViewportState(shape=Shape.RECTANGLE,
                                       dpi=float(320),
                                       current_pixel_width=float(960),
                                       current_pixel_height=float(600))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env) is
                viewport.ViewportProfile.TV_LANDSCAPE_MEDIUM), (
                    "Viewport profile couldn't resolve TV_LANDSCAPE_MEDIUM")
Esempio n. 6
0
    def test_viewport_map_to_mobile_portrait_medium(self):
        viewport_state = ViewportState(shape=Shape.RECTANGLE,
                                       dpi=float(240),
                                       current_pixel_width=float(600),
                                       current_pixel_height=float(960))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env) is
                viewport.ViewportProfile.MOBILE_PORTRAIT_MEDIUM), (
                    "Viewport profile couldn't resolve MOBILE_PORTRAIT_MEDIUM")
Esempio n. 7
0
    def test_viewport_map_to_mobile_landscape_small(self):
        viewport_state = ViewportState(shape=Shape.RECTANGLE,
                                       dpi=float(240),
                                       current_pixel_width=float(600),
                                       current_pixel_height=float(300))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env) is
                viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL), (
                    "Viewport profile couldn't resolve MOBILE_LANDSCAPE_SMALL")
Esempio n. 8
0
    def test_viewport_map_to_hub_landscape_large(self):
        viewport_state = ViewportState(shape=Shape.RECTANGLE,
                                       dpi=float(160),
                                       current_pixel_width=float(1280),
                                       current_pixel_height=float(960))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env) is
                viewport.ViewportProfile.HUB_LANDSCAPE_LARGE), (
                    "Viewport profile couldn't resolve HUB_LANDSCAPE_LARGE")
Esempio n. 9
0
    def test_viewport_map_to_hub_round_small(self):
        viewport_state = ViewportState(shape=Shape.ROUND,
                                       dpi=float(160),
                                       current_pixel_width=float(300),
                                       current_pixel_height=float(300))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env) is
                viewport.ViewportProfile.HUB_ROUND_SMALL), (
                    "Viewport profile couldn't resolve HUB_ROUND_SMALL")
Esempio n. 10
0
    def test_viewport_map_to_unknown(self):
        viewport_state = ViewportState(shape=Shape.ROUND,
                                       dpi=float(240),
                                       current_pixel_width=float(600),
                                       current_pixel_height=float(600))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (
            viewport.get_viewport_profile(test_request_env) is
            viewport.ViewportProfile.UNKNOWN_VIEWPORT_PROFILE), (
                "Viewport profile couldn't resolve UNKNOWN_VIEWPORT_PROFILE")
Esempio n. 11
0
    def get_context_data(self):
        """
        Creates a context according to the skill_settings
        Returns: (Context) the context

        """
        context = Context(SystemState(application=self.application, user=self.user,
                                      device=Device(self.skill_settings.device_id,
                                                    self.skill_settings.supported_interfaces),
                                      api_endpoint=self.skill_settings.api_endpoint,
                                      api_access_token=str(uuid.uuid4())),
                          AudioPlayerState(player_activity=PlayerActivity.IDLE))
        return context
Esempio n. 12
0
    def test_skill_invoke_throw_exception_when_skill_id_doesnt_match(self):
        skill_config = self.create_skill_config()
        skill_config.skill_id = "123"
        mock_request_envelope = RequestEnvelope(context=Context(
            system=SystemState(application=Application(
                application_id="test"))))
        skill = Skill(skill_configuration=skill_config)

        with self.assertRaises(AskSdkException) as exc:
            skill.invoke(request_envelope=mock_request_envelope, context=None)

        assert "Skill ID Verification failed" in str(exc.exception), (
            "Skill invocation didn't throw verification error when Skill ID "
            "doesn't match Application ID")
Esempio n. 13
0
    def test_skill_invoke_set_service_client_factory_if_api_client_provided(
            self):
        session = Session()
        mock_request_envelope = RequestEnvelope(context=Context(
            system=SystemState(application=Application(application_id="test"),
                               api_access_token="test_api_access_token",
                               api_endpoint="test_api_endpoint")),
                                                session=session)

        self.mock_handler_adapter.supports.return_value = True
        self.mock_handler_adapter.execute.return_value = None

        skill_config = self.create_skill_config()
        skill_config.skill_id = "test"
        skill_config.api_client = "test_api_client"
        skill = CustomSkill(skill_configuration=skill_config)

        skill.invoke(request_envelope=mock_request_envelope, context=None)

        called_args, called_kwargs = self.mock_request_mapper.get_request_handler_chain.call_args
        test_handler_input = called_args[0]

        assert test_handler_input.service_client_factory is not None, (
            "Service Client Factory not initialized when api client is "
            "provided in skill configuration, "
            "during skill invocation")
        assert test_handler_input.service_client_factory.api_configuration.api_client == "test_api_client", (
            "Api Client value in Service Client Factory different than the "
            "one provided in skill configuration")
        assert test_handler_input.service_client_factory.api_configuration.authorization_value == \
            "test_api_access_token", ("Api Access Token value in Service "
                                      "Client Factory different than the one "
                                      "present "
                                      "in request envelope")
        assert test_handler_input.service_client_factory.api_configuration.api_endpoint == \
            "test_api_endpoint", ("Api Endpoint value in Service Client "
                                  "Factory different than the one present "
                                  "in request envelope")
Esempio n. 14
0
    def test_skill_invoke_pass_session_attributes_to_response_envelope(self):
        mock_request_envelope = RequestEnvelope(
            context=Context(system=SystemState(application=Application(
                application_id="test"))),
            session=Session(attributes={"foo": "bar"}))

        self.mock_handler_adapter.supports.return_value = True
        self.mock_handler_adapter.execute.return_value = None

        skill_config = self.create_skill_config()
        skill_config.skill_id = "test"
        skill = CustomSkill(skill_configuration=skill_config)

        response_envelope = skill.invoke(
            request_envelope=mock_request_envelope, context=None)

        assert response_envelope.session_attributes is not None, (
            "Session Attributes are not propagated from Request Envelope "
            "session to Response Envelope, "
            "during skill invocation")
        assert response_envelope.session_attributes["foo"] == "bar", (
            "Invalid Session Attributes propagated from Request Envelope "
            "session to Response Envelope, "
            "during skill invocation")