@@ -10,15 +10,21 @@ import {
1010 ListObjectsV2Command ,
1111 PutObjectCommand ,
1212} from '@aws-sdk/client-s3'
13+ import {
14+ fileUtilsServerMock ,
15+ fileUtilsServerMockFns ,
16+ } from '@sim/testing/mocks/file-utils-server.mock'
17+ import { fileUtilsMock , fileUtilsMockFns } from '@sim/testing/mocks/file-utils.mock'
18+ import {
19+ filesAuthorizationMock ,
20+ filesAuthorizationMockFns ,
21+ } from '@sim/testing/mocks/files-authorization.mock'
1322import { beforeEach , describe , expect , it , vi } from 'vitest'
1423import { PayloadSizeLimitError } from '@/lib/core/utils/stream-limits'
1524
1625const mocks = vi . hoisted ( ( ) => ( {
1726 send : vi . fn ( ) ,
1827 getSecret : vi . fn ( ) ,
19- assertToolFileAccess : vi . fn ( ) ,
20- processSingleFile : vi . fn ( ) ,
21- downloadServableFile : vi . fn ( ) ,
2228 attempts : vi . fn ( ) ,
2329} ) )
2430
@@ -38,15 +44,9 @@ vi.mock('@/lib/internal/oci-object-storage/client', () => ({
3844 sendOciListBuckets : ( client : { send : typeof mocks . send } , signal ?: AbortSignal ) =>
3945 client . send ( new ListBucketsCommand ( { } ) , { abortSignal : signal } ) ,
4046} ) )
41- vi . mock ( '@/app/api/files/authorization' , ( ) => ( {
42- assertToolFileAccess : mocks . assertToolFileAccess ,
43- } ) )
44- vi . mock ( '@/lib/uploads/utils/file-utils' , ( ) => ( {
45- processSingleFileToUserFile : mocks . processSingleFile ,
46- } ) )
47- vi . mock ( '@/lib/uploads/utils/file-utils.server' , ( ) => ( {
48- downloadServableFileFromStorage : mocks . downloadServableFile ,
49- } ) )
47+ vi . mock ( '@/app/api/files/authorization' , ( ) => filesAuthorizationMock )
48+ vi . mock ( '@/lib/uploads/utils/file-utils' , ( ) => fileUtilsMock )
49+ vi . mock ( '@/lib/uploads/utils/file-utils.server' , ( ) => fileUtilsServerMock )
5050
5151import {
5252 executeOciObjectStorageDeleteObject ,
@@ -57,20 +57,25 @@ import {
5757 executeOciObjectStorageUploadObject ,
5858} from '@/lib/internal/oci-object-storage/operations'
5959
60+ const assertToolFileAccess = filesAuthorizationMockFns . mockAssertToolFileAccess
61+ const processSingleFile = fileUtilsMockFns . mockProcessSingleFileToUserFile
62+ const downloadServableFile = fileUtilsServerMockFns . mockDownloadServableFileFromStorage
63+
6064const credential = { credentialId : 'credential-1' }
6165const object = { ...credential , bucketName : 'bucket-name' , objectKey : 'folder/report.txt' }
6266const context = { userId : 'user-1' , requestId : 'request-1' }
6367
6468describe ( 'OCI Object Storage operations' , ( ) => {
6569 beforeEach ( ( ) => {
66- vi . clearAllMocks ( )
70+ assertToolFileAccess . mockReset ( )
71+ processSingleFile . mockReset ( )
72+ downloadServableFile . mockReset ( )
6773 mocks . getSecret . mockResolvedValue ( {
6874 accessKeyId : 'access' ,
6975 secretAccessKey : 'secret' ,
7076 namespace : 'namespace1' ,
7177 region : 'us-ashburn-1' ,
7278 } )
73- mocks . assertToolFileAccess . mockResolvedValue ( null )
7479 } )
7580
7681 it ( 'maps empty and populated bucket listings with owner identity' , async ( ) => {
@@ -172,8 +177,8 @@ describe('OCI Object Storage operations', () => {
172177
173178 it ( 'authorizes a referenced file before reading and uploads exact-limit bytes' , async ( ) => {
174179 const file = { name : 'report.txt' , key : 'workspace/file-1' , size : 5 , type : 'text/plain' }
175- mocks . processSingleFile . mockReturnValue ( file )
176- mocks . downloadServableFile . mockResolvedValue ( {
180+ processSingleFile . mockReturnValue ( file )
181+ downloadServableFile . mockResolvedValue ( {
177182 buffer : Buffer . from ( '12345' ) ,
178183 contentType : 'text/plain' ,
179184 } )
@@ -184,16 +189,16 @@ describe('OCI Object Storage operations', () => {
184189 context
185190 )
186191
187- expect ( mocks . assertToolFileAccess ) . toHaveBeenCalledWith (
192+ expect ( assertToolFileAccess ) . toHaveBeenCalledWith (
188193 'workspace/file-1' ,
189194 'user-1' ,
190195 'request-1' ,
191196 expect . anything ( )
192197 )
193- expect ( mocks . assertToolFileAccess . mock . invocationCallOrder [ 0 ] ) . toBeLessThan (
194- mocks . downloadServableFile . mock . invocationCallOrder [ 0 ]
198+ expect ( assertToolFileAccess . mock . invocationCallOrder [ 0 ] ) . toBeLessThan (
199+ downloadServableFile . mock . invocationCallOrder [ 0 ]
195200 )
196- expect ( mocks . downloadServableFile ) . toHaveBeenCalledWith ( file , 'request-1' , expect . anything ( ) , {
201+ expect ( downloadServableFile ) . toHaveBeenCalledWith ( file , 'request-1' , expect . anything ( ) , {
197202 maxBytes : 5 ,
198203 signal : undefined ,
199204 } )
@@ -219,9 +224,9 @@ describe('OCI Object Storage operations', () => {
219224 { requestId : 'request-1' }
220225 )
221226 ) . rejects . toMatchObject ( { status : 401 , message : 'Authentication required' } )
222- expect ( mocks . processSingleFile ) . not . toHaveBeenCalled ( )
223- expect ( mocks . assertToolFileAccess ) . not . toHaveBeenCalled ( )
224- expect ( mocks . downloadServableFile ) . not . toHaveBeenCalled ( )
227+ expect ( processSingleFile ) . not . toHaveBeenCalled ( )
228+ expect ( assertToolFileAccess ) . not . toHaveBeenCalled ( )
229+ expect ( downloadServableFile ) . not . toHaveBeenCalled ( )
225230 expect ( mocks . send ) . not . toHaveBeenCalled ( )
226231 } )
227232
@@ -232,15 +237,15 @@ describe('OCI Object Storage operations', () => {
232237 size : 6 ,
233238 type : 'application/octet-stream' ,
234239 }
235- mocks . processSingleFile . mockReturnValue ( file )
236- mocks . downloadServableFile . mockRejectedValue (
240+ processSingleFile . mockReturnValue ( file )
241+ downloadServableFile . mockRejectedValue (
237242 new PayloadSizeLimitError ( { label : 'OCI file upload' , maxBytes : 5 , observedBytes : 6 } )
238243 )
239244
240245 await expect (
241246 executeOciObjectStorageUploadObject ( { ...object , file : file as never } , context )
242247 ) . rejects . toBeInstanceOf ( PayloadSizeLimitError )
243- expect ( mocks . assertToolFileAccess ) . toHaveBeenCalledOnce ( )
248+ expect ( assertToolFileAccess ) . toHaveBeenCalledOnce ( )
244249 expect ( mocks . send ) . not . toHaveBeenCalled ( )
245250 } )
246251
0 commit comments