def setUp(self): self.request_envelope = RequestEnvelope() self.context = Context() self.system = SystemState() self.user = User() self.device = Device() self.person = Person()
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))))
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")
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")
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")
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")
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")
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")
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")
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
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")
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")
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")