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
예제 #2
0
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,
        )
예제 #3
0
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
예제 #5
0
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'
예제 #6
0
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
예제 #8
0
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
예제 #9
0
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
예제 #11
0
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",
        )
예제 #12
0
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
예제 #13
0
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'
예제 #14
0
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
예제 #16
0
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'