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)
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
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)
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)
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)
def __init__(self): self.user = Player(platformid=default_player_id(), platformname="default")
def __init__(self): self.logged_out = False self.user = Player(platformid=default_player_id(), platformname="default")