示例#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_device_filter(setup_database):
    '''Test that device from device filter is used if specified in event.'''
    user_id = 12345
    event_ts_bigint = int(round(time.time() * 1000))
    login = database.upsert_login(user_id, 1)
    database.upsert_device(login_id=login.id,
                           platform_id=1,
                           device_token='123',
                           application_version=1001)
    database.upsert_device(login_id=login.id,
                           platform_id=2,
                           device_token='456',
                           application_version=1001)
    localized_message = database.add_message(message_name='test',
                                             language_id=1,
                                             message_title='title en',
                                             message_text='text en',
                                             priority=GCM2.PRIORITY_NORMAL)

    raw_messages = database.get_raw_messages(
        login_id=user_id,
        title=localized_message.message_title,
        content=localized_message.message_text.format,
        screen=localized_message.message.screen,
        game='game',
        world_id=1,
        dry_run=True,
        message_id=localized_message.message_id,
        event_ts_bigint=event_ts_bigint,
        priority=localized_message.message.priority,
        filter_platform_id=6,
        filter_device_token='789')
    assert len(raw_messages) == 1
    assert raw_messages[0]['platform'] == 6
    assert raw_messages[0]['receiver_id'] == '789'
示例#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_priority(setup_database):
    user_id = 12345
    event_ts_bigint = int(round(time.time() * 1000))
    expiry_millis = 60000
    login = database.upsert_login(user_id, 1)
    device = database.upsert_device(login_id=login.id, platform_id=1, device_token='123', application_version=1001)
    localized_message = database.add_message(message_name='test', language_id=1, message_title='title en',
                                      message_text='text en', priority=GCM2.PRIORITY_NORMAL)
    raw_messages = database.get_raw_messages(
                                login_id=user_id, title=localized_message.message_title,
                                content=localized_message.message_text.format,
                                screen=localized_message.message.screen, game='game', world_id=1,
                                dry_run=True, message_id=localized_message.message_id, event_ts_bigint=event_ts_bigint,
                                priority=localized_message.message.priority
    )
    assert raw_messages[0]['priority'] == GCM2.PRIORITY_NORMAL

    localized_message = database.add_message(message_name='test', language_id=1, message_title='title en',
                                      message_text='text en', priority=GCM2.PRIORITY_HIGH)
    raw_messages = database.get_raw_messages(
                                login_id=user_id, title=localized_message.message_title,
                                content=localized_message.message_text.format,
                                screen=localized_message.message.screen, game='game', world_id=1,
                                dry_run=True, message_id=localized_message.message_id, event_ts_bigint=event_ts_bigint,
                                priority=localized_message.message.priority
    )
    assert raw_messages[0]['priority'] == GCM2.PRIORITY_HIGH
示例#5
0
def test_ttl(setup_database):
    user_id = 12345
    event_ts_bigint = int(round(time.time() * 1000))
    expiry_millis = 60000
    login = database.upsert_login(user_id, 1)
    device = database.upsert_device(login_id=login.id,
                                    platform_id=1,
                                    device_token='123',
                                    application_version=1001)
    localized_message = database.add_message(message_name='test',
                                             language_id=1,
                                             message_title='title en',
                                             message_text='text en',
                                             expiry_millis=expiry_millis)
    raw_messages = database.get_raw_messages(
        login_id=user_id,
        title=localized_message.message_title,
        content=localized_message.message_text.format,
        screen=localized_message.message.screen,
        game='game',
        world_id=1,
        dry_run=True,
        message_id=localized_message.message_id,
        event_ts_bigint=event_ts_bigint,
        expiry_millis=localized_message.message.expiry_millis)
    assert raw_messages[0][
        'time_to_live_ts_bigint'] == event_ts_bigint + expiry_millis
示例#6
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
示例#7
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
示例#8
0
def test_login_clears_unregistered(setup_database):
    '''Test that login clears unregistered flag.'''
    login = database.upsert_login(1, 7)
    device = database.upsert_device(login_id=login.id,
                                    platform_id=1,
                                    device_token='100',
                                    application_version=1001)

    # unregister
    database.update_unregistered_devices([{
        'login_id': login.id,
        'device_token': device.device_token
    }])
    for users_device in database.get_devices(login):
        assert users_device.unregistered_ts is not None

    # reregister user with 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
示例#9
0
def test_message_blacklist(setup_database):
    login = database.upsert_login(12345, 7)
    blacklist = database.upsert_message_blacklist(12345, [7])
    reloaded_blacklists = database.get_all_message_blacklist()
    assert len(reloaded_blacklists) == 1

    assert reloaded_blacklists[0].login_id == blacklist.login_id
    assert reloaded_blacklists[0].blacklist == blacklist.blacklist
示例#10
0
def test_message_blacklist(setup_database):
    login = database.upsert_login(12345, 7)
    blacklist = database.upsert_message_blacklist(12345, [7])
    reloaded_blacklists = database.get_all_message_blacklist()
    assert len(reloaded_blacklists) == 1

    assert reloaded_blacklists[0].login_id == blacklist.login_id
    assert reloaded_blacklists[0].blacklist == blacklist.blacklist
