Skip to content

Commit 0c26c96

Browse files
committed
feat: update restrict extension testcases
1 parent fe9a4a2 commit 0c26c96

File tree

6 files changed

+57
-10
lines changed

6 files changed

+57
-10
lines changed

docs/useCases.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1420,8 +1420,8 @@ import { restrictFile } from '@iqss/dataverse-client-javascript'
14201420
const fileId = 12345
14211421
const restrictFileDTO = {
14221422
restrict: true,
1423-
enableAccessRequest: boolean,
1424-
termsOfAccess: string
1423+
enableAccessRequest: false,
1424+
termsOfAccess: 'terms of access'
14251425
}
14261426

14271427
restrictFile.execute(fileId, restrictFileDTO)

src/files/domain/repositories/IFilesRepository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export interface IFilesRepository {
6666

6767
replaceFile(fileId: number | string, uploadedFileDTO: UploadedFileDTO): Promise<number>
6868

69-
restrictFile(fileId: number | string, restrictFileDTO: RestrictFileDTO): Promise<string>
69+
restrictFile(fileId: number | string, restrictFileDTO: RestrictFileDTO): Promise<void>
7070

7171
updateFileMetadata(
7272
fileId: number | string,

src/files/domain/useCases/RestrictFile.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { IFilesRepository } from '../repositories/IFilesRepository'
22
import { UseCase } from '../../../core/domain/useCases/UseCase'
33
import { RestrictFileDTO } from '../dtos/RestrictFileDTO'
4-
// https://github.com/IQSS/dataverse/pull/11349/files
5-
export class RestrictFile implements UseCase<string> {
4+
5+
export class RestrictFile implements UseCase<void> {
66
constructor(private readonly filesRepository: IFilesRepository) {}
77

88
/**
@@ -14,7 +14,7 @@ export class RestrictFile implements UseCase<string> {
1414
* @returns {Promise<void>} -This method does not return anything upon successful completion.
1515
*/
1616

17-
async execute(fileId: number | string, restrictFileDTO: RestrictFileDTO): Promise<string> {
17+
async execute(fileId: number | string, restrictFileDTO: RestrictFileDTO): Promise<void> {
1818
return await this.filesRepository.restrictFile(fileId, restrictFileDTO)
1919
}
2020
}

src/files/infra/repositories/FilesRepository.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,13 +350,12 @@ export class FilesRepository extends ApiRepository implements IFilesRepository {
350350
public async restrictFile(
351351
fileId: number | string,
352352
restrictFileDTO: RestrictFileDTO
353-
): Promise<string> {
353+
): Promise<void> {
354354
return this.doPut(
355355
this.buildApiEndpoint(this.filesResourceName, 'restrict', fileId),
356356
restrictFileDTO
357357
)
358358
.then((response) => {
359-
console.log('test', response.data.data.message)
360359
return response.data.data.message
361360
})
362361
.catch((error) => {

test/functional/files/RestrictFile.test.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
CreatedDatasetIdentifiers,
55
restrictFile,
66
getDatasetFiles,
7-
WriteError
7+
WriteError,
8+
getDataset
89
} from '../../../src'
910
import { DataverseApiAuthMechanism } from '../../../src/core/infra/repositories/ApiConfig'
1011
import {
@@ -69,6 +70,32 @@ describe('execute', () => {
6970
}
7071
})
7172

73+
test('should successfully restrict a file with terms of use', async () => {
74+
try {
75+
const datasetFiles = await getDatasetFiles.execute(testDatasetIds.numericId)
76+
77+
await restrictFile.execute(datasetFiles.files[0].id, {
78+
restrict: true,
79+
enableAccessRequest: false,
80+
termsOfAccess: 'This file is restricted for testing purposes'
81+
})
82+
} catch (error) {
83+
throw new Error('File should be restricted')
84+
} finally {
85+
const datasetFilesAfterRestriction = await getDatasetFiles.execute(testDatasetIds.numericId)
86+
87+
expect(datasetFilesAfterRestriction.files[0].restricted).toEqual(true)
88+
89+
const dataset = await getDataset.execute(testDatasetIds.numericId)
90+
91+
expect(dataset.termsOfUse.termsOfAccess.termsOfAccessForRestrictedFiles).toEqual(
92+
'This file is restricted for testing purposes'
93+
)
94+
95+
await restrictFile.execute(datasetFilesAfterRestriction.files[0].id, { restrict: false })
96+
}
97+
})
98+
7299
test('should succesfully unrestrict a file', async () => {
73100
try {
74101
const datasetFiles = await getDatasetFiles.execute(testDatasetIds.numericId)
@@ -124,7 +151,8 @@ describe('execute', () => {
124151

125152
expect(caughtError).toBeInstanceOf(WriteError)
126153
expect((caughtError as WriteError).message).toEqual(
127-
'There was an error when writing the resource. Reason was: [409] Terms of Use and Access are invalid. You must enable request access or add terms of access in datasets with restricted files.'
154+
new WriteError().message +
155+
' Reason was: [409] Terms of Use and Access are invalid. You must enable request access or add terms of access in datasets with restricted files.'
128156
)
129157
})
130158
})

test/integration/files/FilesRepository.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,5 +901,25 @@ describe('FilesRepository', () => {
901901

902902
await expect(setFileToRestricted(nonExistentFiledId)).rejects.toThrow(expectedError)
903903
})
904+
905+
test('should return error when the terms of use is empty while enableAccess is false', async () => {
906+
const datasetFiles = await sut.getDatasetFiles(
907+
restrictFileDatasetIds.numericId,
908+
DatasetNotNumberedVersion.LATEST,
909+
false,
910+
FileOrderCriteria.NAME_AZ
911+
)
912+
913+
const errorExpected = new WriteError(
914+
`[409] Terms of Use and Access are invalid. You must enable request access or add terms of access in datasets with restricted files.`
915+
)
916+
917+
await expect(
918+
sut.restrictFile(datasetFiles.files[0].id, {
919+
restrict: true,
920+
enableAccessRequest: false
921+
})
922+
).rejects.toThrow(errorExpected)
923+
})
904924
})
905925
})

0 commit comments

Comments
 (0)