def test_index_existing_game(app, monkeypatch): mock_http = MockHttp(200, content=json.dumps({'access_token': '123'})) monkeypatch.setattr(httplib2, 'Http', mock_http) userX = users.User('*****@*****.**', _user_id='123') firetactoe.Game(id='razem', userX=userX).put() response = app.get('/?g=razem') if 'g=' not in response.body: raise AssertionError # Look for the unique game token if not re.search( r'initGame[^\n]+\'[\w+/=]+\.[\w+/=]+\.[\w+/=]+\'', response.body): raise AssertionError if firetactoe.Game.query().count() != 1: raise AssertionError game = ndb.Key('Game', 'razem').get() if game is None: raise AssertionError if game.userO.user_id() != '38': raise AssertionError if not mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/'): raise AssertionError if mock_http.request_method != 'PATCH': raise AssertionError
def test_index_existing_game(app, monkeypatch): with mock.patch("google.auth.transport.requests.AuthorizedSession.request", autospec=True) as auth_session: data = {'access_token': '123'} auth_session.return_value = MockResponse(data, http_client.OK) userX = users.User('*****@*****.**', _user_id='123') firetactoe.Game(id='razem', userX=userX).put() response = app.get('/?g=razem') assert 'g=' in response.body # Look for the unique game token assert re.search(r'initGame[^\n]+\'[\w+/=]+\.[\w+/=]+\.[\w+/=]+\'', response.body) assert firetactoe.Game.query().count() == 1 game = ndb.Key('Game', 'razem').get() assert game is not None assert game.userO.user_id() == '38' auth_session.assert_called_once_with( mock.ANY, # AuthorizedSession object method="PATCH", url="http://firebase.com/test-db-url/channels/38razem.json", body= '{"winner": null, "userX": "123", "moveX": null, "winningBoard": null, "board": null, "userO": "38"}', data=None, )
def test_index_nonexisting_game(app, monkeypatch): mock_http = MockHttp(200) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.get('/?g=razemfrazem', status=404) assert mock_http.request_url is None
def test_index_nonexisting_game(app, monkeypatch): mock_http = MockHttp(200, content=json.dumps({'access_token': '123'})) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.get('/?g=razemfrazem', status=404) if mock_http.request_url is not None: raise AssertionError
def test_delete(app, monkeypatch): mock_http = MockHttp(200) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.post('/delete?g=razem', status=200) assert mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/') assert mock_http.request_method == 'DELETE'
def test_opened(app, monkeypatch): mock_http = MockHttp(200, content=json.dumps({'access_token': '123'})) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.post('/opened?g=razem', status=200) assert mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/') assert mock_http.request_method == 'PATCH'
def test_bad_move(app, monkeypatch): mock_http = MockHttp(200, content=json.dumps({'access_token': '123'})) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game( id='razem', userX=users.get_current_user(), board=9*' ', moveX=True).put() app.post('/move?g=razem', {'i': 10}, status=400) if mock_http.request_url is not None: raise AssertionError
def test_bad_move(app, monkeypatch): mock_http = MockHttp(200) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user(), board=9 * ' ', moveX=True).put() app.post('/move?g=razem', {'i': 10}, status=400) assert mock_http.request_url is None
def test_index_nonexisting_game(app, monkeypatch): with mock.patch("google.auth.transport.requests.AuthorizedSession.request", autospec=True) as auth_session: data = {'access_token': '123'} auth_session.return_value = MockResponse(data, http_client.OK) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.get('/?g=razemfrazem', status=404) assert not auth_session.called
def test_delete(app, monkeypatch): mock_http = MockHttp(200, content=json.dumps({'access_token': '123'})) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.post('/delete?g=razem', status=200) if not mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/'): raise AssertionError if mock_http.request_method != 'DELETE': raise AssertionError
def test_delete(app, monkeypatch): with mock.patch("google.auth.transport.requests.AuthorizedSession.request", autospec=True) as auth_session: data = {'access_token': '123'} auth_session.return_value = MockResponse(data, http_client.OK) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.post('/delete?g=razem', status=200) auth_session.assert_called_once_with( mock.ANY, # AuthorizedSession object method="DELETE", url="http://firebase.com/test-db-url/channels/38razem.json", )
def test_bad_move(app, monkeypatch): with mock.patch("google.auth.transport.requests.AuthorizedSession.request", autospec=True) as auth_session: data = {'access_token': '123'} auth_session.return_value = MockResponse(data, http_client.OK) firetactoe.Game(id='razem', userX=users.get_current_user(), board=9 * ' ', moveX=True).put() app.post('/move?g=razem', {'i': 10}, status=400) assert not auth_session.called
def test_move(app, monkeypatch): mock_http = MockHttp(200) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game(id='razem', userX=users.get_current_user(), board=9 * ' ', moveX=True).put() app.post('/move?g=razem', {'i': 0}, status=200) game = ndb.Key('Game', 'razem').get() assert game.board == 'X' + (8 * ' ') assert mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/') assert mock_http.request_method == 'PATCH'
def test_opened(app, monkeypatch): with mock.patch("google.auth.transport.requests.AuthorizedSession.request", autospec=True) as auth_session: data = {'access_token': '123'} auth_session.return_value = MockResponse(data, http_client.OK) firetactoe.Game(id='razem', userX=users.get_current_user()).put() app.post('/opened?g=razem', status=200) auth_session.assert_called_once_with( mock.ANY, # AuthorizedSession object method="PATCH", url="http://firebase.com/test-db-url/channels/38razem.json", body= '{"winner": null, "userX": "38", "moveX": null, "winningBoard": null, "board": null, "userO": null}', data=None, )
def test_move(app, monkeypatch): mock_http = MockHttp(200, content=json.dumps({'access_token': '123'})) monkeypatch.setattr(httplib2, 'Http', mock_http) firetactoe.Game( id='razem', userX=users.get_current_user(), board=9*' ', moveX=True).put() app.post('/move?g=razem', {'i': 0}, status=200) game = ndb.Key('Game', 'razem').get() if game.board != 'X' + (8 * ' '): raise AssertionError if not mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/'): raise AssertionError if mock_http.request_method != 'PATCH': raise AssertionError
def test_index_existing_game(app, monkeypatch): mock_http = MockHttp(200) monkeypatch.setattr(httplib2, 'Http', mock_http) userX = users.User('*****@*****.**', _user_id='123') firetactoe.Game(id='razem', userX=userX).put() response = app.get('/?g=razem') assert 'g=' in response.body # Look for the unique game token assert re.search(r'initGame[^\n]+\'[\w+/=]+\.[\w+/=]+\.[\w+/=]+\'', response.body) assert firetactoe.Game.query().count() == 1 game = ndb.Key('Game', 'razem').get() assert game is not None assert game.userO.user_id() == '38' assert mock_http.request_url.startswith( 'http://firebase.com/test-db-url/channels/') assert mock_http.request_method == 'PATCH'