1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-22 21:14:18 +00:00
pds-2021-g2-nest/nest_backend/test/test_zrepository.py

251 lines
9.1 KiB
Python
Raw Normal View History

2021-05-11 21:06:38 +00:00
from flask.testing import Client
'''A file that contains tests of classes and methods for all the requests concerning an user.'''
class TestRepositoryAdd:
2021-05-13 21:36:06 +00:00
# creo un repository
def test_for_success(self, flask_client: Client, user_headers):
r = flask_client.post(f'/api/v1/repositories/', headers=user_headers, json={
'conditions': [
{
2021-05-12 21:39:29 +00:00
'content': 'PdS2021',
'id': 0,
'type': 0
}
],
'evaluation_mode': 0,
'name': 'repo_test',
'is_active': True
2021-05-11 21:55:35 +00:00
})
2021-05-13 22:13:33 +00:00
assert r.status_code == 201
assert r.json["result"] == "success"
assert r.json["data"]["is_active"] is True
2021-05-11 21:55:35 +00:00
2021-05-13 21:36:06 +00:00
# ne creo un altro come admin
2021-05-13 22:13:33 +00:00
def test_for_success_admin(self, flask_client: Client, admin_headers):
2021-05-13 21:36:06 +00:00
r = flask_client.post(f'/api/v1/repositories/', headers=admin_headers, json={
'conditions': [
{
'content': 'PdS2021',
'id': 0,
'type': 0
}
],
'evaluation_mode': 0,
'name': 'repo_admin',
'is_active': True
})
2021-05-13 22:13:33 +00:00
assert r.status_code == 201
2021-05-13 21:36:06 +00:00
assert r.json["result"] == "success"
assert r.json["data"]["is_active"] is True
# non vengono passate le condizioni necessarie, in questo caso il nome della repository
2021-05-12 22:05:00 +00:00
def test_no_name(self, flask_client: Client, user_headers):
r = flask_client.post(f'/api/v1/repositories/', headers=user_headers, json={
'conditions': [
{
2021-05-12 21:39:29 +00:00
'content': 'PdS2021',
'id': 0,
'type': 0
}
],
'evaluation_mode': 0,
'is_active': True
2021-05-11 21:55:35 +00:00
})
2021-05-12 22:05:00 +00:00
assert r.status_code == 400
assert r.json["msg"] == "Missing arguments."
assert r.json["result"] == "failure"
2021-05-12 21:39:29 +00:00
# viene passato un campo evaluation_mode con valore non previsto dall'enum
def test_wrong_evaluation_mode(self, flask_client: Client, user_headers):
r = flask_client.post(f'/api/v1/repositories/', headers=user_headers, json={
'conditions': [
{
'content': 'PdS2021',
'id': 0,
'type': 0
}
],
'evaluation_mode': 99,
'name': 'repo_test',
'is_active': True
})
2021-05-12 22:05:00 +00:00
assert r.status_code == 400
2021-05-12 21:39:29 +00:00
assert r.json["result"] == "failure"
# viene passato un campo type con valore non previsto dall'enum
def test_wrong_condition(self, flask_client: Client, user_headers):
r = flask_client.post(f'/api/v1/repositories/', headers=user_headers, json={
'conditions': [
{
'content': 'PdS2021',
'id': 0,
'type': 99
}
],
'evaluation_mode': 2,
'name': 'repo_test',
'is_active': True
})
2021-05-12 22:05:00 +00:00
assert r.status_code == 400
assert r.json["result"] == "failure"
class TestRepositoryGetAll:
def test_get_all_user_repositories(self, flask_client: Client, user_headers):
r = flask_client.get(f'/api/v1/repositories/', headers=user_headers,
json={
'owner_id': 'utente_test@nest.com',
'isActive': False
})
2021-05-12 22:05:00 +00:00
assert r.status_code == 200
assert r.json["result"] == "success"
def test_get_all_admin_repositories(self, flask_client: Client, admin_headers):
r = flask_client.get(f'/api/v1/repositories/', headers=admin_headers,
json={
'owner_id': 'admin@admin.com',
'isActive': False
})
2021-05-12 22:05:00 +00:00
assert r.status_code == 200
assert r.json["result"] == "success"
def test_user_not_logged(self, flask_client: Client):
r = flask_client.get(f'/api/v1/repositories/',
json={
'owner_id': 'utente_test@nest.com',
'isActive': False})
assert r.status_code == 401
2021-05-12 22:05:00 +00:00
class TestRepositoryGet:
def test_get_existing_repository(self, flask_client: Client, user_headers):
r = flask_client.get(f'/api/v1/repositories/1', headers=user_headers)
assert r.status_code == 200
assert r.json["result"] == "success"
def test_get_non_existing_repository(self, flask_client: Client, admin_headers):
r = flask_client.get(f'/api/v1/repositories/99', headers=admin_headers)
assert r.status_code == 404
2021-05-12 21:39:29 +00:00
assert r.json["result"] == "failure"
2021-05-11 21:55:35 +00:00
def test_user__not_logged(self, flask_client: Client, ):
r = flask_client.get(f'/api/v1/repositories/1')
assert r.status_code == 401
2021-05-12 22:05:00 +00:00
2021-05-13 20:52:18 +00:00
class TestRepositoryPatch:
def test_wrong_owner(self, flask_client: Client, admin_headers):
2021-05-13 20:57:40 +00:00
r = flask_client.patch(f'/api/v1/repositories/1', headers=admin_headers)
2021-05-13 20:52:18 +00:00
assert r.status_code == 403
assert r.json["result"] == "failure"
def test_user_not_logged(self, flask_client: Client):
r = flask_client.patch(f'/api/v1/repositories/1')
assert r.status_code == 401
def test_repository_not_found(self, flask_client: Client, user_headers):
r = flask_client.patch(f'/api/v1/repositories/99', headers=user_headers)
assert r.status_code == 404
assert r.json["result"] == "failure"
def test_for_success(self, flask_client: Client, admin_headers):
r = flask_client.patch(f'/api/v1/repositories/2', headers=admin_headers, json={
'conditions': [
{
'content': 'calcio',
'id': 0,
'type': 0
}
],
"evaluation_mode": 0,
"id": 0,
"is_active": "false",
"name": "nuovo_nome",
})
assert r.status_code == 204
'''
2021-05-13 20:52:18 +00:00
def test_unknown_type(self, flask_client: Client, admin_headers):
2021-05-13 20:57:40 +00:00
r = flask_client.patch(f'/api/v1/repositories/1', headers=admin_headers,
2021-05-13 21:36:06 +00:00
json={
"name": "string",
"close": "string",
"open": "string",
"evaluation_mode": 99
})
2021-05-13 20:52:18 +00:00
assert r.status_code == 400
assert r.json["result"] == "failure" '''
2021-05-13 20:52:18 +00:00
2021-05-13 21:36:06 +00:00
2021-05-13 20:52:18 +00:00
class TestRepositoryDelete:
2021-05-13 20:57:40 +00:00
def test_wrong_owner(self, flask_client: Client, user_headers):
r = flask_client.delete(f'/api/v1/repositories/2', headers=user_headers)
assert r.status_code == 403
assert r.json["result"] == "failure"
2021-05-13 21:36:06 +00:00
# TODO: testare la condizione di uscita con errore perche ci sono delle dipendenze
def test_for_success(self, flask_client: Client, admin_headers):
r = flask_client.delete(f'/api/v1/repositories/2', headers=admin_headers)
assert r.status_code == 204
2021-05-13 20:52:18 +00:00
def test_user_not_logged(self, flask_client: Client):
r = flask_client.delete(f'/api/v1/repositories/2')
assert r.status_code == 401
2021-05-13 20:52:18 +00:00
def test_repository_not_found(self, flask_client: Client, user_headers):
r = flask_client.delete(f'/api/v1/repositories/99', headers=user_headers)
assert r.status_code == 404
2021-05-13 20:57:40 +00:00
assert r.json["result"] == "failure"
2021-05-13 20:52:18 +00:00
2021-05-13 21:36:06 +00:00
class TestRepositoryPut:
2021-05-11 21:55:35 +00:00
def test_user_not_logged(self, flask_client: Client):
r = flask_client.put(f'/api/v1/repositories/1')
assert r.status_code == 401
def test_bad_request(self, flask_client: Client, user_headers):
r = flask_client.put(f'/api/v1/repositories/1', headers=user_headers,
json={
"name": "string",
"close": "string",
"open": "string",
"evaluation_mode": 0
})
assert r.status_code == 400
assert r.json["result"] == "failure"
2021-05-11 21:55:35 +00:00
def test_repository_not_found(self, flask_client: Client, user_headers):
r = flask_client.put(f'/api/v1/repositories/99', headers=user_headers)
assert r.status_code == 404
assert r.json["result"] == "failure"
2021-05-11 21:55:35 +00:00
def test_for_success(self, flask_client: Client, admin_headers):
r = flask_client.put(f'/api/v1/repositories/1', headers=admin_headers, json={
"conditions": [
{
"content": "string",
"id": 0,
"type": 0
}
],
"end": "2021-05-14T12:12:29.827Z",
"evaluation_mode": 0,
"id": 0,
"is_active": True,
"name": "string",
"owner": {
"email": "string",
"isAdmin": True,
"username": "string"
},
"start": "2021-05-14T12:12:29.827Z"
2021-05-11 21:55:35 +00:00
})
assert r.status_code == 200