Пример #1
0
    def test_tag_creation_private_id(self, test_client, mock_user):
        fake_private_id = 'fake_private_id'

        fake_session = get_current_session()

        params = {'private_id': fake_private_id}
        r = Request('PUT', LOCAL_URL + '/api/tag/TAG',
                    params=params)

        response = test_client.send(r)

        assert(response.status_code == 201)
        data = response.json
        assert data['name'] == 'TAG'
        assert data['ownerId'] == default_player_id()

        tag = fake_session.query(Tag).first()
        assert tag.name == 'TAG'
        assert tag.owner == default_player_id()
        assert tag.private_id == fake_private_id

        r = Request('GET', LOCAL_URL + '/api/tag/TAG/private_key')

        response = test_client.send(r)
        assert(response.status_code == 200)
        assert response.json == ServiceTag.encode_tag(tag.id, fake_private_id)
Пример #2
0
    def test_replay_basic_server_upload_with_multiple_tags(self, test_client):
        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert game is None
        params = {'player_id': default_player_id(), 'tags': [TAG_NAME, TAG_NAME + "hello"]}
        r = Request('POST', LOCAL_URL + '/api/upload', files={'replays': ('fake_file.replay', self.stream)},
                    params=params)

        response = test_client.send(r)

        assert(response.status_code == 202)

        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert(game.hash == '70DDECEA4653AC55EA77DBA0DB497995')

        assert(game.name == '3 kickoffs 4 shots')
        assert(len(game.tags) == 2)
        assert(game.tags[0].name == TAG_NAME)
        assert(game.tags[0].owner == default_player_id())
        assert(game.tags[0].games[0] == game)

        assert(game.tags[1].name == (TAG_NAME + "hello"))

        player = fake_session.query(Player.platformid == '76561198018756583').first()
        assert(player is not None)

        r = Request('GET', LOCAL_URL + '/api/player/76561198018756583/match_history?page=0&limit=10')
        response = test_client.send(r)
        assert response.status_code == 200
        assert len(response.json['replays']) == 1
Пример #3
0
    def test_tag_modification_with_private_key(self, test_client, mock_user):
        fake_session = get_current_session()

        # Create tag
        r = Request('PUT', LOCAL_URL + '/api/tag/TAG')
        response = test_client.send(r)

        assert(response.status_code == 201)
        data = response.json
        assert data['name'] == 'TAG'
        assert data['ownerId'] == default_player_id()

        tag = fake_session.query(Tag).first()
        assert tag.name == 'TAG'
        assert tag.owner == default_player_id()
        assert tag.private_id is None

        r = Request('PUT', LOCAL_URL + '/api/tag/TAG/private_key/fake_private_id')
        response = test_client.send(r)
        assert(response.status_code == 204)

        fake_session.close()
        fake_session = get_current_session()

        tag = fake_session.query(Tag).first()
        assert tag.name == 'TAG'
        assert tag.owner == default_player_id()
        assert tag.private_id == 'fake_private_id'

        r = Request('GET', LOCAL_URL + '/api/tag/TAG/private_key')
        response = test_client.send(r)

        assert(response.status_code == 200)
        assert response.json == ServiceTag.encode_tag(tag.id, 'fake_private_id')
    def test_replay_basic_server_upload_with_tags_gcp(self, test_client, gcp):
        responses.add(responses.POST, gcp.get_url())
        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert game is None
        params = {
            'player_id': default_player_id(),
            'tags': [TAG_NAME, TAG_NAME + "hello"]
        }
        r = Request('POST',
                    LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)},
                    params=params)

        response = test_client.send(r)

        assert (response.status_code == 202)

        assert len(responses.calls) == 1

        request_url = responses.calls[0].request.url
        parse_result = urllib.parse.urlparse(request_url)
        query_result = urllib.parse.parse_qs(parse_result.query)
        assert query_result['player_id'] == [str(default_player_id())]
        assert query_result['tags'] == [TAG_NAME, TAG_NAME + "hello"]
        assert query_result['uuid'] is not None
    def test_replay_basic_server_upload_private_replay(self, test_client, gcp):
        responses.add(responses.POST, gcp.get_url())
        game = get_current_session().query(Game).filter(Game.hash == '70DDECEA4653AC55EA77DBA0DB497995').all()
        assert len(game) == 0
        date = datetime.utcnow()
        timestamp = int(datetime.timestamp(date))

        params = {'player_id': default_player_id(), 'visibility': GameVisibilitySetting.PRIVATE.name,
                  'release_date': str(timestamp)}
        r = Request('POST', LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)}, params=params)

        response = test_client.send(r)

        assert(response.status_code == 202)

        assert len(responses.calls) == 1

        request_url = responses.calls[0].request.url
        parse_result = urllib.parse.urlparse(request_url)
        query_result = urllib.parse.parse_qs(parse_result.query)
        assert query_result['player_id'] == [str(default_player_id())]
        assert query_result['visibility'] == [GameVisibilitySetting.PRIVATE.name]
        assert query_result['release_date'] == [str(float(timestamp))]
        assert query_result['uuid'] is not None
    def test_replay_basic_server_upload_with_tag(self, test_client):
        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert game is None
        params = {'player_id': default_player_id(), 'tags': TAG_NAME}
        r = Request('POST',
                    LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)},
                    params=params)

        response = test_client.send(r)

        assert (response.status_code == 202)

        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert (game.hash == '70DDECEA4653AC55EA77DBA0DB497995')

        assert (game.name == '3 kickoffs 4 shots')
        assert (len(game.tags) == 1)
        assert (game.tags[0].name == TAG_NAME)
        assert (game.tags[0].owner == default_player_id())
        assert (game.tags[0].games[0] == game)

        player = fake_session.query(
            Player.platformid == '76561198018756583').first()
        assert (player is not None)
    def test_replay_basic_server_upload_private_replay(self, test_client):
        game = get_current_session().query(Game).filter(Game.hash == '70DDECEA4653AC55EA77DBA0DB497995').all()
        assert len(game) == 0
        date = datetime.utcnow()
        timestamp = int(datetime.timestamp(date))

        params = {'player_id': default_player_id(), 'visibility': GameVisibilitySetting.PRIVATE.name,
                  'release_date': str(timestamp)}
        r = Request('POST', LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)}, params=params)

        response = test_client.send(r)

        assert(response.status_code == 202)

        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert(game.hash == '70DDECEA4653AC55EA77DBA0DB497995')
        assert(game.visibility == GameVisibilitySetting.PRIVATE)

        game_visiblity = fake_session.query(GameVisibility).first()
        assert(game_visiblity.game == game.hash)
        assert(game_visiblity.player == default_player_id())
        assert(game_visiblity.visibility == GameVisibilitySetting.PRIVATE)
        assert(game_visiblity.release_date == hour_rounder(date))
    def test_setting_visibility_fails_if_replay_exists(self, test_client, no_errors_are_logged):
        no_errors_are_logged.cancel_check()
        date = datetime.utcnow()
        timestamp = int(datetime.timestamp(date))

        r = Request('POST', LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)})

        response = test_client.send(r)

        assert(response.status_code == 202)
        time.sleep(1)

        params = {'player_id': default_player_id(), 'visibility': GameVisibilitySetting.PRIVATE.name,
                  'release_date': str(timestamp)}
        r = Request('POST', LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', io.BytesIO(self.file))}, params=params)

        response = test_client.send(r)

        assert(response.status_code == 202)

        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert(game.hash == '70DDECEA4653AC55EA77DBA0DB497995')
        assert(game.visibility == GameVisibilitySetting.DEFAULT)

        game_visiblity = fake_session.query(GameVisibility).first()
        assert(game_visiblity is None)
        assert(no_errors_are_logged.mock_is_called())
    def test_replay_edit_private_replay_no_permission(self, test_client,
                                                      fake_user):
        game = get_current_session().query(Game).first()
        assert game is None

        r = Request('POST',
                    LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)})

        response = test_client.send(r)

        assert (response.status_code == 202)

        api_url = '/api/replay/70DDECEA4653AC55EA77DBA0DB497995/visibility/' + GameVisibilitySetting.PRIVATE.name
        r = Request('PUT', LOCAL_URL + api_url)

        fake_user.setUser(default_player_id())

        response = test_client.send(r)

        assert (response.status_code == 404)

        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert (game.hash == '70DDECEA4653AC55EA77DBA0DB497995')
        assert (game.visibility == GameVisibilitySetting.DEFAULT)

        game_visiblity = fake_session.query(GameVisibility).first()
        assert (game_visiblity is None)
