-
Notifications
You must be signed in to change notification settings - Fork 259
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #51 from intuitem/CA-154-adapt-policies-page
Ca 154 adapt policies page
- Loading branch information
Showing
15 changed files
with
430 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,206 @@ | ||
import pytest | ||
from rest_framework.test import APIClient | ||
from core.models import SecurityFunction, Policy | ||
from iam.models import Folder | ||
|
||
from test_api import EndpointTestsQueries | ||
|
||
# Generic policy data for tests | ||
POLICY_NAME = "Test Policy" | ||
POLICY_DESCRIPTION = "Test Description" | ||
POLICY_STATUS = ("planned", "Planned") | ||
POLICY_STATUS2 = ("active", "Active") | ||
POLICY_EFFORT = ("L", "Large") | ||
POLICY_EFFORT2 = ("M", "Medium") | ||
POLICY_LINK = "https://example.com" | ||
POLICY_ETA = "2024-01-01" | ||
|
||
|
||
@pytest.mark.django_db | ||
class TestPolicysUnauthenticated: | ||
"""Perform tests on policies API endpoint without authentication""" | ||
|
||
client = APIClient() | ||
|
||
def test_get_security_measures(self): | ||
"""test to get policies from the API without authentication""" | ||
|
||
EndpointTestsQueries.get_object( | ||
self.client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"description": POLICY_DESCRIPTION, | ||
"folder": Folder.objects.create(name="test"), | ||
}, | ||
) | ||
|
||
def test_create_security_measures(self): | ||
"""test to create policies with the API without authentication""" | ||
|
||
EndpointTestsQueries.create_object( | ||
self.client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"description": POLICY_DESCRIPTION, | ||
"folder": Folder.objects.create(name="test").id, | ||
}, | ||
) | ||
|
||
def test_update_security_measures(self): | ||
"""test to update policies with the API without authentication""" | ||
|
||
EndpointTestsQueries.update_object( | ||
self.client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"description": POLICY_DESCRIPTION, | ||
"folder": Folder.objects.create(name="test"), | ||
}, | ||
{ | ||
"name": "new " + POLICY_NAME, | ||
"description": "new " + POLICY_DESCRIPTION, | ||
"folder": Folder.objects.create(name="test2").id, | ||
}, | ||
) | ||
|
||
def test_delete_security_measures(self): | ||
"""test to delete policies with the API without authentication""" | ||
|
||
EndpointTestsQueries.delete_object( | ||
self.client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"folder": Folder.objects.create(name="test"), | ||
}, | ||
) | ||
|
||
|
||
@pytest.mark.django_db | ||
class TestPolicysAuthenticated: | ||
"""Perform tests on policies API endpoint with authentication""" | ||
|
||
def test_get_security_measures(self, authenticated_client): | ||
"""test to get policies from the API with authentication""" | ||
|
||
EndpointTestsQueries.Auth.get_object( | ||
authenticated_client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"description": POLICY_DESCRIPTION, | ||
"status": POLICY_STATUS[0], | ||
"link": POLICY_LINK, | ||
"eta": POLICY_ETA, | ||
"effort": POLICY_EFFORT[0], | ||
"folder": Folder.get_root_folder(), | ||
}, | ||
{ | ||
"folder": {"str": Folder.get_root_folder().name}, | ||
"security_function": None, | ||
"status": POLICY_STATUS[1], | ||
"effort": POLICY_EFFORT[1], | ||
}, | ||
) | ||
|
||
def test_create_security_measures(self, authenticated_client): | ||
"""test to create policies with the API with authentication""" | ||
|
||
security_function = SecurityFunction.objects.create( | ||
name="test", typical_evidence={}, folder=Folder.objects.create(name="test") | ||
) | ||
|
||
EndpointTestsQueries.Auth.create_object( | ||
authenticated_client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"description": POLICY_DESCRIPTION, | ||
"status": POLICY_STATUS[0], | ||
"link": POLICY_LINK, | ||
"eta": POLICY_ETA, | ||
"effort": POLICY_EFFORT[0], | ||
"folder": str(Folder.get_root_folder().id), | ||
}, | ||
{ | ||
"folder": {"str": Folder.get_root_folder().name}, | ||
"status": POLICY_STATUS[1], | ||
"effort": POLICY_EFFORT[1], | ||
}, | ||
) | ||
|
||
def test_update_security_measures(self, authenticated_client): | ||
"""test to update policies with the API with authentication""" | ||
|
||
folder = Folder.objects.create(name="test") | ||
security_function = SecurityFunction.objects.create( | ||
name="test", typical_evidence={}, folder=folder | ||
) | ||
|
||
EndpointTestsQueries.Auth.update_object( | ||
authenticated_client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"description": POLICY_DESCRIPTION, | ||
"status": POLICY_STATUS[0], | ||
"link": POLICY_LINK, | ||
"eta": POLICY_ETA, | ||
"effort": POLICY_EFFORT[0], | ||
"folder": Folder.get_root_folder(), | ||
}, | ||
{ | ||
"name": "new " + POLICY_NAME, | ||
"description": "new " + POLICY_DESCRIPTION, | ||
"status": POLICY_STATUS2[0], | ||
"link": "new " + POLICY_LINK, | ||
"eta": "2025-01-01", | ||
"effort": POLICY_EFFORT2[0], | ||
"folder": str(folder.id), | ||
}, | ||
{ | ||
"folder": {"str": Folder.get_root_folder().name}, | ||
"status": POLICY_STATUS[1], | ||
"effort": POLICY_EFFORT[1], | ||
}, | ||
) | ||
|
||
def test_delete_security_measures(self, authenticated_client): | ||
"""test to delete policies with the API with authentication""" | ||
|
||
EndpointTestsQueries.Auth.delete_object( | ||
authenticated_client, | ||
"policies", | ||
Policy, | ||
{ | ||
"name": POLICY_NAME, | ||
"folder": Folder.objects.create(name="test"), | ||
}, | ||
) | ||
|
||
def test_get_effort_choices(self, authenticated_client): | ||
"""test to get policies effort choices from the API with authentication""" | ||
|
||
EndpointTestsQueries.Auth.get_object_options( | ||
authenticated_client, "policies", "effort", Policy.EFFORT | ||
) | ||
|
||
def test_get_status_choices(self, authenticated_client): | ||
"""test to get policies status choices from the API with authentication""" | ||
|
||
EndpointTestsQueries.Auth.get_object_options( | ||
authenticated_client, | ||
"policies", | ||
"status", | ||
Policy.Status.choices, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Generated by Django 5.0.2 on 2024-02-14 15:40 | ||
|
||
from django.db import migrations | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('core', '0003_library_dependencies_and_more'), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name='Policy', | ||
fields=[ | ||
], | ||
options={ | ||
'verbose_name': 'Policy', | ||
'verbose_name_plural': 'Policies', | ||
'proxy': True, | ||
'indexes': [], | ||
'constraints': [], | ||
}, | ||
bases=('core.securitymeasure',), | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.