Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor!: rename project to perimeter as preparation for upcoming features #1446

Merged
merged 16 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading