Beispiel #1
0
    def test_proto_upload_with_tags(self, test_client):
        proto, pandas, proto_game = write_proto_pandas_to_file(get_test_file(get_complex_replay_list()[0],
                                                                             is_replay=True))

        with open(proto, 'rb') as f:
            encoded_proto = base64.b64encode(zlib.compress(f.read())).decode()
        with open(pandas, 'rb') as f:
            encoded_pandas = base64.b64encode(zlib.compress(f.read())).decode()
        obj = {
            'status': '200',
            'proto': encoded_proto,
            'pandas': encoded_pandas
        }
        r = Request('POST', LOCAL_URL + '/api/upload/proto', json=obj, params={'tags': [TAG_NAME, TAG_NAME + "hello"],
                                                                               'player_id': proto_game.players[0].id.id})
        response = test_client.send(r)
        assert(response.status_code == 200)

        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 == proto_game.players[0].id.id)
        assert(game.tags[0].games[0] == game)

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

        player = fake_session.query(Player.platformid == proto_game.players[0].id.id).first()
        assert(player is not None)
    def test_proto_upload_with_privacy(self, test_client):

        proto, pandas, proto_game = write_proto_pandas_to_file(get_test_file(get_complex_replay_list()[0],
                                                                             is_replay=True))

        with open(proto, 'rb') as f:
            encoded_proto = base64.b64encode(zlib.compress(f.read())).decode()
        with open(pandas, 'rb') as f:
            encoded_pandas = base64.b64encode(zlib.compress(f.read())).decode()
        obj = {
            'status': '200',
            'proto': encoded_proto,
            'pandas': encoded_pandas
        }
        r = Request('POST', LOCAL_URL + '/api/upload/proto', json=obj, params={'visibility': GameVisibilitySetting.PRIVATE.name,
                                                                               'player_id': proto_game.players[0].id.id})
        response = test_client.send(r)
        assert(response.status_code == 200)

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

        assert(game.name == '3 kickoffs 4 shots')
        assert(game.visibility == GameVisibilitySetting.PRIVATE)

        game_visiblity = fake_session.query(GameVisibility).first()
        assert(game_visiblity.game == game.hash)
        assert(game_visiblity.player == proto_game.players[0].id.id)
        assert(game_visiblity.visibility == GameVisibilitySetting.PRIVATE)
        assert(game_visiblity.release_date == datetime.max)

        player = fake_session.query(Player.platformid == proto_game.players[0].id.id).first()
        assert(player is not None)
    def test_upload_files(self, mock_user, no_errors_are_logged):
        no_errors_are_logged.cancel_check()

        mock_user.set_fake_user(
            Player(platformid='76561198018756583', platformname='fake'))

        replay_list = get_complex_replay_list()[0:4]

        tags = ['TAG1', 'TAG2', 'TAG3', ['TAG4', 'TAG2']]
        privacy = [
            GameVisibilitySetting.DEFAULT.name,
            GameVisibilitySetting.PUBLIC.name,
            GameVisibilitySetting.PRIVATE.name,
            GameVisibilitySetting.PRIVATE.name
        ]
        users = [
            'invalid', '76561198018756583', '76561198018756583',
            '76561198018756583'
        ]

        for index, replay_url in enumerate(replay_list):
            params = {
                'tags': tags[index],
                'visibility': privacy[index],
                'player_id': users[index]
            }
            logger.debug('Testing:', replay_url)
            f = download_replay_discord(replay_url)
            r = requests.post(LOCAL_URL + '/api/upload',
                              files={'replays': ('fake_file.replay', f)},
                              params=params)
            r.raise_for_status()
            assert (r.status_code == 202)

        for i in range(len(replay_list) + 1):
            logger.debug('waiting ', (len(replay_list) - i) * sleep_time,
                         'seconds')
            time.sleep(sleep_time)

        time.sleep(sleep_time)
        r = requests.get(LOCAL_URL + '/api/global/replay_count')

        result = json.loads(r.content)
        assert (int(result) == len(replay_list))

        response = requests.get(LOCAL_URL + '/api/tag')

        result = json.loads(response.content)
        assert result[0]['owner_id'] == "76561198018756583"
        assert result[0]['name'].startswith('TAG')
        assert len(result) == 3

        response = requests.get(
            LOCAL_URL +
            '/api/player/76561198018756583/match_history?page=0&limit=10')
        assert response.status_code == 200
        assert len(response.json()['replays']) >= 1