示例#11
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)]
示例#12
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)]
示例#13
0
def test_message_blacklist(setup_database, mock_processor, http_client, post_event_url, event_batch_proto):
    '''Test that a valid request is succesfully parsed in post_event'''
    context.request_processor.submit.return_value = True

    login = database.upsert_login(123, 7)
    database.upsert_message_blacklist(123, [1])
    context.request_processor.submit.return_value = True
    request = tornado.httpclient.HTTPRequest(post_event_url, method='POST', body=event_batch_proto)
    response = yield http_client.fetch(request)
    assert not context.request_processor.sender_manager.submit.called
示例#14
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
示例#15
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
示例#16
0
def test_message_blacklist(setup_database, mock_processor, http_client,
                           post_event_url, event_batch_proto):
    '''Test that a valid request is succesfully parsed in post_event'''
    context.request_processor.submit.return_value = True

    login = database.upsert_login(123, 7)
    database.upsert_message_blacklist(123, [1])
    context.request_processor.submit.return_value = True
    request = tornado.httpclient.HTTPRequest(post_event_url,
                                             method='POST',
                                             body=event_batch_proto)
    response = yield http_client.fetch(request)
    assert not context.request_processor.sender_manager.submit.called
示例#17
0
def test_user(setup_database):
    login = database.upsert_login(12345, 7)
    assert login == database.get_login(12345)

    device = database.upsert_device(login_id=login.id, platform_id=1, device_id='qwe', device_token='123',
                                    application_version=1001, unregistered_ts=datetime.datetime.now())
    assert device == login.devices[0]

    database.delete_device(device)
    assert len(login.devices) == 0

    database.delete_login(login)
    assert database.get_login(12345) is None
示例#18
0
def test_user(setup_database):
    login = database.upsert_login(12345, 7)
    assert login == database.get_login(12345)

    device = database.upsert_device(login_id=login.id,
                                    platform_id=1,
                                    device_id='qwe',
                                    device_token='123',
                                    application_version=1001,
                                    unregistered_ts=datetime.datetime.now())
    assert device == login.devices[0]

    database.delete_device(device)
    assert len(login.devices) == 0

    database.delete_login(login)
    assert database.get_login(12345) is None
示例#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_device_filter(setup_database):
    '''Test that device from device filter is used if specified in event.'''
    user_id = 12345
    event_ts_bigint = int(round(time.time() * 1000))
    login = database.upsert_login(user_id, 1)
    database.upsert_device(login_id=login.id, platform_id=1, device_token='123', application_version=1001)
    database.upsert_device(login_id=login.id, platform_id=2, device_token='456', application_version=1001)
    localized_message = database.add_message(message_name='test', language_id=1, message_title='title en',
                                      message_text='text en', priority=GCM2.PRIORITY_NORMAL)

    raw_messages = database.get_raw_messages(
        login_id=user_id, title=localized_message.message_title,
        content=localized_message.message_text.format,
        screen=localized_message.message.screen, game='game', world_id=1,
        dry_run=True, message_id=localized_message.message_id, event_ts_bigint=event_ts_bigint,
        priority=localized_message.message.priority, filter_platform_id=6, filter_device_token='789')
    assert len(raw_messages) == 1
    assert raw_messages[0]['platform'] == 6
    assert raw_messages[0]['receiver_id'] == '789'
示例#22
0
def test_user(setup_database):
    login = database.upsert_login(12345, 7)
    reloaded_login = database.get_login(12345)
    assert login.id == reloaded_login.id
    assert login.language_id == reloaded_login.language_id


    device = database.upsert_device(login_id=login.id, platform_id=1, device_token='123',
                                    application_version=1001, unregistered_ts=datetime.datetime.now())
    reloaded_devices = database.get_devices(login)
    assert device.id == reloaded_devices[0].id
    assert device.login_id == reloaded_devices[0].login_id
    assert device.platform_id == reloaded_devices[0].platform_id
    assert device.device_token == reloaded_devices[0].device_token

    database.delete_device(device)
    assert len(database.get_devices(login)) == 0

    database.delete_login(login)
    assert database.get_login(12345) is None
示例#23
0
def test_user(setup_database):
    login = database.upsert_login(12345, 7)
    reloaded_login = database.get_login(12345)
    assert login.id == reloaded_login.id
    assert login.language_id == reloaded_login.language_id


    device = database.upsert_device(login_id=login.id, platform_id=1, device_token='123',
                                    application_version=1001, unregistered_ts=datetime.datetime.now())
    reloaded_devices = database.get_devices(login)
    assert device.id == reloaded_devices[0].id
    assert device.login_id == reloaded_devices[0].login_id
    assert device.platform_id == reloaded_devices[0].platform_id
    assert device.device_token == reloaded_devices[0].device_token

    database.delete_device(device)
    assert len(database.get_devices(login)) == 0

    database.delete_login(login)
    assert database.get_login(12345) is None
示例#24
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