Skip to content

Commit 42607cc

Browse files
committed
test: add integration cases
1 parent d8a28a3 commit 42607cc

File tree

2 files changed

+136
-4
lines changed

2 files changed

+136
-4
lines changed

src/files/infra/repositories/FilesRepository.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,7 @@ export class FilesRepository extends ApiRepository implements IFilesRepository {
303303
}
304304

305305
public async restrictFile(fileId: number | string, restrict: boolean): Promise<undefined> {
306-
return this.doPut(
307-
this.buildApiEndpoint(this.filesResourceName, 'restrict', fileId),
308-
restrict ? 'true' : 'false'
309-
)
306+
return this.doPut(this.buildApiEndpoint(this.filesResourceName, 'restrict', fileId), restrict)
310307
.then(() => undefined)
311308
.catch((error) => {
312309
throw error

test/integration/files/FilesRepository.test.ts

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,4 +725,139 @@ describe('FilesRepository', () => {
725725
await expect(sut.deleteFile(nonExistentFiledId)).rejects.toThrow(expectedError)
726726
})
727727
})
728+
729+
describe('restrictFile', () => {
730+
let restrictFileDatasetIds: CreatedDatasetIdentifiers
731+
const testTextFile1Name = 'test-file-1.txt'
732+
733+
const setFileToRestricted = async (fileId: number) => {
734+
await sut.restrictFile(fileId, true)
735+
}
736+
737+
const setFileToUnrestricted = async (fileId: number) => {
738+
await sut.restrictFile(fileId, false)
739+
}
740+
741+
beforeEach(async () => {
742+
try {
743+
restrictFileDatasetIds = await createDataset.execute(TestConstants.TEST_NEW_DATASET_DTO)
744+
} catch (error) {
745+
throw new Error('Tests beforeEach(): Error while creating test dataset')
746+
}
747+
await uploadFileViaApi(restrictFileDatasetIds.numericId, testTextFile1Name).catch(() => {
748+
throw new Error(`Tests beforeEach(): Error while uploading file ${testTextFile1Name}`)
749+
})
750+
751+
await publishDatasetViaApi(restrictFileDatasetIds.numericId).catch(() => {
752+
throw new Error('Error while publishing test Dataset')
753+
})
754+
755+
await waitForNoLocks(restrictFileDatasetIds.numericId, 10)
756+
})
757+
758+
afterEach(async () => {
759+
await deletePublishedDatasetViaApi(restrictFileDatasetIds.persistentId)
760+
})
761+
762+
test('should successfully restrict a file', async () => {
763+
const datasetFiles = await sut.getDatasetFiles(
764+
restrictFileDatasetIds.numericId,
765+
DatasetNotNumberedVersion.LATEST,
766+
false,
767+
FileOrderCriteria.NAME_AZ
768+
)
769+
770+
expect(datasetFiles.files[0].restricted).toEqual(false)
771+
772+
await setFileToRestricted(datasetFiles.files[0].id)
773+
774+
const datasetFilesAfterRestrict = await sut.getDatasetFiles(
775+
restrictFileDatasetIds.numericId,
776+
DatasetNotNumberedVersion.LATEST,
777+
false,
778+
FileOrderCriteria.NAME_AZ
779+
)
780+
781+
expect(datasetFilesAfterRestrict.files[0].restricted).toEqual(true)
782+
783+
// Unrestrict the file Just in case to avoid conflicts with other tests
784+
await setFileToUnrestricted(datasetFiles.files[0].id)
785+
})
786+
787+
test('should successfully unrestrict a file', async () => {
788+
const datasetFiles = await sut.getDatasetFiles(
789+
restrictFileDatasetIds.numericId,
790+
DatasetNotNumberedVersion.LATEST,
791+
false,
792+
FileOrderCriteria.NAME_AZ
793+
)
794+
795+
expect(datasetFiles.files[0].restricted).toEqual(false)
796+
797+
await setFileToRestricted(datasetFiles.files[0].id)
798+
799+
const datasetFilesAfterRestrict = await sut.getDatasetFiles(
800+
restrictFileDatasetIds.numericId,
801+
DatasetNotNumberedVersion.LATEST,
802+
false,
803+
FileOrderCriteria.NAME_AZ
804+
)
805+
806+
expect(datasetFilesAfterRestrict.files[0].restricted).toEqual(true)
807+
808+
await setFileToUnrestricted(datasetFiles.files[0].id)
809+
810+
const datasetFilesAfterUnrestrict = await sut.getDatasetFiles(
811+
restrictFileDatasetIds.numericId,
812+
DatasetNotNumberedVersion.LATEST,
813+
false,
814+
FileOrderCriteria.NAME_AZ
815+
)
816+
817+
expect(datasetFilesAfterUnrestrict.files[0].restricted).toEqual(false)
818+
})
819+
820+
test('should return error when file was already restricted', async () => {
821+
const datasetFiles = await sut.getDatasetFiles(
822+
restrictFileDatasetIds.numericId,
823+
DatasetNotNumberedVersion.LATEST,
824+
false,
825+
FileOrderCriteria.NAME_AZ
826+
)
827+
828+
await setFileToRestricted(datasetFiles.files[0].id)
829+
830+
const expectedError = new WriteError(
831+
`[400] Problem trying to update restriction status on ${testTextFile1Name}: File ${testTextFile1Name} is already restricted`
832+
)
833+
834+
await expect(setFileToRestricted(datasetFiles.files[0].id)).rejects.toThrow(expectedError)
835+
836+
// Unrestrict the file Just in case to avoid conflicts with other tests
837+
await setFileToUnrestricted(datasetFiles.files[0].id)
838+
})
839+
840+
test('should return error when files was already unrestricted', async () => {
841+
const datasetFiles = await sut.getDatasetFiles(
842+
restrictFileDatasetIds.numericId,
843+
DatasetNotNumberedVersion.LATEST,
844+
false,
845+
FileOrderCriteria.NAME_AZ
846+
)
847+
848+
const expectedError = new WriteError(
849+
`[400] Problem trying to update restriction status on ${testTextFile1Name}: File ${testTextFile1Name} is already unrestricted`
850+
)
851+
852+
await expect(setFileToUnrestricted(datasetFiles.files[0].id)).rejects.toThrow(expectedError)
853+
})
854+
855+
test('should return error when file does not exist', async () => {
856+
const expectedError = new WriteError(
857+
`[400] Could not find datafile with id ${nonExistentFiledId}`
858+
)
859+
860+
await expect(setFileToRestricted(nonExistentFiledId)).rejects.toThrow(expectedError)
861+
})
862+
})
728863
})

0 commit comments

Comments
 (0)