TelegramAktienBot/api/tests/functional/test_keyword.py

190 lines
7.1 KiB
Python
Raw Permalink Normal View History

2022-04-12 07:50:24 +00:00
__author__ = "Florian Kaiser"
__copyright__ = "Copyright 2022, Project Aktienbot"
__credits__ = ["Florian Kaiser", "Florian Kellermann", "Linus Eickhof", "Kevin Pauer"]
__license__ = "GPL 3.0"
__version__ = "1.0.0"
"""
This file (test_keyword.py) contains the functional tests for the `keyword` blueprint.
"""
import json
2022-05-11 21:33:48 +00:00
2022-03-30 09:10:48 +00:00
from tests.functional.helper_functions import get_token
def test_add_keyword_not_logged_in(test_client, init_database):
"""
Test POST '/api/keyword'
User is not logged in
"""
response = test_client.post('/api/keyword')
assert response.status_code == 401
assert b'Unauthorized' in response.data
def test_add_keyword_user1_logged_in(test_client, init_database):
"""
Test POST '/api/keyword'
User1 is logged in
"""
response = test_client.post('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 200
assert b'Successfully added keyword' in response.data
def test_add_keyword_user1_logged_in_but_keyword_exist(test_client, init_database):
"""
Test POST '/api/keyword'
User1 is logged in
Add keyword two times
"""
test_client.post('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
response = test_client.post('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 500
assert b'Keyword already exist for this user' in response.data
def test_add_keyword_user1_logged_in_but_keyword_missing(test_client, init_database):
"""
Test POST '/api/keyword'
User1 is logged in
Keyword is missing in post data
"""
response = test_client.post('/api/keyword', data=json.dumps(dict()),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 400
assert b'missing' in response.data
def test_add_keyword_user1_logged_in_but_keyword_empty(test_client, init_database):
"""
Test POST '/api/keyword'
User1 is logged in
Keyword is empty in post data
"""
response = test_client.post('/api/keyword', data=json.dumps(dict(keyword="")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 400
assert b'missing' in response.data
def test_get_keyword_not_logged_in(test_client, init_database):
"""
Test GET '/api/keyword'
User is not logged in
"""
response = test_client.get('/api/keywords')
assert response.status_code == 401
assert b'Unauthorized' in response.data
def test_get_keyword_user1_logged_in_empty_response(test_client, init_database):
"""
Test GET '/api/keyword'
User1 is logged in
Empty response
"""
response = test_client.get('/api/keywords', headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))})
assert response.status_code == 200
assert b'"data":[' in response.data
def test_get_keyword_user1_logged_in_response_data(test_client, init_database):
"""
Test GET '/api/keyword'
User1 is logged in
Create some keywords for user1
"""
test_client.post('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
response = test_client.get('/api/keywords', headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))})
assert response.status_code == 200
assert b'"data":[' in response.data
def test_delete_keyword_not_logged_in(test_client, init_database):
"""
Test DELETE '/api/keyword'
User is not logged in
"""
response = test_client.delete('/api/keyword')
assert response.status_code == 401
assert b'Unauthorized' in response.data
def test_delete_keyword_user1_logged_in_but_empty_keyword(test_client, init_database):
"""
Test DELETE '/api/keyword'
User1 is logged in
Keyword empty in in delete data
"""
response = test_client.delete('/api/keyword', data=json.dumps(dict(keyword="")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 400
assert b'missing' in response.data
def test_delete_keyword_user1_logged_in_but_missing_keyword(test_client, init_database):
"""
Test DELETE '/api/keyword'
User1 is logged in
Keyword missing in in delete data
"""
response = test_client.delete('/api/keyword', data=json.dumps(dict()),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 400
assert b'missing' in response.data
def test_delete_keyword_user1_logged_in_keyword_exists(test_client, init_database):
"""
Test DELETE '/api/keyword'
User1 is logged in
Keyword exists
"""
test_client.post('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
response = test_client.delete('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 200
assert b'Successfully removed keyword' in response.data
def test_delete_keyword_user1_logged_in_keyword_not_exists(test_client, init_database):
"""
Test DELETE '/api/keyword'
User1 is logged in
Keyword doesn't exists
"""
response = test_client.delete('/api/keyword', data=json.dumps(dict(keyword="DTEGY")),
headers={"Authorization": "Bearer {}".format(get_token(test_client, "user1@example.com", "password"))},
content_type='application/json')
assert response.status_code == 500
assert b'Keyword doesn\'t exist for this user' in response.data