mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-30 15:24:22 +00:00
chore/PRWLR-4775 update datetime default filter for date on inserted_at and updated_at API attributes (#39)
* chore(API): PRWLR-4775 change inserted and updated at filters to filter by date by default * test(API): PRWLR-4775 replace datetime strings for date * feat(API): PRWLR-4775 update started_at default behavior and unit tests
This commit is contained in:
1 parent
c3346ff605
commit
73330ecb1a
3 files changed
+105
-36
No files matched your search
@@ -3,28 +3,31 @@ from unittest.mock import Mock, patch
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from rest_framework import status
|
||||
|
||||
from datetime import datetime
|
||||
from api.models import Provider, Scan
|
||||
from api.rls import Tenant
|
||||
from conftest import API_JSON_CONTENT_TYPE, NO_TENANT_HTTP_STATUS
|
||||
|
||||
|
||||
TODAY = str(datetime.today().date())
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestTenantViewSet:
|
||||
@pytest.fixture
|
||||
def valid_tenant_payload(self):
|
||||
return {
|
||||
"name": "Tenant Three",
|
||||
"inserted_at": "2023-01-05T00:00:00Z",
|
||||
"updated_at": "2023-01-06T00:00:00Z",
|
||||
"inserted_at": "2023-01-05",
|
||||
"updated_at": "2023-01-06",
|
||||
}
|
||||
|
||||
@pytest.fixture
|
||||
def invalid_tenant_payload(self):
|
||||
return {
|
||||
"name": "",
|
||||
"inserted_at": "2023-01-05T00:00:00Z",
|
||||
"updated_at": "2023-01-06T00:00:00Z",
|
||||
"inserted_at": "2023-01-05",
|
||||
"updated_at": "2023-01-06",
|
||||
}
|
||||
|
||||
def test_tenants_list(self, client, tenants_fixture):
|
||||
@@ -125,12 +128,37 @@ class TestTenantViewSet:
|
||||
response = client.get(reverse("tenant-list"), {"random": "value"})
|
||||
assert response.status_code == status.HTTP_400_BAD_REQUEST
|
||||
|
||||
def test_tenants_list_filter_name(self, client, tenants_fixture):
|
||||
tenant1, _ = tenants_fixture
|
||||
response = client.get(reverse("tenant-list"), {"filter[name]": tenant1.name})
|
||||
@pytest.mark.parametrize(
|
||||
"filter_name, filter_value, expected_count",
|
||||
(
|
||||
[
|
||||
("name", "Tenant One", 1),
|
||||
("name.icontains", "Tenant", 2),
|
||||
("inserted_at", TODAY, 2),
|
||||
("inserted_at.gte", "2024-01-01", 2),
|
||||
("inserted_at.lte", "2024-01-01", 0),
|
||||
("updated_at.gte", "2024-01-01", 2),
|
||||
("updated_at.lte", "2024-01-01", 0),
|
||||
]
|
||||
),
|
||||
)
|
||||
def test_tenants_filters(
|
||||
self,
|
||||
client,
|
||||
tenants_fixture,
|
||||
tenant_header,
|
||||
filter_name,
|
||||
filter_value,
|
||||
expected_count,
|
||||
):
|
||||
response = client.get(
|
||||
reverse("tenant-list"),
|
||||
{f"filter[{filter_name}]": filter_value},
|
||||
headers=tenant_header,
|
||||
)
|
||||
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
assert len(response.json()["data"]) == 1
|
||||
assert response.json()["data"][0]["attributes"]["name"] == tenant1.name
|
||||
assert len(response.json()["data"]) == expected_count
|
||||
|
||||
def test_tenants_list_filter_invalid(self, client):
|
||||
response = client.get(reverse("tenant-list"), {"filter[invalid]": "whatever"})
|
||||
@@ -438,25 +466,39 @@ class TestProviderViewSet:
|
||||
assert response.status_code == status.HTTP_404_NOT_FOUND
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"filter_name, filter_value",
|
||||
"filter_name, filter_value, expected_count",
|
||||
(
|
||||
[
|
||||
("provider", "aws"),
|
||||
("provider_id", "12345"),
|
||||
("alias", "test"),
|
||||
("search", "test"),
|
||||
("inserted_at", "2024-01-01 00:00:00"),
|
||||
("updated_at", "2024-01-01 00:00:00"),
|
||||
("provider", "aws", 2),
|
||||
("provider_id", "123456789012", 1),
|
||||
("provider_id.icontains", "1", 5),
|
||||
("alias", "aws_testing_1", 1),
|
||||
("alias.icontains", "aws", 2),
|
||||
("inserted_at", TODAY, 5),
|
||||
("inserted_at.gte", "2024-01-01", 5),
|
||||
("inserted_at.lte", "2024-01-01", 0),
|
||||
("updated_at.gte", "2024-01-01", 5),
|
||||
("updated_at.lte", "2024-01-01", 0),
|
||||
]
|
||||
),
|
||||
)
|
||||
def test_providers_filters(self, client, tenant_header, filter_name, filter_value):
|
||||
def test_providers_filters(
|
||||
self,
|
||||
client,
|
||||
providers_fixture,
|
||||
tenant_header,
|
||||
filter_name,
|
||||
filter_value,
|
||||
expected_count,
|
||||
):
|
||||
response = client.get(
|
||||
reverse("provider-list"),
|
||||
{f"filter[{filter_name}]": filter_value},
|
||||
headers=tenant_header,
|
||||
)
|
||||
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
assert len(response.json()["data"]) == expected_count
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"filter_name",
|
||||
@@ -688,21 +730,36 @@ class TestScanViewSet:
|
||||
assert response.status_code == status.HTTP_400_BAD_REQUEST
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"filter_name, filter_value",
|
||||
[
|
||||
("provider", "aws"),
|
||||
("trigger", Scan.TriggerChoices.MANUAL),
|
||||
("name", "Scan 1"),
|
||||
("started_at", "2024-01-01 00:00:00"),
|
||||
],
|
||||
"filter_name, filter_value, expected_count",
|
||||
(
|
||||
[
|
||||
("provider", "aws", 3),
|
||||
("name", "Scan 1", 1),
|
||||
("name.icontains", "Scan", 3),
|
||||
("started_at", "2024-01-02", 3),
|
||||
("started_at.gte", "2024-01-01", 3),
|
||||
("started_at.lte", "2024-01-01", 0),
|
||||
("trigger", Scan.TriggerChoices.MANUAL, 1),
|
||||
]
|
||||
),
|
||||
)
|
||||
def test_scans_filters(self, client, tenant_header, filter_name, filter_value):
|
||||
def test_scans_filters(
|
||||
self,
|
||||
client,
|
||||
scans_fixture,
|
||||
tenant_header,
|
||||
filter_name,
|
||||
filter_value,
|
||||
expected_count,
|
||||
):
|
||||
response = client.get(
|
||||
reverse("scan-list"),
|
||||
{f"filter[{filter_name}]": filter_value},
|
||||
headers=tenant_header,
|
||||
)
|
||||
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
assert len(response.json()["data"]) == expected_count
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"filter_name",
|
||||
|
||||
Reference in new issue
Block a user