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
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]
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