@@ -725,4 +725,133 @@ 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+
752+ afterEach ( async ( ) => {
753+ await deleteUnpublishedDatasetViaApi ( restrictFileDatasetIds . numericId )
754+ } )
755+
756+ test ( 'should successfully restrict a file' , async ( ) => {
757+ const datasetFiles = await sut . getDatasetFiles (
758+ restrictFileDatasetIds . numericId ,
759+ DatasetNotNumberedVersion . LATEST ,
760+ false ,
761+ FileOrderCriteria . NAME_AZ
762+ )
763+
764+ expect ( datasetFiles . files [ 0 ] . restricted ) . toEqual ( false )
765+
766+ await setFileToRestricted ( datasetFiles . files [ 0 ] . id )
767+
768+ const datasetFilesAfterRestrict = await sut . getDatasetFiles (
769+ restrictFileDatasetIds . numericId ,
770+ DatasetNotNumberedVersion . LATEST ,
771+ false ,
772+ FileOrderCriteria . NAME_AZ
773+ )
774+
775+ expect ( datasetFilesAfterRestrict . files [ 0 ] . restricted ) . toEqual ( true )
776+
777+ // Unrestrict the file Just in case to avoid conflicts with other tests
778+ await setFileToUnrestricted ( datasetFiles . files [ 0 ] . id )
779+ } )
780+
781+ test ( 'should successfully unrestrict a file' , async ( ) => {
782+ const datasetFiles = await sut . getDatasetFiles (
783+ restrictFileDatasetIds . numericId ,
784+ DatasetNotNumberedVersion . LATEST ,
785+ false ,
786+ FileOrderCriteria . NAME_AZ
787+ )
788+
789+ expect ( datasetFiles . files [ 0 ] . restricted ) . toEqual ( false )
790+
791+ await setFileToRestricted ( datasetFiles . files [ 0 ] . id )
792+
793+ const datasetFilesAfterRestrict = await sut . getDatasetFiles (
794+ restrictFileDatasetIds . numericId ,
795+ DatasetNotNumberedVersion . LATEST ,
796+ false ,
797+ FileOrderCriteria . NAME_AZ
798+ )
799+
800+ expect ( datasetFilesAfterRestrict . files [ 0 ] . restricted ) . toEqual ( true )
801+
802+ await setFileToUnrestricted ( datasetFiles . files [ 0 ] . id )
803+
804+ const datasetFilesAfterUnrestrict = await sut . getDatasetFiles (
805+ restrictFileDatasetIds . numericId ,
806+ DatasetNotNumberedVersion . LATEST ,
807+ false ,
808+ FileOrderCriteria . NAME_AZ
809+ )
810+
811+ expect ( datasetFilesAfterUnrestrict . files [ 0 ] . restricted ) . toEqual ( false )
812+ } )
813+
814+ test ( 'should return error when file was already restricted' , async ( ) => {
815+ const datasetFiles = await sut . getDatasetFiles (
816+ restrictFileDatasetIds . numericId ,
817+ DatasetNotNumberedVersion . LATEST ,
818+ false ,
819+ FileOrderCriteria . NAME_AZ
820+ )
821+
822+ await setFileToRestricted ( datasetFiles . files [ 0 ] . id )
823+
824+ const expectedError = new WriteError (
825+ `[400] Problem trying to update restriction status on ${ testTextFile1Name } : File ${ testTextFile1Name } is already restricted`
826+ )
827+
828+ await expect ( setFileToRestricted ( datasetFiles . files [ 0 ] . id ) ) . rejects . toThrow ( expectedError )
829+
830+ // Unrestrict the file Just in case to avoid conflicts with other tests
831+ await setFileToUnrestricted ( datasetFiles . files [ 0 ] . id )
832+ } )
833+
834+ test ( 'should return error when files was already unrestricted' , async ( ) => {
835+ const datasetFiles = await sut . getDatasetFiles (
836+ restrictFileDatasetIds . numericId ,
837+ DatasetNotNumberedVersion . LATEST ,
838+ false ,
839+ FileOrderCriteria . NAME_AZ
840+ )
841+
842+ const expectedError = new WriteError (
843+ `[400] Problem trying to update restriction status on ${ testTextFile1Name } : File ${ testTextFile1Name } is already unrestricted`
844+ )
845+
846+ await expect ( setFileToUnrestricted ( datasetFiles . files [ 0 ] . id ) ) . rejects . toThrow ( expectedError )
847+ } )
848+
849+ test ( 'should return error when file does not exist' , async ( ) => {
850+ const expectedError = new WriteError (
851+ `[400] Could not find datafile with id ${ nonExistentFiledId } `
852+ )
853+
854+ await expect ( setFileToRestricted ( nonExistentFiledId ) ) . rejects . toThrow ( expectedError )
855+ } )
856+ } )
728857} )
0 commit comments