예제 #1
0
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
예제 #2
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')
    ]
예제 #3
0
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
예제 #4
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')]
예제 #5
0
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')]
예제 #6
0
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')]
예제 #7
0
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)]
예제 #8
0
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)]
예제 #9
0
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')]
예제 #10
0
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')]
예제 #11
0
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')
    ]
예제 #12
0
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')]
예제 #13
0
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')]
예제 #14
0
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')]
예제 #15
0
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')]
예제 #16
0
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')]
예제 #17
0
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')]
예제 #18
0
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')]
예제 #19
0
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')]
예제 #20
0
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')]
예제 #21
0
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')
    ]
예제 #22
0
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')]