def test_unregistered_device(setup_database): login = database.upsert_login(12345, 7) device = database.upsert_device(login_id=login.id, platform_id=1, device_token='123', application_version=1001) assert len(database.get_device_tokens(12345)) == 1 database.update_unregistered_devices([{'login_id': device.login_id, 'device_token': device.device_token}]) assert len(database.get_device_tokens(12345)) == 0
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_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_login_event_persists_user_data(setup): '''Test that user data is persisted after login event is received''' context.event_handler_manager = EventHandlerManager() event_batch = create_batch_with_login_event(user_id=1338, platform_id=2, device_token='str_device_token') event_request = EventRequestBatch([event_batch]) event_request.process() device_tokens = list(database.get_device_tokens(1338)) assert device_tokens == [(2, 'str_device_token')]
def test_canonical(setup_database): login = database.upsert_login(12345, 7) old_token = '123' new_token = '124' database.upsert_device(login_id=login.id, platform_id=1, device_token=old_token, application_version=1001) canonical_data = [{'login_id': login.id, 'old_token': old_token, 'new_token': new_token}] database.update_canonicals(canonical_data) assert list(database.get_device_tokens(login_id=login.id)) == [(1, new_token)]
def test_login_event_persists_user_data(setup): '''Test that user data is persisted after login event is received''' context.event_handler_manager = EventHandlerManager() event_batch = create_batch_with_login_event( user_id=1338, platform_id=2, device_token='str_device_token') event_request = EventRequestBatch([event_batch]) event_request.process() device_tokens = list(database.get_device_tokens(1338)) assert device_tokens == [(2, 'str_device_token')]
def test_login_event_duplicate(setup): '''Tests that user data is persisted correctly for duplicated login events''' context.event_handler_manager = EventHandlerManager() event_batch = create_batch_with_login_event(user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch]) event_request_platform1.process() event_request_platform1.process() device_tokens = list(database.get_device_tokens(1338)) assert device_tokens == [(1, 'str_device_token_1')]
def test_devices(setup_database): database.process_user_login(login_id=12345, language_id=7, platform_id=1, 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_token='124', application_version=1007) database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_token='125', application_version=1007) assert sorted(list(database.get_device_tokens(login_id=12345))) == [ (1, '123'), (1, '124'), (1, '125') ]
def test_login_event_duplicate(setup): '''Tests that user data is persisted correctly for duplicated login events''' context.event_handler_manager = EventHandlerManager() event_batch = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch]) event_request_platform1.process() event_request_platform1.process() device_tokens = list(database.get_device_tokens(1338)) assert device_tokens == [(1, 'str_device_token_1')]
def test_login_event_same_platform_different_device(setup): '''Tests that both devices are persisted if they have different tokens''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event(user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() event_batch_platform2 = create_batch_with_login_event(user_id=1338, platform_id=1, device_token='str_device_token_2') event_request_platform2 = EventRequestBatch([event_batch_platform2]) event_request_platform2.process() device_tokens = list(database.get_device_tokens(1338)) assert sorted(device_tokens) == [(1, 'str_device_token_1'), (1, 'str_device_token_2')]
def test_login_event_more_platforms(setup): '''Tests that user data is persisted for more platforms''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event(user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() event_batch_platform2 = create_batch_with_login_event(user_id=1338, platform_id=2, device_token='str_device_token_2') event_request_platform2 = EventRequestBatch([event_batch_platform2]) event_request_platform2.process() device_tokens = list(database.get_device_tokens(1338)) assert sorted(device_tokens) == [(1, 'str_device_token_1'), (2, 'str_device_token_2')]
def test_login_event_same_platform_different_device(setup): '''Tests that both devices are persisted if they have different tokens''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() event_batch_platform2 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_2') event_request_platform2 = EventRequestBatch([event_batch_platform2]) event_request_platform2.process() device_tokens = list(database.get_device_tokens(1338)) assert sorted(device_tokens) == [(1, 'str_device_token_1'), (1, 'str_device_token_2')]
def test_login_event_more_platforms(setup): '''Tests that user data is persisted for more platforms''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() event_batch_platform2 = create_batch_with_login_event( user_id=1338, platform_id=2, device_token='str_device_token_2') event_request_platform2 = EventRequestBatch([event_batch_platform2]) event_request_platform2.process() device_tokens = list(database.get_device_tokens(1338)) assert sorted(device_tokens) == [(1, 'str_device_token_1'), (2, 'str_device_token_2')]
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 sorted(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 sorted(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 sorted(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 sorted(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 sorted(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 sorted(list(database.get_device_tokens(login_id=login_id))) == [(1, '127'), (1, '128'), (1, '129')]
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_multiple_devices_with_same_token(setup_database): '''Test that even if there are multiple devices with same token, return only one to avoid multiple push notifications''' # prepare data. insert several devices with same device token login = database.upsert_login(1, 7) database.upsert_device(login_id=login.id, platform_id=1, device_token='old1', application_version=1000) database.update_canonicals([{'login_id': login.id, 'old_token': 'old1', 'new_token': 'new'}]) database.upsert_device(login_id=login.id, platform_id=2, device_token='old2', application_version=1000) database.update_canonicals([{'login_id': login.id, 'old_token': 'old2', 'new_token': 'new'}]) database.upsert_device(login_id=login.id, platform_id=5, device_token='old5', application_version=1000) database.update_canonicals([{'login_id': login.id, 'old_token': 'old5', 'new_token': 'new'}]) database.upsert_device(login_id=login.id, platform_id=1, device_token='new', application_version=1000) assert sorted(list(database.get_device_tokens(login_id=login.id))) == [(1, 'new'), (2, 'new')]
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')]