def test_begin_game_3_players_ready(self):
        user = User(email='*****@*****.**', name='test', password='******')
        user2 = User(email='*****@*****.**', name='test', password='******')
        user3 = User(email='*****@*****.**', name='test', password='******')
        game = Game()
        db_committing_function(user, user2, user3, game)
        player = Player(gameId=game.id, userId=user.id, name=user.name)
        player2 = Player(gameId=game.id, userId=user2.id, name=user2.name, ready=True)
        player3 = Player(gameId=game.id, userId=user3.id, name=user3.name, ready=True)
        db_committing_function(player, player2, player3)

        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/start?player_id=" + str(player.id)+"&test=True",
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res.status_code, 200)
        assert b'Starting' in res.data
        assert b'game' in res.data
        self.assertTrue(game.started)
        self.assertTrue(player.left_id and player.right_id)
        self.assertTrue(player2.left_id and player2.right_id)
        self.assertTrue(player3.left_id and player3.right_id)
    def test_play_card_played(self):
        user = User(email='*****@*****.**', name='test', password='******')
        user1 = User(email='*****@*****.**', name='test', password='******')
        user2 = User(email='*****@*****.**', name='test', password='******')
        game = Game(started=True, age=1, round=1)
        card = Card("Clay Pool", 3, 1, "brown")
        db_committing_function(user, user1, user2, game, card)

        players = []
        player = Player(gameId=game.id, userId=user.id, name=user.name)
        players.append(player)
        players.append(Player(gameId=game.id, userId=user1.id, name=user1.name))
        players.append(Player(gameId=game.id, userId=user2.id, name=user2.name))
        db_committing_function(players)
        set_player_neighbours(players)

        round = Round(playerId=player.id, cardId=card.id)
        db_committing_function(round)

        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/play_card?player_id=" + str(player.id) +
            "&card_id=" + str(card.id) + "&discarded=false&for_wonder=false",
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res.status_code, 200)
        assert b'"possible": true' in res.data
        self.assertTrue(get_cards(player=player, history=True))
    def test_create_game_single_player(self):
        user = User(email='*****@*****.**', name='test', password='******')
        ai = []
        for i in range(6):
            name = 'Computer Player ' + str(i + 1)
            ai.append(User(
                email=i,
                name=name,
                password=name + str(i)
            ))
        db_committing_function(user, ai)

        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/create?single_player=true&ai_players=2",
            headers={
                'Authorization': token,
            }
        )

        player = get_player(json.loads(res.data.decode("utf-8")).get('player_id'))
        game = get_game(player=player)

        self.assertEqual(res.status_code, 200)
        assert b'"player_id": 1' in res.data
        assert b'"playerCount": 3' in res.data
        self.assertTrue(game.single_player)
    def test_check_game(self):
        user = User(email='*****@*****.**', name='test', password='******')
        game = Game()
        db_committing_function(user, game)
        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/check",
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res.status_code, 200)
        self.assertTrue(json.loads(res.data.decode("utf-8")), ['Need to join game'])

        player = Player(gameId=game.id, userId=user.id, name=user.name)
        db_committing_function(player)
        res2 = self.client.get(
            "/api/game/check",
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res2.status_code, 200)
        assert b'player_id' in res2.data
    def test_create_game(self):
        user = User(email='*****@*****.**', name='test', password='******')
        db_committing_function(user)
        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/create?single_player=false",
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res.status_code, 200)
        assert b'"player_id": 1' in res.data
        assert b'"playerCount": 1' in res.data
Exemple #6
0
def get_token():
    """
    Get function for current user token

    :return: returns current token in JSON if success; if fail, return error in JSON
    """
    incoming = request.get_json()
    user = User.get_user_with_email_and_password(incoming["email"],
                                                 incoming["password"])
    if user:
        session['user_id'] = user.id
        session['username'] = user.username
        return jsonify(token=generate_token(user))

    return jsonify(error=True), 403
Exemple #7
0
def login():
    data = request.authorization
    print(data)
    if not data or not data['username'] or not data['password']:
        return jsonify(message='Could not verify'), 401

    user = User.query.filter_by(email=data['username'].lower()).first()

    if not user:
        return jsonify(message='User not found'), 401
    if user.check_password(data['password']):
        
        token = generate_token(user)
        return jsonify({'user': { 'username': user.username, 'token': token }})
    
    return jsonify(message='Wrong password'), 401
    def test_begin_game_1_player(self):
        user = User(email='*****@*****.**', name='test', password='******')
        game = Game()
        db_committing_function(user, game)
        player = Player(gameId=game.id, userId=user.id, name=user.name)
        db_committing_function(player)

        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/start?player_id=" + str(player.id),
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res.status_code, 200)
        assert b'Waiting' in res.data
    def test_end_game(self):
        user = User(email='*****@*****.**', name='test', password='******')
        game = Game(started=True)
        db_committing_function(user, game)
        player = Player(gameId=game.id, userId=user.id, name=user.name)
        db_committing_function(player)

        token = auth.generate_token(user)
        res = self.client.get(
            "/api/game/end?player_id=" + str(player.id),
            headers={
                'Authorization': token,
            }
        )

        self.assertEqual(res.status_code, 200)
        assert b'Success' in res.data
        self.assertTrue(game.complete)
Exemple #10
0
def create_user():
    """
    Create a new user in database.
    It checks for duplicate email address

    :return: returns user id and token in JSON if no duplicate user is found;
    if found, return error in JSON

    """
    incoming = request.get_json()
    user = User(email=incoming["email"],
                password=incoming["password"],
                username=incoming["username"])
    db.session.add(user)

    try:
        db.session.commit()
    except IntegrityError:
        return jsonify(message="User with that email already exists"), 409

    new_user = User.query.filter_by(email=incoming["email"]).first()
    db.engine.execute("insert into user_info values(" + str(new_user.id) +
                      ",now(),null)")
    return jsonify(id=user.id, token=generate_token(new_user))