Beispiel #4
0
 def test_parse_replay(self, temp_folder):
     write_files_to_disk([get_complex_replay_list()[0]],
                         temp_folder=temp_folder)
     result = parse_replay_task.apply(throw=True,
                                      kwargs={
                                          'replay_to_parse_path':
                                          get_test_file(
                                              '3_KICKOFFS_4_SHOTS.replay',
                                              temp_folder=temp_folder),
                                          'force_reparse':
                                          True
                                      }).get()
     assert (result == '70DDECEA4653AC55EA77DBA0DB497995')
 def setup_method(self):
     replay_url = get_complex_replay_list()[0]
     f = download_replay_discord(replay_url)
     self.file = f
     self.stream = io.BytesIO(self.file)
 def setup_method(self, method):
     self.session, self.protos, self.guids = initialize_db_with_replays(
         [get_complex_replay_list()[0]])
     self.guid = self.guids[0]
     self.proto = self.protos[0]
Beispiel #7
0
    def test_upload_files(self, mock_user, no_errors_are_logged):
        no_errors_are_logged.cancel_check()

        mock_user.set_user(
            Player(platformid='76561198018756583', platformname='fake'))

        replay_list = get_complex_replay_list()[0:4]

        tags = [['TAG1'], ['TAG2'], ['TAG3'], ['TAG4', 'TAG2']]
        privacy = [
            GameVisibilitySetting.DEFAULT.name,
            GameVisibilitySetting.PUBLIC.name,
            GameVisibilitySetting.PRIVATE.name,
            GameVisibilitySetting.PRIVATE.name
        ]
        users = [
            '76561198018756583', 'invalid', '76561198018756583',
            '76561198018756583'
        ]

        tag_keys = ['invalid_key']

        def create_all_tags():
            created_tags = []
            for _tags in tags:
                keys = []
                for _tag in _tags:
                    if _tag not in created_tags:
                        r = requests.put(LOCAL_URL + f'/api/tag/{_tag}')
                        r.raise_for_status()
                        created_tags.append(_tag)

                        # create private id
                        r = requests.put(LOCAL_URL +
                                         f'/api/tag/{_tag}/private_key/{_tag}')
                        r.raise_for_status()
                    json = requests.get(LOCAL_URL +
                                        f'/api/tag/{_tag}/private_key').json()
                    keys.append(json)
                tag_keys.append(keys)

        for index, replay_url in enumerate(replay_list):
            if index == 1:
                logger.error("CREATING INITIAL TAG DATA")
                time.sleep(20)
                create_all_tags()
                time.sleep(1)

            params = {
                'visibility': privacy[index],
                'player_id': users[index],
                'private_tag_keys': tag_keys[index]
            }
            logger.debug('TESTING URL:' + str(replay_url))
            logger.debug('TESTING PARAMS:' + str(params))
            f = download_replay_discord(replay_url)
            r = requests.post(LOCAL_URL + '/api/upload',
                              files={'replays': ('fake_file.replay', f)},
                              params=params)
            r.raise_for_status()
            assert (r.status_code == 202)

        for i in range(len(replay_list) + 1):
            logger.debug('waiting ', (len(replay_list) - i) * sleep_time,
                         'seconds')
            time.sleep(sleep_time)

        time.sleep(sleep_time)
        r = requests.get(LOCAL_URL + '/api/global/replay_count')

        result = json.loads(r.content)
        assert (int(result) == len(replay_list))

        response = requests.get(LOCAL_URL + '/api/tag')
        result = json.loads(response.content)
        assert result[0]['ownerId'] == "76561198018756583"
        assert result[0]['name'].startswith('TAG')
        assert len(result) == 4

        response = requests.get(
            LOCAL_URL +
            '/api/player/76561198018756583/match_history?page=0&limit=10')
        assert response.status_code == 200
        assert len(response.json()['replays']) >= 1