def test_login_clears_unregistered_new_device_token(setup_database): '''Test that login clears unregistered flag with new device token set.''' login = database.upsert_login(1, 7) device = database.upsert_device(login_id=login.id, platform_id=1, device_token='100', application_version=1001) # set new device token canonical_data = [{'login_id': login.id, 'old_token': device.device_token, 'new_token': '100a'}] database.update_canonicals(canonical_data) # unregister database.update_unregistered_devices([{'login_id': login.id, 'device_token': '100a'}]) for users_device in database.get_devices(login): assert users_device.unregistered_ts is not None # reregister user with old device token database.process_user_login(login_id=login.id, language_id=login.language_id, platform_id=device.platform_id, device_token=device.device_token, application_version=device.application_version) # reregistered user's device should clear unregistered flag for users_device in database.get_devices(login): assert users_device.unregistered_ts is None # unregister database.update_unregistered_devices([{'login_id': login.id, 'device_token': '100a'}]) for users_device in database.get_devices(login): assert users_device.unregistered_ts is not None # reregister user with device token new database.process_user_login(login_id=login.id, language_id=login.language_id, platform_id=device.platform_id, device_token='100a', application_version=device.application_version) # reregistered user's device should clear unregistered flag for users_device in database.get_devices(login): assert users_device.unregistered_ts is None
def handle_event(self, event, event_params): database.process_user_login( login_id=event.user_id, language_id=event_params.get('languageId'), platform_id=event_params['platformId'], device_token=event_params.get('deviceToken'), application_version=event_params['applicationVersion']) return []
def test_device_update_application_version(setup_database): '''Test that application_version is updated on login''' login = database.upsert_login(1, 7) device = database.upsert_device(login_id=login.id, platform_id=1, device_token='100', application_version=1) database.process_user_login(login_id=login.id, language_id=login.language_id, platform_id=device.platform_id, device_token=device.device_token, application_version=2) for users_device in database.get_devices(login): assert users_device.application_version == 2
def test_max_users_per_device_on_update_canocicals(setup_database): """Test that max_users_per_device works on update cannonicals""" # set limit to 1 device config.max_users_per_device = 1 # updating canonicals causes 2 users to point to same device database.process_user_login(login_id=20, language_id=7, platform_id=1, device_token='d20', application_version=1007) database.process_user_login(login_id=21, language_id=7, platform_id=1, device_token='d20new', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=20))) == [(1, 'd20')] assert sorted(list(database.get_device_tokens(login_id=21))) == [(1, 'd20new')] database.update_canonicals([{'login_id': 20, 'old_token': 'd20', 'new_token': 'd20new'}]) assert sorted(list(database.get_device_tokens(login_id=20))) == [] assert sorted(list(database.get_device_tokens(login_id=21))) == [(1, 'd20new')]
def test_devices(setup_database): database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_id='qwe', device_token='123', application_version=1007) assert list(database.get_device_tokens(login_id=12345)) == [(1, '123')] database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_id=None, device_token='123', application_version=1007) database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_id='qwe', device_token=None, application_version=1007) assert list(database.get_device_tokens(login_id=12345)) == [(1, '123')] database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_id='qwe', device_token='124', application_version=1007) assert list(database.get_device_tokens(login_id=12345)) == [(1, '124')] database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_id='qwr', device_token='125', application_version=1007) assert list(database.get_device_tokens(login_id=12345)) == [(1, '124'), (1, '125')]
def test_message(setup_database): # user using serbian language database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_token='123', application_version=1007) # message with english only translation message_1 = database.add_message(message_name='test', language_id=1, message_title='title en', message_text='text en') assert message_1.message_id == 1 localized_message = database.get_localized_message(login_id=12345, message_id=message_1.message_id) assert localized_message.message_title == 'title en' assert localized_message.message_text == 'text en' assert localized_message.language_id == 1 assert localized_message.message.screen == '' # adding other translation different from serbian message_2 = database.add_message(message_name='test', language_id=0, message_title='title other', message_text='text other') localized_message = database.get_localized_message(login_id=12345, message_id=message_2.message_id) assert localized_message.message_title == 'title en' assert localized_message.message_text == 'text en' assert localized_message.language_id == 1 assert localized_message.message.screen == '' # adding serbian translation message_3 = database.add_message(message_name='test', language_id=7, message_title='title sr', message_text='text sr') localized_message = database.get_localized_message(login_id=12345, message_id=message_3.message_id) assert localized_message.message_title == 'title sr' assert localized_message.message_text == 'text sr' assert localized_message.language_id == 7 assert localized_message.message.screen == '' # message with no english neither serbian translation bad_message = database.add_message(message_name='test_bad', language_id=0, message_title='title bad', message_text='text bad') localized_message = database.get_localized_message(login_id=12345, message_id=bad_message.message_id) assert localized_message is None # user doesn't exist localized_message = database.get_localized_message(login_id=12346, message_id=message_3.message_id) assert localized_message is None # delete a message database.delete_message(message_1.message) assert database.get_message('test') is None
def prepare_demodata(): # add some test users database.process_user_login(login_id=1, language_id=1, platform_id=2, device_id='did1', device_token='dtoken1', application_version=200) database.process_user_login(login_id=2, language_id=1, platform_id=2, device_id='did2', device_token='dtoken2', application_version=200) database.process_user_login(login_id=3, language_id=1, platform_id=2, device_id='did3', device_token='dtoken3', application_version=200) # insert messages database.add_message('msg1', 1, 'title', 'text', 1) database.add_message('msg2', 1, 'title', 'text', 1) database.add_message('msg3', 1, 'title', 'text', 2)
def test_device_update_application_version_new_device_token(setup_database): '''Test that application_version is updated on login with new device token.''' login = database.upsert_login(1, 7) device = database.upsert_device(login_id=login.id, platform_id=1, device_token='100', application_version=1) # set new device token canonical_data = [{'login_id': login.id, 'old_token': device.device_token, 'new_token': '100a'}] database.update_canonicals(canonical_data) # update application version via old device token database.process_user_login(login_id=login.id, language_id=login.language_id, platform_id=device.platform_id, device_token=device.device_token, application_version=2) for users_device in database.get_devices(login): assert users_device.application_version == 2 # update application version via new device token database.process_user_login(login_id=login.id, language_id=login.language_id, platform_id=device.platform_id, device_token='100a', application_version=3) for users_device in database.get_devices(login): assert users_device.application_version == 3
def prepare_demodata(): # add some test users database.process_user_login(login_id=1, language_id=1, platform_id=2, device_token='dtoken1', application_version=200) database.process_user_login(login_id=2, language_id=1, platform_id=2, device_token='dtoken2', application_version=200) database.process_user_login(login_id=3, language_id=1, platform_id=2, device_token='dtoken3', application_version=200) # insert messages database.add_message('msg1', 1, 'title', 'text', 1) database.add_message('msg2', 1, 'title', 'text', 1) database.add_message('msg3', 1, 'title', 'text', 2) database.add_message('msg4', 1, 'title {title_param}', 'text {text_param}', 3)
def handle_event(self, event, event_params): database.process_user_login(login_id=event.user_id, language_id=event_params.get('languageId'), platform_id=event_params['platformId'], device_id=event_params.get('deviceId'), device_token=event_params.get('deviceToken'), application_version=event_params['applicationVersion']) return []
def test_device_overflow(setup_database): login_id = 12345 database.process_user_login(login_id=login_id, language_id=7, platform_id=1, device_token='123', application_version=1007) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '123')] database.update_canonicals([{'login_id': login_id, 'old_token': '123', 'new_token': '124'}]) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '124')] database.process_user_login(login_id=login_id, language_id=7, platform_id=1, device_token='125', application_version=1007) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '124'), (1, '125')] database.process_user_login(login_id=login_id, language_id=7, platform_id=1, device_token='126', application_version=1007) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '124'), (1, '125'), (1, '126')] database.process_user_login(login_id=login_id, language_id=7, platform_id=1, device_token='127', application_version=1007) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '125'), (1, '126'), (1, '127')] database.update_unregistered_devices([{'login_id': login_id, 'device_token': '126'}]) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '125'), (1, '127')] database.process_user_login(login_id=login_id, language_id=7, platform_id=1, device_token='128', application_version=1007) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '125'), (1, '127'), (1, '128')] database.process_user_login(login_id=login_id, language_id=7, platform_id=1, device_token='129', application_version=1007) assert list(database.get_device_tokens(login_id=login_id)) == [(1, '127'), (1, '128'), (1, '129')]
def test_max_users_per_device_on_login(setup_database): """Test that max_users_per_device works on login""" # add 2 logins per device config.max_users_per_device = 2 database.process_user_login(login_id=1, language_id=7, platform_id=1, device_token='d1', application_version=1007) database.process_user_login(login_id=2, language_id=7, platform_id=1, device_token='d1', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd1')] assert sorted(list(database.get_device_tokens(login_id=2))) == [(1, 'd1')] # set limit to 1 device config.max_users_per_device = 1 # make sure adding new user removes old database.process_user_login(login_id=3, language_id=7, platform_id=1, device_token='d1', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [] assert sorted(list(database.get_device_tokens(login_id=2))) == [] assert sorted(list(database.get_device_tokens(login_id=3))) == [(1, 'd1')] # adding new user to a different device does not affect old user database.process_user_login(login_id=1, language_id=7, platform_id=1, device_token='d2', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd2')] assert sorted(list(database.get_device_tokens(login_id=3))) == [(1, 'd1')] # adding a new user with different platform does not affect old user database.process_user_login(login_id=4, language_id=7, platform_id=2, device_token='d2', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd2')] assert sorted(list(database.get_device_tokens(login_id=3))) == [(1, 'd1')] assert sorted(list(database.get_device_tokens(login_id=4))) == [(2, 'd2')] # logging with same user works database.process_user_login(login_id=1, language_id=7, platform_id=1, device_token='d2', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd2')] # check that it works during for device_token_new # old user has new device token database.process_user_login(login_id=10, language_id=7, platform_id=1, device_token='d10', application_version=1007) database.update_canonicals([{ 'login_id': 10, 'old_token': 'd10', 'new_token': 'd10new' }]) database.process_user_login(login_id=11, language_id=7, platform_id=1, device_token='d10new', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=10))) == [] assert sorted(list(database.get_device_tokens(login_id=11))) == [ (1, 'd10new') ]
def test_max_users_per_device_on_login(setup_database): """Test that max_users_per_device works on login""" # add 2 logins per device config.max_users_per_device = 2 database.process_user_login(login_id=1, language_id=7, platform_id=1, device_token='d1', application_version=1007) database.process_user_login(login_id=2, language_id=7, platform_id=1, device_token='d1', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd1')] assert sorted(list(database.get_device_tokens(login_id=2))) == [(1, 'd1')] # set limit to 1 device config.max_users_per_device = 1 # make sure adding new user removes old database.process_user_login(login_id=3, language_id=7, platform_id=1, device_token='d1', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [] assert sorted(list(database.get_device_tokens(login_id=2))) == [] assert sorted(list(database.get_device_tokens(login_id=3))) == [(1, 'd1')] # adding new user to a different device does not affect old user database.process_user_login(login_id=1, language_id=7, platform_id=1, device_token='d2', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd2')] assert sorted(list(database.get_device_tokens(login_id=3))) == [(1, 'd1')] # adding a new user with different platform does not affect old user database.process_user_login(login_id=4, language_id=7, platform_id=2, device_token='d2', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd2')] assert sorted(list(database.get_device_tokens(login_id=3))) == [(1, 'd1')] assert sorted(list(database.get_device_tokens(login_id=4))) == [(2, 'd2')] # logging with same user works database.process_user_login(login_id=1, language_id=7, platform_id=1, device_token='d2', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=1))) == [(1, 'd2')] # check that it works during for device_token_new # old user has new device token database.process_user_login(login_id=10, language_id=7, platform_id=1, device_token='d10', application_version=1007) database.update_canonicals([{'login_id': 10, 'old_token': 'd10', 'new_token': 'd10new'}]) database.process_user_login(login_id=11, language_id=7, platform_id=1, device_token='d10new', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=10))) == [] assert sorted(list(database.get_device_tokens(login_id=11))) == [(1, 'd10new')]