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