mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-08-19 09:30:21 +00:00
fix(ui): prevent timezone mismatch in scan findings links
This commit is contained in:
@@ -0,0 +1 @@
|
||||
`View Findings` from completed scans no longer returns empty results near local midnight in non-UTC timezones
|
||||
@@ -44,11 +44,6 @@ vi.mock("@/lib/helper", () => ({
|
||||
downloadScanZip: downloadScanZipMock,
|
||||
}));
|
||||
|
||||
vi.mock("@/lib/date-utils", () => ({
|
||||
toLocalDateString: (value: string | null | undefined) =>
|
||||
value ? "2026-01-01" : undefined,
|
||||
}));
|
||||
|
||||
vi.mock("@/components/scans/edit-alias-modal", () => ({
|
||||
EditAliasModal: ({
|
||||
open,
|
||||
@@ -314,14 +309,14 @@ describe("ScanJobsRowActions", () => {
|
||||
).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("links completed scans to filtered findings", async () => {
|
||||
it("delegates scan date resolution when opening findings", async () => {
|
||||
// Given
|
||||
const user = userEvent.setup();
|
||||
render(
|
||||
<ScanJobsRowActions
|
||||
scan={makeScan({
|
||||
state: "completed",
|
||||
completed_at: "2026-01-01T10:05:00Z",
|
||||
completed_at: "2026-08-01T14:30:00Z",
|
||||
})}
|
||||
tab="completed"
|
||||
/>,
|
||||
@@ -335,7 +330,7 @@ describe("ScanJobsRowActions", () => {
|
||||
|
||||
// Then
|
||||
expect(pushMock).toHaveBeenCalledWith(
|
||||
"/findings?filter[scan__in]=scan-1&filter[inserted_at]=2026-01-01&filter[status__in]=FAIL",
|
||||
"/findings?filter[scan__in]=scan-1&filter[status__in]=FAIL",
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ import {
|
||||
ActionDropdownItem,
|
||||
} from "@/components/shadcn/dropdown";
|
||||
import { buildPerScanComplianceHref } from "@/lib/compliance/compliance-tab-url";
|
||||
import { toLocalDateString } from "@/lib/date-utils";
|
||||
import { downloadScanZip } from "@/lib/helper";
|
||||
import { getScanScheduleCapability } from "@/lib/schedules";
|
||||
import { isCloud } from "@/lib/shared/env";
|
||||
@@ -80,7 +79,7 @@ export function ScanJobsRowActions({
|
||||
const isCompleted = scanState === "completed";
|
||||
const isFailed = scanState === "failed";
|
||||
const taskId = scan.relationships.task.data?.id;
|
||||
const scanDate = toLocalDateString(scan.attributes.completed_at);
|
||||
const canViewFindings = isCompleted && Boolean(scan.attributes.completed_at);
|
||||
const providerId = scan.relationships.provider.data?.id;
|
||||
const scheduleProvider: ScanScheduleProvider | undefined = providerId
|
||||
? {
|
||||
@@ -92,9 +91,9 @@ export function ScanJobsRowActions({
|
||||
: undefined;
|
||||
|
||||
const openFindings = () => {
|
||||
if (!isCompleted || !scanDate) return;
|
||||
if (!canViewFindings) return;
|
||||
router.push(
|
||||
`/findings?filter[scan__in]=${scan.id}&filter[inserted_at]=${scanDate}&filter[status__in]=FAIL`,
|
||||
`/findings?filter[scan__in]=${scan.id}&filter[status__in]=FAIL`,
|
||||
);
|
||||
};
|
||||
|
||||
@@ -202,7 +201,7 @@ export function ScanJobsRowActions({
|
||||
icon={<Eye />}
|
||||
label="View Findings"
|
||||
onSelect={openFindings}
|
||||
disabled={!isCompleted || !scanDate}
|
||||
disabled={!canViewFindings}
|
||||
/>
|
||||
<ActionDropdownItem
|
||||
icon={<ShieldCheck />}
|
||||
|
||||
Reference in New Issue
Block a user