Skip to content

Commit

Permalink
refactor project -> perimeter
Browse files Browse the repository at this point in the history
  • Loading branch information
eric-intuitem committed Jan 28, 2025
1 parent 4a867cf commit ddf94fe
Show file tree
Hide file tree
Showing 88 changed files with 878 additions and 812 deletions.
62 changes: 31 additions & 31 deletions backend/app_tests/api/test_api_compliance_assessments.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pytest
from rest_framework.test import APIClient
from core.models import ComplianceAssessment, Framework
from core.models import Project
from core.models import Perimeter
from iam.models import Folder

from test_utils import EndpointTestsQueries
Expand Down Expand Up @@ -29,7 +29,7 @@ def test_get_compliance_assessments(self, authenticated_client):
{
"name": COMPLIANCE_ASSESSMENT_NAME,
"description": COMPLIANCE_ASSESSMENT_DESCRIPTION,
"project": Project.objects.create(
"perimeter": Perimeter.objects.create(
name="test", folder=Folder.objects.create(name="test")
),
"framework": Framework.objects.all()[0],
Expand All @@ -46,7 +46,7 @@ def test_create_compliance_assessments(self):
{
"name": COMPLIANCE_ASSESSMENT_NAME,
"description": COMPLIANCE_ASSESSMENT_DESCRIPTION,
"project": Project.objects.create(
"perimeter": Perimeter.objects.create(
name="test", folder=Folder.objects.create(name="test")
).id,
},
Expand All @@ -63,15 +63,15 @@ def test_update_compliance_assessments(self, authenticated_client):
{
"name": COMPLIANCE_ASSESSMENT_NAME,
"description": COMPLIANCE_ASSESSMENT_DESCRIPTION,
"project": Project.objects.create(
"perimeter": Perimeter.objects.create(
name="test", folder=Folder.objects.create(name="test")
),
"framework": Framework.objects.all()[0],
},
{
"name": "new " + COMPLIANCE_ASSESSMENT_NAME,
"description": "new " + COMPLIANCE_ASSESSMENT_DESCRIPTION,
"project": Project.objects.create(
"perimeter": Perimeter.objects.create(
name="test2", folder=Folder.objects.create(name="test2")
).id,
},
Expand All @@ -87,7 +87,7 @@ def test_delete_compliance_assessments(self, authenticated_client):
ComplianceAssessment,
{
"name": COMPLIANCE_ASSESSMENT_NAME,
"project": Project.objects.create(
"perimeter": Perimeter.objects.create(
name="test", folder=Folder.objects.create(name="test")
),
"framework": Framework.objects.all()[0],
Expand All @@ -103,7 +103,7 @@ def test_get_compliance_assessments(self, test):
"""test to get compliance assessments from the API with authentication"""

EndpointTestsQueries.Auth.import_object(test.admin_client, "Framework")
project = Project.objects.create(name="test", folder=test.folder)
perimeter = Perimeter.objects.create(name="test", folder=test.folder)

EndpointTestsQueries.Auth.get_object(
test.client,
Expand All @@ -113,16 +113,16 @@ def test_get_compliance_assessments(self, test):
"name": COMPLIANCE_ASSESSMENT_NAME,
"description": COMPLIANCE_ASSESSMENT_DESCRIPTION,
"version": COMPLIANCE_ASSESSMENT_VERSION,
"project": project,
"perimeter": perimeter,
"framework": Framework.objects.all()[0],
},
{
"project": {
"id": str(project.id),
"str": project.folder.name + "/" + project.name,
"perimeter": {
"id": str(perimeter.id),
"str": perimeter.folder.name + "/" + perimeter.name,
"folder": {
"id": str(project.folder.id),
"str": project.folder.name,
"id": str(perimeter.folder.id),
"str": perimeter.folder.name,
},
},
"framework": {
Expand All @@ -143,7 +143,7 @@ def test_create_compliance_assessments(self, test):
"""test to create compliance assessments with the API with authentication"""

EndpointTestsQueries.Auth.import_object(test.admin_client, "Framework")
project = Project.objects.create(name="test", folder=test.folder)
perimeter = Perimeter.objects.create(name="test", folder=test.folder)

EndpointTestsQueries.Auth.create_object(
test.client,
Expand All @@ -153,16 +153,16 @@ def test_create_compliance_assessments(self, test):
"name": COMPLIANCE_ASSESSMENT_NAME,
"description": COMPLIANCE_ASSESSMENT_DESCRIPTION,
"version": COMPLIANCE_ASSESSMENT_VERSION,
"project": str(project.id),
"perimeter": str(perimeter.id),
"framework": str(Framework.objects.all()[0].id),
},
{
"project": {
"id": str(project.id),
"str": project.folder.name + "/" + project.name,
"perimeter": {
"id": str(perimeter.id),
"str": perimeter.folder.name + "/" + perimeter.name,
"folder": {
"id": str(project.folder.id),
"str": project.folder.name,
"id": str(perimeter.folder.id),
"str": perimeter.folder.name,
},
},
"framework": {
Expand All @@ -185,8 +185,8 @@ def test_update_compliance_assessments(self, test):
EndpointTestsQueries.Auth.import_object(test.admin_client, "Documents")
EndpointTestsQueries.Auth.import_object(test.admin_client, "Framework")
EndpointTestsQueries.Auth.import_object(test.admin_client, "Framework2")
project = Project.objects.create(name="test", folder=test.folder)
project2 = Project.objects.create(
perimeter = Perimeter.objects.create(name="test", folder=test.folder)
perimeter2 = Perimeter.objects.create(
name="test2", folder=Folder.objects.create(name="test2")
)

Expand All @@ -198,23 +198,23 @@ def test_update_compliance_assessments(self, test):
"name": COMPLIANCE_ASSESSMENT_NAME,
"description": COMPLIANCE_ASSESSMENT_DESCRIPTION,
"version": COMPLIANCE_ASSESSMENT_VERSION,
"project": project,
"perimeter": perimeter,
"framework": Framework.objects.all()[0],
},
{
"name": "new " + COMPLIANCE_ASSESSMENT_NAME,
"description": "new " + COMPLIANCE_ASSESSMENT_DESCRIPTION,
"version": COMPLIANCE_ASSESSMENT_VERSION + ".1",
"project": str(project2.id),
"perimeter": str(perimeter2.id),
"framework": str(Framework.objects.all()[1].id),
},
{
"project": {
"id": str(project.id),
"str": project.folder.name + "/" + project.name,
"perimeter": {
"id": str(perimeter.id),
"str": perimeter.folder.name + "/" + perimeter.name,
"folder": {
"id": str(project.folder.id),
"str": project.folder.name,
"id": str(perimeter.folder.id),
"str": perimeter.folder.name,
},
},
"framework": {
Expand All @@ -235,15 +235,15 @@ def test_delete_compliance_assessments(self, test):
"""test to delete compliance assessments with the API with authentication"""

EndpointTestsQueries.Auth.import_object(test.admin_client, "Framework")
project = Project.objects.create(name="test", folder=test.folder)
perimeter = Perimeter.objects.create(name="test", folder=test.folder)

EndpointTestsQueries.Auth.delete_object(
test.client,
"Compliance Assessments",
ComplianceAssessment,
{
"name": COMPLIANCE_ASSESSMENT_NAME,
"project": project,
"perimeter": perimeter,
"framework": Framework.objects.all()[0],
},
user_group=test.user_group,
Expand Down
173 changes: 173 additions & 0 deletions backend/app_tests/api/test_api_perimeters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
import pytest
from rest_framework.test import APIClient
from core.models import Perimeter
from iam.models import Folder

from test_utils import EndpointTestsQueries

# Generic perimeter data for tests
PERIMETER_NAME = "Test Perimeter"
PERIMETER_DESCRIPTION = "Test Description"
PERIMETER_STATUS = ("in_prod", "Production")
PERIMETER_REFERENCE = "test:perimter"


@pytest.mark.django_db
class TestPerimetersUnauthenticated:
"""Perform tests on Perimeters API endpoint without authentication"""

client = APIClient()

def test_get_perimeters(self):
"""test to get perimeters from the API without authentication"""

EndpointTestsQueries.get_object(
self.client,
"Perimeters",
Perimeter,
{
"name": PERIMETER_NAME,
"description": PERIMETER_DESCRIPTION,
"folder": Folder.objects.create(name="test"),
},
)

def test_create_perimeters(self):
"""test to create perimeters with the API without authentication"""

EndpointTestsQueries.create_object(
self.client,
"Perimeters",
Perimeter,
{
"name": PERIMETER_NAME,
"description": PERIMETER_DESCRIPTION,
"folder": Folder.objects.create(name="test").id,
},
)

def test_update_perimeters(self):
"""test to update perimeters with the API without authentication"""

EndpointTestsQueries.update_object(
self.client,
"Perimeters",
Perimeter,
{
"name": PERIMETER_NAME,
"description": PERIMETER_DESCRIPTION,
"folder": Folder.objects.create(name="test"),
},
{
"name": "new " + PERIMETER_NAME,
"description": "new " + PERIMETER_DESCRIPTION,
},
)

def test_delete_perimeters(self):
"""test to delete perimeters with the API without authentication"""

EndpointTestsQueries.delete_object(
self.client,
"Perimeters",
Perimeter,
{"name": PERIMETER_NAME, "folder": Folder.objects.create(name="test")},
)


@pytest.mark.django_db
class TestPerimetersAuthenticated:
"""Perform tests on Perimeters API endpoint with authentication"""

def test_get_perimeters(self, test):
"""test to get perimeters from the API with authentication"""

EndpointTestsQueries.Auth.get_object(
test.client,
"Perimeters",
Perimeter,
{
"name": PERIMETER_NAME,
"description": PERIMETER_DESCRIPTION,
"folder": test.folder,
"ref_id": PERIMETER_REFERENCE,
"lc_status": PERIMETER_STATUS[0],
},
{
"folder": {"id": str(test.folder.id), "str": test.folder.name},
"lc_status": PERIMETER_STATUS[1],
},
user_group=test.user_group,
scope=str(test.folder),
)

def test_create_perimeters(self, test):
"""test to create perimeters with the API with authentication"""

EndpointTestsQueries.Auth.create_object(
test.client,
"Perimeters",
Perimeter,
{
"name": PERIMETER_NAME,
"description": PERIMETER_DESCRIPTION,
"folder": str(test.folder.id),
"ref_id": PERIMETER_REFERENCE,
"lc_status": PERIMETER_STATUS[0],
},
{
"folder": {"id": str(test.folder.id), "str": test.folder.name},
"lc_status": PERIMETER_STATUS[1],
},
user_group=test.user_group,
scope=str(test.folder),
)

def test_update_perimeters(self, test):
"""test to update perimeters with the API with authentication"""

status = ("in_dev", "Development")
folder = Folder.objects.create(name="test2")

EndpointTestsQueries.Auth.update_object(
test.client,
"Perimeters",
Perimeter,
{
"name": PERIMETER_NAME,
"description": PERIMETER_DESCRIPTION,
"folder": test.folder,
"ref_id": PERIMETER_REFERENCE,
"lc_status": PERIMETER_STATUS[0],
},
{
"name": "new " + PERIMETER_NAME,
"description": "new " + PERIMETER_DESCRIPTION,
"folder": str(folder.id),
"ref_id": "new " + PERIMETER_REFERENCE,
"lc_status": status[0],
},
{
"folder": {"id": str(test.folder.id), "str": test.folder.name},
"lc_status": PERIMETER_STATUS[1],
},
user_group=test.user_group,
)

def test_delete_perimeters(self, test):
"""test to delete perimeters with the API with authentication"""

EndpointTestsQueries.Auth.delete_object(
test.client,
"Perimeters",
Perimeter,
{"name": PERIMETER_NAME, "folder": test.folder},
user_group=test.user_group,
)

def test_get_status_choices(self, test):
"""test to get perimeters status choices from the API with authentication"""

EndpointTestsQueries.Auth.get_object_options(
test.client, "Perimeters", "lc_status", Perimeter.PRJ_LC_STATUS
)
Loading

0 comments on commit ddf94fe

Please sign in to comment.