Пример #10
0
    def test_tag_creation_no_private_key(self, test_client, mock_user):
        fake_session = get_current_session()
        r = Request('PUT', LOCAL_URL + '/api/tag/TAG')

        response = test_client.send(r)

        assert(response.status_code == 201)
        data = response.json
        assert data['name'] == 'TAG'
        assert data['ownerId'] == default_player_id()

        tag = fake_session.query(Tag).first()
        assert tag.name == 'TAG'
        assert tag.owner == default_player_id()
        assert tag.private_id is None

        r = Request('GET', LOCAL_URL + '/api/tag/TAG/private_key')

        response = test_client.send(r)
        assert(response.status_code == 404)
    def test_replay_basic_server_upload_private_replay_invalid_release_date(self, test_client):
        params = {'player_id': default_player_id(), 'visibility': GameVisibilitySetting.PRIVATE.name,
                  'release_date': 'TODAY'}
        r = Request('POST', LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)}, params=params)

        response = test_client.send(r)

        assert(response.status_code == 400)

        data = response.json['message']
        assert(str(data) == InvalidQueryParamFormat(visibility_params[0], 'TODAY').message)
Пример #12
0
def initialize_database_tags(initialize_database_small_replays):
    from backend.blueprints.spa_api.service_layers.replay.json_tag import JsonTag
    from backend.database.wrapper.tag_wrapper import TagWrapper

    session = initialize_database_small_replays.get_session()
    replay_ids = initialize_database_small_replays.get_ids()

    tags = [
        ("tag1", 0, 5, "private_id1"),  # grabs the first 5 replays in the list
        ("tag2", 2, 2,
         None),  # starts at the 2nd replay and then gets the next 2
        ("tag3", -5, 4, "private_id2"),  # grabs the last 4 replays in the list
        ("tag4", -6, 4,
         None),  # starts 6 back from the end and grabs 4 replays
    ]

    tagged_games = {}
    for tag in tags:
        tagged_games[tag[0]] = []

        created_tag = JsonTag.create(tag[0],
                                     session=session,
                                     player_id=default_player_id(),
                                     private_id=tag[3])
        game_ids = replay_ids[tag[1]:tag[1] + tag[2]]
        for game_id in game_ids:
            tagged_games[tag[0]].append(game_id)
            TagWrapper.add_tag_to_game(session, game_id, created_tag.db_tag)

    class wrapper:
        def get_session(self):
            return session

        def get_protos(self):
            return initialize_database_small_replays.get_protos()

        def get_ids(self):
            return replay_ids

        def get_tags(self):
            return tags

        def get_tagged_games(self):
            return tagged_games

    return wrapper()
    def test_replay_basic_server_upload_with_private_tags(
            self, test_client, mock_user):
        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert game is None

        params = {'private_key': 'fake_private_key'}
        r = Request('PUT', LOCAL_URL + '/api/tag/' + TAG_NAME, params=params)
        response = test_client.send(r)

        assert (response.status_code == 201)

        tag = fake_session.query(Tag).first()

        r = Request('GET', LOCAL_URL + '/api/tag/' + TAG_NAME + '/private_key')
        response = test_client.send(r)

        encoded_key = ServiceTag.encode_tag(tag.id, tag.private_id)
        assert response.json == encoded_key

        params = {'private_tag_keys': [encoded_key]}
        r = Request('POST',
                    LOCAL_URL + '/api/upload',
                    files={'replays': ('fake_file.replay', self.stream)},
                    params=params)

        response = test_client.send(r)

        assert (response.status_code == 202)

        fake_session = get_current_session()
        game = fake_session.query(Game).first()
        assert (game.hash == '70DDECEA4653AC55EA77DBA0DB497995')

        assert (game.name == '3 kickoffs 4 shots')
        assert (len(game.tags) == 1)
        assert (game.tags[0].name == TAG_NAME)
        assert (game.tags[0].owner == default_player_id())
        assert (game.tags[0].games[0] == game)
        assert (game.tags[0].private_id == 'fake_private_key')

        player = fake_session.query(
            Player.platformid == '76561198018756583').first()
        assert (player is not None)
Пример #14
0
 def __init__(self):
     self.user = Player(platformid=default_player_id(), platformname="default")
Пример #15
0
 def __init__(self):
     self.logged_out = False
     self.user = Player(platformid=default_player_id(),
                        platformname="default")