def setUp(self): self.app = create_app('testing') self.app_context = self.app.app_context() self.app_context.push() db.create_all() users = [ generate_fake_user(username="******", email="*****@*****.**", password="******"), generate_fake_user(username="******"), generate_fake_user(username="******") ] if not try_add(*users): self.fail("Couldn't create users in SetUp") print(User.query.get(1))
def test_token_auth(self): u = generate_fake_user(username="******", email="*****@*****.**", password="******") db.session.add(u) db.session.commit() # issue a request with a bad token response = self.client.get(url_for('api.battles_list'), headers=self.get_api_headers( 'bad-token', '')) self.assertTrue(response.status_code == 401) # get a token response = self.client.get(url_for('api.get_token'), headers=self.get_api_headers('test', '123')) self.assertTrue(response.status_code == 200) json_response = json.loads(response.data.decode('utf-8')) self.assertIsNotNone(json_response.get('token')) token = json_response['token'] # issue a request with the token response = self.client.get(url_for('api.battles_list'), headers=self.get_api_headers(token, '')) self.assertTrue(response.status_code == 200)
def generate_fake(user_count=7, battle_count=21, entry_count=100, vote_count=200): """ Generate fake users and battles. Gets 'model_count' arguments which means create not more than 'count' objects of class 'Model' """ from random import seed from app.helpers import (try_add, generate_fake_user, generate_fake_battle, generate_fake_entry, generate_fake_vote) user_count, battle_count, entry_count, vote_count = int(user_count), int(battle_count), \ int(entry_count), int(vote_count) seed() try_add(*(generate_fake_user() for _ in range(user_count))) # Because there is a small chance of collisions user_count = len(User.query.all()) print("User count is", user_count) try_add(*(generate_fake_battle() for _ in range(battle_count))) battle_count = len(Battle.get_list()) print("Battle count is", battle_count) try_add(*(generate_fake_entry() for _ in range(entry_count))) entry_count = len(Entry.get_list()) print("Entry count is", entry_count) try_add(*(generate_fake_vote() for _ in range(vote_count))) vote_count = len(Vote.query.all()) print("Vote count is", vote_count)
def test_bad_auth(self): u = generate_fake_user(email="*****@*****.**", password="******") db.session.add(u) db.session.commit() # authenticate with bad password response = self.client.get(url_for('api.battles_list'), headers=self.get_api_headers( '*****@*****.**', '456')) self.assertTrue(response.status_code == 401)
def test_get_list(self): battles = Battle.get_list() self.assertEqual(0, len(battles)) size = 10 creator = generate_fake_user() db.session.add(creator) for b in (generate_fake_battle(name="Battle" + str(i)) for i in range(size)): db.session.add(b) db.session.commit() battles = Battle.get_list() self.assertEqual(size, len(battles))
def test_voting(self): from app.helpers import (generate_fake_entry, generate_fake_vote, generate_fake_user, generate_fake_battle) voter = generate_fake_user() u_left = generate_fake_user() u_right = generate_fake_user() creator = generate_fake_user() b = generate_fake_battle(creator=creator) e_left = generate_fake_entry(user=u_left, battle=b) e_right = generate_fake_entry(user=u_right, battle=b) db.session.add_all((b, voter, u_left, u_right, e_left, e_right)) db.session.flush() db.session.refresh(e_left) db.session.refresh(e_right) v = generate_fake_vote(voter=voter, entry_left_id=e_left.id, entry_right_id=e_right.id, battle=b, chosen_entry='left') db.session.add(v) db.session.commit() self.assertGreater(e_left.rating, e_right.rating)
def test_users(self): # add two users u1 = generate_fake_user(username="******", email="*****@*****.**", password="******") u2 = generate_fake_user(username="******", email="*****@*****.**", password="******") db.session.add_all([u1, u2]) db.session.commit() # get users response = self.client.get(url_for('api.user', username=u1.username), headers=self.get_api_headers('one', '123')) self.assertTrue(response.status_code == 200) json_response = json.loads(response.data.decode('utf-8')) self.assertTrue(json_response['id'] == u1.id) response = self.client.get(url_for('api.user', username=u2.username), headers=self.get_api_headers('two', '456')) self.assertTrue(response.status_code == 200) json_response = json.loads(response.data.decode('utf-8')) self.assertTrue(json_response['id'] == u2.id)