Exemple #1
0
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
Exemple #2
0
 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 []
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
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_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')]
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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)
Exemple #10
0
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
Exemple #11
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')]
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)
Exemple #13
0
 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 []
Exemple #14
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')]
Exemple #15
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')
    ]
Exemple #16
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')]