def test_edit_profile(client, user, user2, path, data, message): conftest.login(client, user) assert message in client.post(path, data=data, follow_redirects=True).data if User.query.get(user.user_id).email == NEW_EMAIL: User.query.get(user.user_id).email = EMAIL conftest.db.session.commit() conftest.logout(client)
def test_add_remove_recipe(client, user, product, ingredient): product_id = product.product_id ingredient_id = ingredient.ingredient_id conftest.login(client, user) assert Recipe.query.filter( and_(Recipe.product_id == product_id, Recipe.ingredient_id == ingredient_id)).first() is None unit = Unit.query.get(ingredient.unit_id) if unit.symbol: name = unit.symbol else: name = unit.name data = {'ingredient': ingredient.name, 'amount': 500, 'unit': name} client.post(f"{conftest.ROUTES['view_product']}{product_id}/", data=data) assert Recipe.query.filter( and_(Recipe.product_id == product_id, Recipe.ingredient_id == ingredient_id)).first() is not None assert (conftest.MESSAGES['existing_ingredient'] in client.post(f"{conftest.ROUTES['view_product']}{product_id}/", data=data).data) client.get(f"{conftest.ROUTES['view_product']}{product_id}" f"{conftest.ROUTES['delete_ingredient']}{ingredient_id}/") assert Recipe.query.filter( and_(Recipe.product_id == product_id, Recipe.ingredient_id == ingredient_id)).first() is None conftest.logout(client)
def test_delete_product(client, user, product): product_id = product.product_id conftest.login(client, user) client.get(f"{conftest.ROUTES['view_product']}" f"{product_id}{conftest.ROUTES['delete_product']}") assert Product.query.get(product_id) is None conftest.logout(client)
def test_edit_available_upon_login(client, user): user_id = user.user_id assert (conftest.MESSAGES['edit'] not in client.get(f"{conftest.ROUTES['profile']}{user_id}/").data) conftest.login(client, user) assert (conftest.MESSAGES['edit'] in client.get(f"{conftest.ROUTES['profile']}{user_id}/").data) conftest.logout(client)
def test_alreadyLoggedIn2(self, testClient, testUser2): self.form = {"username": "******", 'password': '******'} with testClient: login(testClient, "sarahsmith", 'password1234') assert current_user == testUser2 response = testClient.get(url_for('main.index', _external=False), follow_redirects=True) assert b'Search for Business' in response.data logout(testClient)
def test_share_product(client, user, product): conftest.login(client, user) product_id = product.product_id public = product.public client.get(f"{conftest.ROUTES['view_product']}{product_id}" f"{conftest.ROUTES['share']}") assert Product.query.get(product_id).public != public client.get(f"{conftest.ROUTES['view_product']}{product_id}" f"{conftest.ROUTES['share']}") assert Product.query.get(product_id).public == public conftest.logout(client)
def test_product_add_success(client, user): conftest.login(client, user) data = {'name': 'test_product', 'amount': 500, 'unit': 'g', 'public': True} assert (client.post( conftest.ROUTES['new_product'], data=data, follow_redirects=True).status_code == conftest.HTTP_CODES['ok']) product = Product.query.filter( and_(Product.name == data['name'], Product.user_id == user.user_id)).first() assert product is not None conftest.delete(product) conftest.logout(client)
def test_post_vote(test_client): """ GIVEN: Flask app with test conf WHEN: '/post_full' rating section, valid rating count and message - login "vote up"/"vote up" after vote/logout vote THEN: vote == 1 without message/error message "already vote"/error message "need login" """ login(test_client, app.config['USERNAME'], app.config['PASSWORD']) res = test_client.get('/post_full_vote', query_string=dict(vote='up')) assert b"\"rating\": 1" in res.data res = test_client.get('/post_full_vote', query_string=dict(vote='up')) assert b"You already rate this post" in res.data logout(test_client) rv = test_client.get('/post_full_vote') assert b"You need login for rate this post" in rv.data
def test_new(self, testClient): self.form = {"username": "******", 'password': '******'} response = self.postRequest(testClient) assert response.status_code == 200 assert b'Search for Business' in response.data response = logout(testClient) check = testClient.get(url_for('auth.welcome', _external=False), follow_redirects=True) assert response.data == check.data assert b'Search for Business' not in response.data
def test_add_post(test_client): """ GIVEN: Flask app with test conf WHEN: '/add_post' POST method with data, login/logout THEN: check possible to add post login user, cant add on logout """ login(test_client, app.config['USERNAME'], app.config['PASSWORD']) rv = test_client.post('/add_post', data=dict(title='Hello', body='World'), follow_redirects=True) assert b"Hello" in rv.data assert b"World" in rv.data logout(test_client) rv = test_client.post('/add_post', data=dict(title='NOTHello', body='NOTWorld'), follow_redirects=True) assert b"NOTHello" not in rv.data assert b"NOTWorld" not in rv.data
def test_add_post_auth(test_client): """ GIVEN: Flask app with test conf WHEN: '/' on login/logout user THEN: "Add post" visible on login, hide on logout #TODO: add_post only confirmed USER access """ rv = login(test_client, app.config['USERNAME'], app.config['PASSWORD']) assert b"Add post" in rv.data rv = logout(test_client) assert b"Add post" not in rv.data
def test_login_logout(test_client): """ GIVEN: Flask app with test conf WHEN: '/' page with login/logout + login with invalid username, password THEN: check valid response + signin error """ rv = login(test_client, app.config['USERNAME'], app.config['PASSWORD']) assert b"BLOG" in rv.data assert b"Log-out" in rv.data assert b'You have entered incorrect username or password' not in rv.data rv = logout(test_client) assert b"BLOG" in rv.data assert b"Sign-In" in rv.data assert b"Registration" in rv.data assert b"You have entered incorrect username or password" not in rv.data rv = login(test_client, app.config['USERNAME'] + 'x', app.config['PASSWORD']) assert b"You have entered incorrect username or password" in rv.data rv = login(test_client, app.config['USERNAME'], app.config['PASSWORD'] + 'x') assert b"You have entered incorrect username or password" in rv.data
def test_product_add_fail(client, user): conftest.login(client, user) data = {'name': 'test product', 'amount': 500, 'unit': 'g', 'public': True} assert (conftest.MESSAGES['existing_product'] in client.post(conftest.ROUTES['new_product'], data=data).data) conftest.logout(client)
def test_products_page_returns_ok(client, user): conftest.login(client, user) assert (client.get( conftest.ROUTES['products']).status_code == conftest.HTTP_CODES['ok']) conftest.logout(client)