def testServiceElementCallbackWithDiffDevice(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info) device_2 = fase_model.Device(device_type='MockType', device_id='MockDeviceID2') screen_info = self._EnterNextAndAssert('Henry Ford', device_2, version_info, session_info, screen_info) self._EnterResetAndAssert(device_2, version_info, session_info, screen_info)
def testPrepareScreenNoVariables(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') _, session_info, _ = self._GetServiceAndAssert(device) service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) screen = fase.Screen(service_prog.service) frame = screen.AddFrame(id_='frame_id') frame.AddText(id_='text_id') frame.AddStringVariable(id_='value_str', value='general') self.assertTrue( screen.GetElement(id_='frame_id').HasElement(id_='text_id')) self.assertTrue( screen.GetElement(id_='frame_id').HasElement(id_='value_str')) screen_removed_variables, _ = fase_server.PrepareScreen(screen, None) self.assertTrue( screen.GetElement(id_='frame_id').HasElement(id_='text_id')) self.assertTrue( screen.GetElement(id_='frame_id').HasElement(id_='value_str')) self.assertTrue( screen_removed_variables.GetElement(id_='frame_id').HasElement( id_='text_id')) self.assertFalse( screen_removed_variables.GetElement(id_='frame_id').HasElement( id_='value_str'))
def testPrepareScreenResourcesPixelDensity(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID', pixel_density=1.5) _, session_info, _ = self._GetServiceAndAssert(device) service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) screen = fase.Screen(service_prog.service) frame = screen.AddFrame(id_='frame_id') frame.AddImage(id_='image1_id', filename=self.file1_template_filename) frame.AddImage(id_='image2_id', filename=self.file2_template_filename) _, resources = fase_server.PrepareScreen(screen, device) self.assertEqual( set([ fase_model.Resource(filename=self.file1_20_filename), fase_model.Resource(filename=self.file2_20_filename) ]), set(resources.resource_list)) screen = fase.Screen(service_prog.service) frame = screen.AddFrame(id_='frame_id') frame.AddImage(id_='image1_id', filename=self.file1_template_filename, pixel_density_mult=2.0) frame.AddImage(id_='image2_id', filename=self.file2_template_filename, pixel_density_mult=2.0) _, resources = fase_server.PrepareScreen(screen, device) self.assertEqual( set([ fase_model.Resource(filename=self.file1_30_filename), fase_model.Resource(filename=self.file2_30_filename) ]), set(resources.resource_list))
def testServiceElementCallbackDeviceVersionObsolete(self): previous_version = ServerTestService.version ServerTestService.version = '2' device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info_entered_name = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info_entered_name) screen_info_clicked_next = self._EnterNextAndAssert( 'Henry Ford', device, version_info, session_info, screen_info_entered_name) version_info = fase_model.VersionInfo(version=previous_version) element_callback = (fase_model.ElementCallback( id_list=['next_button_id'], method=fase.ON_CLICK_METHOD, device=device)) response_updated = fase_server.FaseServer.Get().ElementCallback( element_callback, version_info, session_info, screen_info_entered_name) self._AssertDeviceUpdateScreen(response_updated, session_info, screen_info_clicked_next) ServerTestService.version = previous_version
def testServiceScreenUpdateScreenInfoObsolete(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info_entered_name = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info_entered_name) screen_info_clicked_next = self._EnterNextAndAssert( 'Henry Ford', device, version_info, session_info, screen_info_entered_name) screen_prog_clicked_next = fase_database.FaseDatabaseInterface.Get( ).GetScreenProg(session_info.session_id) screen_clicked_next = screen_prog_clicked_next.screen elements_update = fase_model.ElementsUpdate([['text_name_id']], ['Howard Hughes']) screen_update = fase_model.ScreenUpdate( elements_update=elements_update, device=device) response_enter_name_again = fase_server.FaseServer.Get().ScreenUpdate( screen_update, version_info, session_info, screen_info_entered_name) self.assertEqual(screen_clicked_next, response_enter_name_again.screen) expected_resources = fase_model.Resources( resource_list=[fase_model.Resource(filename=self.hello_filename)]) self.assertEqual( set(expected_resources.resource_list), set(response_enter_name_again.resources.resource_list)) self.assertIsNone(response_enter_name_again.elements_update) self.assertEqual(session_info, response_enter_name_again.session_info) self.assertEqual(screen_info_clicked_next, response_enter_name_again.screen_info)
def testServiceElementCallbackScreenInfoObsolete(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info_entered_name = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info_entered_name) screen_info_clicked_next = self._EnterNextAndAssert( 'Henry Ford', device, version_info, session_info, screen_info_entered_name) screen_prog_clicked_next = fase_database.FaseDatabaseInterface.Get( ).GetScreenProg(session_info.session_id) screen_clicked_next = screen_prog_clicked_next.screen element_callback = (fase_model.ElementCallback( id_list=['next_button_id'], method=fase.ON_CLICK_METHOD, device=device)) response_click_again = fase_server.FaseServer.Get().ElementCallback( element_callback, version_info, session_info, screen_info_entered_name) self.assertEqual(screen_clicked_next, response_click_again.screen) expected_resources = fase_model.Resources( resource_list=[fase_model.Resource(filename=self.hello_filename)]) self.assertEqual(set(expected_resources.resource_list), set(response_click_again.resources.resource_list)) self.assertIsNone(response_click_again.elements_update) self.assertEqual(session_info, response_click_again.session_info) self.assertEqual(screen_info_clicked_next, response_click_again.screen_info)
def testServiceScreenUpdateDeviceVersionObsolete(self): previous_version = ServerTestService.version ServerTestService.version = '2' device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info_entered_name = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info_entered_name) screen_info_clicked_next = self._EnterNextAndAssert( 'Henry Ford', device, version_info, session_info, screen_info_entered_name) version_info = fase_model.VersionInfo(version=previous_version) elements_update = fase_model.ElementsUpdate([['text_name_id']], ['Howard Hughes']) screen_update = fase_model.ScreenUpdate( elements_update=elements_update, device=device) response_updated = fase_server.FaseServer.Get().ScreenUpdate( screen_update, version_info, session_info, screen_info_entered_name) self._AssertDeviceUpdateScreen(response_updated, session_info, screen_info_clicked_next) ServerTestService.version = previous_version
def testServiceUpdateDevice(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID', device_token='Token1') version_info, session_info, screen_info = self._GetServiceAndAssert( device) self._AssertDevice(device, session_info) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID', device_token='Token2') service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) expected_screen = FaseServerTest._GetEnterNameScreen( service_prog.service) expected_screen._screen_id = screen_info.screen_id expected_resources = fase_model.Resources( resource_list=[fase_model.Resource(filename=self.logo_filename)]) self._GetScreenAndAssert(device, version_info, session_info, screen_info, expected_screen=expected_screen, expected_resources=expected_resources) self._AssertDevice(device, session_info) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID', device_token='Token3') self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info) self._AssertDevice(device, session_info) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID', device_token='Token4') screen_info = self._EnterNextAndAssert('Henry Ford', device, version_info, session_info, screen_info) self._AssertDevice(device, session_info) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID', device_token='Token5') self._EnterResetAndAssert(device, version_info, session_info, screen_info) self._AssertDevice(device, session_info)
def testServiceUpdateElementsUpdate(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info) self._EnterNameAndAssert('Howard Hughes', device, version_info, session_info, screen_info)
def testService(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') response = self._GetService(device) session_info = response.session_info screen_info = response.screen_info service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) expected_screen = ApplicationTest._GetEnterNameScreen( service_prog.service) expected_screen._screen_id = screen_info.screen_id self.assertEqual(expected_screen, response.screen) response = self._GetScreen(device, session_info) self.assertEqual(expected_screen, response.screen) elements_update = fase_model.ElementsUpdate([['text_name_id']], ['Hanry Ford']) screen_update = fase_model.ScreenUpdate( elements_update=elements_update, device=device) response = self._ScreenUpdate(screen_update, session_info, screen_info) expected_screen = ApplicationTest._GetEnterNameScreen( service_prog.service, name='Hanry Ford') expected_screen._screen_id = screen_info.screen_id self.assertIsNone(response.screen) response = self._GetScreen(device, session_info) self.assertEqual(expected_screen, response.screen) element_callback = (fase_model.ElementCallback( id_list=['next_button_id'], method=fase.ON_CLICK_METHOD, device=device)) response = self._ElementCallback(element_callback, session_info, screen_info) screen_info = response.screen_info expected_screen = ApplicationTest._GetGreetingScreen( service_prog.service, name='Hanry Ford') expected_screen._screen_id = screen_info.screen_id self.assertEqual(expected_screen, response.screen) response = self._GetScreen(device, session_info) self.assertEqual(expected_screen, response.screen) element_callback = (fase_model.ElementCallback( id_list=['reset_button_id'], method=fase.ON_CLICK_METHOD, device=device)) response = self._ElementCallback(element_callback, session_info, screen_info) screen_info = response.screen_info expected_screen = ApplicationTest._GetEnterNameScreen( service_prog.service) expected_screen._screen_id = screen_info.screen_id self.assertEqual(expected_screen, response.screen) response = self._GetScreen(device, session_info) self.assertEqual(expected_screen, response.screen)
def testServiceScreenUpdateWithDiffDevice(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info) device_2 = fase_model.Device(device_type='MockType', device_id='MockDeviceID2') elements_update = fase_model.ElementsUpdate([['text_name_id']], ['Howard Hughes']) screen_update = fase_model.ScreenUpdate( elements_update=elements_update, device=device_2) response = fase_server.FaseServer.Get().ScreenUpdate( screen_update, version_info, session_info, screen_info) service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) expected_screen = FaseServerTest._GetEnterNameScreen( service_prog.service, name='Howard Hughes') expected_screen._screen_id = screen_info.screen_id expected_resources = fase_model.Resources( resource_list=[fase_model.Resource(filename=self.logo_filename)]) self.assertIsNone(response.screen) self.assertIsNone(response.resources) self.assertEqual(elements_update, response.elements_update) self.assertEqual(session_info, response.session_info) self.assertEqual(screen_info, response.screen_info) self._GetScreenProgAndAssert(session_info, expected_screen=expected_screen, expected_elements_update=elements_update, expected_device=device_2) self._GetScreenAndAssert(device_2, version_info, session_info, screen_info, expected_screen=expected_screen, expected_resources=expected_resources)
def AddDevicePushServiceProviderAndService(self): device_pusher.DevicePusher.Set(device_pusher.DevicePusher(), overwrite=True) device_type_1_provider = device_pusher.MockDevicePushServiceProvider() device_pusher.DevicePusher.Get().AddDevicePushServiceProvider( 'device_type_1', device_type_1_provider) device_type_2_provider = device_pusher.MockDevicePushServiceProvider() device_pusher.DevicePusher.Get().AddDevicePushServiceProvider( 'device_type_2', device_type_2_provider) user = fase.User(user_id='321', phone_number='+13216549870', first_name='Edward', last_name='Igushev', datetime_added=datetime.datetime.utcnow()) service = PusherTestService() service._session_id = fase_sign_in_impl.GenerateSignedInSessionId( user.user_id) screen = service.OnStart() service_prog = fase_model.ServiceProg( session_id=service.GetSessionId(), service=service) service_prog.device_list.append( fase_model.Device(device_type='device_type_1', device_token='device_token_1_1')) service_prog.device_list.append( fase_model.Device(device_type='device_type_1', device_token='device_token_1_2')) service_prog.device_list.append( fase_model.Device(device_type='device_type_2', device_token='device_token_2_1')) screen_prog = fase_model.ScreenProg(session_id=service.GetSessionId(), screen=screen) fase_database.FaseDatabaseInterface.Set(fase_database.MockFaseDatabase( service_prog_list=[service_prog], screen_prog_list=[screen_prog], user_list=[user]), overwrite=True) return device_type_1_provider, device_type_2_provider, service_prog, user
def testUpdate(self): device_type_1_provider, device_type_2_provider, service_prog, user = ( self.AddDevicePushServiceProviderAndService()) fase_pusher.Push(user.user_id, 'TestTitle', device_pusher.UPDATE_THROW_ERROR + 'device_token_1b') self.assertEqual(2, len(device_type_1_provider.notifications)) self.assertEqual(1, len(device_type_2_provider.notifications)) self.assertEqual(3, len(service_prog.device_list)) self.assertEqual( fase_model.Device(device_type='device_type_1', device_token='device_token_1b'), service_prog.device_list[0]) self.assertEqual( fase_model.Device(device_type='device_type_1', device_token='device_token_1b'), service_prog.device_list[1]) self.assertEqual( fase_model.Device(device_type='device_type_2', device_token='device_token_1b'), service_prog.device_list[2])
def testGetService(self): self.requests_bkp = fase_http_client.requests fase_http_client.requests = MockRequests(self) http_client = fase_http_client.FaseHTTPClient(MOCK_URL) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') response = fase_model.Response() fase_http_client.requests.expected_url = MOCK_URL + '/getservice' fase_http_client.requests.expected_json = device.ToSimple() fase_http_client.requests.response = response actual_response = http_client.GetService(device) self.assertEqual(response, actual_response) fase_http_client.requests = self.requests_bkp
def testGetScreen(self): self.requests_bkp = fase_http_client.requests fase_http_client.requests = MockRequests(self) http_client = fase_http_client.FaseHTTPClient(MOCK_URL) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') session_info = fase_model.SessionInfo(session_id='MockSessionId') response = fase_model.Response() fase_http_client.requests.expected_url = MOCK_URL + '/getscreen' fase_http_client.requests.expected_headers = {'session-id': session_info.session_id} fase_http_client.requests.expected_json = device.ToSimple() fase_http_client.requests.response = response actual_response = http_client.GetScreen(device, session_info) self.assertEqual(response, actual_response) fase_http_client.requests = self.requests_bkp
def testServiceGetScreenServiceVersionObsolete(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info_entered_name = self._GetServiceAndAssert( device) self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info_entered_name) previous_version = ServerTestService.version ServerTestService.version = '2' response_updated = fase_server.FaseServer.Get().GetScreen( device, version_info, session_info) self._AssertServiceUpdateScreen(response_updated, session_info) ServerTestService.version = previous_version
def Start(self): fase_database.FaseDatabaseInterface.Set( fase_database.MockFaseDatabase( service_prog_list=[], screen_prog_list=[], user_list=[ fase.User(user_id='321', phone_number='+13216549870', first_name='Edward', last_name='Igushev', datetime_added=datetime.datetime.utcnow())]), overwrite=True) datetime_now = datetime.datetime.utcnow() self.note_1 = notes_model.Note(note_id='321_1', user_id='321', header='Note 1 Header', text='Note 1 text', datetime=datetime_now+datetime.timedelta(days=1), favourite=False) self.note_2 = notes_model.Note(note_id='321_2', user_id='321', header='Note 2 Header', text='Note 2 text', datetime=datetime_now-datetime.timedelta(days=1), favourite=True) self.note_3 = notes_model.Note(note_id='321_3', user_id='321', header='Note 3 Header', text='Note 3 text', datetime=datetime_now, favourite=False) notes_database.NotesDatabaseInterface.Set( notes_database.MockNotesDatabase([self.note_1, self.note_2, self.note_3]), overwrite=True) # Create Service self.device = fase_model.Device(device_type='Python', device_id='DeviceID') response = fase_server.FaseServer.Get().GetService(self.device) version_info = response.version_info session_info = response.session_info screen_info = response.screen_info screen = response.screen # Check present of main elements. screen.GetElement(id_='notes_frame') return version_info, session_info, screen_info, screen
def testServiceElementCallbackWithElementsUpdate(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info = self._GetServiceAndAssert( device) elements_update = fase_model.ElementsUpdate([['text_name_id']], ['Henry Ford']) element_callback = fase_model.ElementCallback( elements_update=elements_update, id_list=['next_button_id'], method=fase.ON_CLICK_METHOD, device=device) response = fase_server.FaseServer.Get().ElementCallback( element_callback, version_info, session_info, screen_info) screen_info = response.screen_info service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) expected_screen = FaseServerTest._GetGreetingScreen( service_prog.service, 'Henry Ford') expected_screen._screen_id = screen_info.screen_id self.assertEqual(expected_screen, response.screen) expected_resources = fase_model.Resources( resource_list=[fase_model.Resource(filename=self.hello_filename)]) self.assertEqual(set(expected_resources.resource_list), set(response.resources.resource_list)) self.assertFalse(response.resources.reset_resources) self.assertIsNone(response.elements_update) self.assertEqual(session_info, response.session_info) self._GetScreenProgAndAssert(session_info, expected_screen=expected_screen, expected_device=device) self._GetScreenAndAssert(device, version_info, session_info, screen_info, expected_screen=expected_screen, expected_resources=expected_resources) self._EnterResetAndAssert(device, version_info, session_info, screen_info)
def testScreenUpdateAndElementCallback(self): self.requests_bkp = fase_http_client.requests fase_http_client.requests = MockRequests(self) http_client = fase_http_client.FaseHTTPClient(MOCK_URL) device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') session_info = fase_model.SessionInfo(session_id='MockSessionId') screen_info = fase_model.ScreenInfo(screen_id='MockScreenId') response = fase_model.Response() for url_method, http_client_method in [('/screenupdate', http_client.ScreenUpdate), ('/elementcallback', http_client.ElementCallback)]: fase_http_client.requests.expected_url = MOCK_URL + url_method fase_http_client.requests.expected_headers = { 'session-id': session_info.session_id, 'screen-id': screen_info.screen_id} fase_http_client.requests.expected_json = device.ToSimple() fase_http_client.requests.response = response actual_response = http_client_method(device, session_info, screen_info) self.assertEqual(response, actual_response) fase_http_client.requests = self.requests_bkp
def __init__(self, http_client, ui, resource_manager, session_info_filepath=None): self.http_client = http_client self.ui = ui self.ui.SetClient(self) self.resource_manager = resource_manager self.session_info_filepath = session_info_filepath self.device = fase_model.Device(device_type=DEVICE_TYPE, device_id=str(uuid.uuid4()), pixel_density=PIXEL_DENSITY) self.screen = None self.elements_update = None self.session_info = LoadSessionInfoIfExists(self.session_info_filepath) self.screen_info = None self.id_list_to_value = dict() self.id_list_to_value_lock = threading.Lock() self.screen_lock = threading.Lock() self.screen_update_condition = threading.Condition(self.screen_lock) self.screen_update_response_queue = queue.Queue(maxsize=1) self.screen_update_thread = threading.Thread(target=self._ScreenUpdateThread) self.screen_update_thread.daemon = True self.screen_update_thread.start()
def testPrepareScreenResources(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') _, session_info, _ = self._GetServiceAndAssert(device) service_prog = fase_database.FaseDatabaseInterface.Get( ).GetServiceProg(session_info.session_id) screen = fase.Screen(service_prog.service) frame1 = screen.AddFrame(id_='frame1_id') frame1.AddImage(id_='image1_id', filename=self.file1_filename) frame1.AddImage(id_='image2_id', filename=self.file2_filename) frame1.AddImage(id_='image3_id', filename=self.file3_filename) frame2 = screen.AddFrame(id_='frame2_id') frame2.AddImage(id_='image1_id', filename=self.file1_filename) frame2.AddImage(id_='image2_id', filename=self.file2_filename) frame2.AddImage(id_='image3_id', filename=self.file3_filename) _, resources = fase_server.PrepareScreen(screen, device) self.assertEqual( set([ fase_model.Resource(filename=self.file1_filename), fase_model.Resource(filename=self.file2_filename) ]), set(resources.resource_list))
def testServiceUpdateElementsEmpty(self): device = fase_model.Device(device_type='MockType', device_id='MockDeviceID') version_info, session_info, screen_info = self._GetServiceAndAssert( device) # Enter name and assert update in database. self._EnterNameAndAssert('Henry Ford', device, version_info, session_info, screen_info) screen_prog = fase_database.FaseDatabaseInterface.Get().GetScreenProg( session_info.session_id) expected_elements_update = fase_model.ElementsUpdate( [['text_name_id']], ['Henry Ford']) self.assertEqual(expected_elements_update, screen_prog.elements_update) # Clean name and assert update has been deleted from database. elements_update = fase_model.ElementsUpdate([['text_name_id']], ['']) screen_update = fase_model.ScreenUpdate( elements_update=elements_update, device=device) fase_server.FaseServer.Get().ScreenUpdate(screen_update, version_info, session_info, screen_info) screen_prog = fase_database.FaseDatabaseInterface.Get().GetScreenProg( session_info.session_id) expected_elements_update = fase_model.ElementsUpdate( [['text_name_id']], ['']) self.assertEqual(expected_elements_update, screen_prog.elements_update)