diff --git a/src/services/digital-certificates-services/v4/list-digital-certificates-service.js b/src/services/digital-certificates-services/v4/list-digital-certificates-service.js index 6f872b1b6..2d54546ef 100644 --- a/src/services/digital-certificates-services/v4/list-digital-certificates-service.js +++ b/src/services/digital-certificates-services/v4/list-digital-certificates-service.js @@ -28,16 +28,17 @@ const parseStatusData = (status) => { const isActive = status.toUpperCase() === 'ACTIVE' const parsedStatus = isActive ? { - content: capitalizeFirstLetter(status), - severity: 'success' - } + content: capitalizeFirstLetter(status), + severity: 'success' + } : { - content: capitalizeFirstLetter(status), - severity: 'danger' - } + content: capitalizeFirstLetter(status), + severity: 'danger' + } return parsedStatus } + const parseValidityDate = (validity) => { const formatOptions = { month: 'short', @@ -56,7 +57,9 @@ const parseValidityDate = (validity) => { const checkIfFieldExist = (field, defaultValue = '-') => field ?? defaultValue const adapt = (httpResponse) => { - const parsedDomains = httpResponse.body.results?.map((item) => { + const isArray = Array.isArray(httpResponse.body?.results) + + const parsedDigitalCertificates = isArray ? httpResponse.body.results?.map((item) => { const subjectNames = checkIfFieldExist(item?.subject_name?.map((subject) => subject)?.join(',')) const typeMap = { edge_certificate: EDGE_CERTIFICATE, @@ -72,13 +75,13 @@ const adapt = (httpResponse) => { validity: item?.validity ? parseValidityDate(item.validity) : '-', status: item?.status ? parseStatusData(item.status) : '-' } - }) + }) : [] const count = httpResponse.body?.count ?? 0 return { count, - body: parsedDomains, + body: parsedDigitalCertificates, statusCode: httpResponse.statusCode } } diff --git a/src/tests/services/digital-certificates-services/v4/list-digital-certificates-service.test.js b/src/tests/services/digital-certificates-services/v4/list-digital-certificates-service.test.js index 28dce8d10..a0e4101eb 100644 --- a/src/tests/services/digital-certificates-services/v4/list-digital-certificates-service.test.js +++ b/src/tests/services/digital-certificates-services/v4/list-digital-certificates-service.test.js @@ -26,7 +26,7 @@ const fixtures = { certificateWithMissingData: { id: 2, name: 'Certificate 2', - subject_name: [], + subject_name: null, type: null, validity: null, status: 'pending' @@ -102,7 +102,7 @@ describe('DigitalCertificatesServices', () => { content: 'Pending', severity: 'danger' }, - subjectName: '', + subjectName: '-', type: '-', validity: '-' }) @@ -144,7 +144,7 @@ describe('DigitalCertificatesServices', () => { content: 'Inactive', severity: 'danger' }, - subjectName: '', + subjectName: '-', type: '-', validity: '-' }) @@ -163,6 +163,62 @@ describe('DigitalCertificatesServices', () => { }) }) + it('should return correct certificates when search parameters are provided', async () => { + const requestSpy = vi.spyOn(AxiosHttpClientAdapter, 'request').mockResolvedValueOnce({ + statusCode: 200, + body: { + results: [fixtures.certificateMock] + } + }) + const { sut } = makeSut() + const result = await sut({ search: 'Certificate1' }) + + expect(requestSpy).toHaveBeenCalledWith({ + url: `v4/digital_certificates/certificates?ordering=name&page=1&page_size=10&fields=&search=Certificate1`, + method: 'GET' + }) + expect(result).toEqual([{ + id: fixtures.certificateMock.id, + name: fixtures.certificateMock.name, + issuer: fixtures.certificateMock.issuer, + type: 'TLS Certificate', + subjectName: "Subject 1,Subject 2", + validity: "Nov 10, 2023, 12:00 AM", + status: { + content: "Active", + severity: "success", + }, + }]) + }) + + it('should return correct certificates when ordering parameters are provided', async () => { + const requestSpy = vi.spyOn(AxiosHttpClientAdapter, 'request').mockResolvedValueOnce({ + statusCode: 200, + body: { + results: [fixtures.certificateMock] + } + }) + const { sut } = makeSut() + const result = await sut({ ordering: 'issuer' }) + + expect(requestSpy).toHaveBeenCalledWith({ + url: `v4/digital_certificates/certificates?ordering=issuer&page=1&page_size=10&fields=&search=`, + method: 'GET' + }) + expect(result).toEqual([{ + id: fixtures.certificateMock.id, + name: fixtures.certificateMock.name, + issuer: fixtures.certificateMock.issuer, + type: 'TLS Certificate', + subjectName: "Subject 1,Subject 2", + validity: "Nov 10, 2023, 12:00 AM", + status: { + content: "Active", + severity: "success", + }, + }]) + }) + it.each([ { statusCode: 400,