UNPKG

@apillon/sdk

Version:

▶◀ Apillon SDK for NodeJS ▶◀

193 lines 8.73 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const storage_1 = require("../modules/storage/storage"); const storage_2 = require("../types/storage"); const helper_1 = require("./helpers/helper"); const fs = __importStar(require("fs")); describe('Storage tests', () => { let storage; let bucketUuid; // For get and delete tests let directoryUuid; let fileUuid; beforeAll(async () => { storage = new storage_1.Storage((0, helper_1.getConfig)()); bucketUuid = (0, helper_1.getBucketUUID)(); directoryUuid = (0, helper_1.getDirectoryUUID)(); fileUuid = (0, helper_1.getFileUUID)(); }); test('List buckets', async () => { const { items } = await storage.listBuckets(); expect(items.length).toBeGreaterThanOrEqual(0); items.forEach((item) => expect(item.name).toBeTruthy()); }); test('Get bucket', async () => { const bucket = await storage.bucket(bucketUuid).get(); expect(bucket.uuid).toEqual(bucketUuid); expect(bucket.name).toBeTruthy(); expect(bucket.size).toBeGreaterThan(0); }); test('get bucket content', async () => { const { items } = await storage.bucket(bucketUuid).listObjects(); for (const item of items) { if (item.type == storage_2.StorageContentType.DIRECTORY) { await item.get(); } console.log(`${item.type}: ${item.name}`); } expect(items.length).toBeGreaterThanOrEqual(0); items.forEach((item) => expect(item.name).toBeTruthy()); }); test('get bucket files', async () => { const { items } = await storage.bucket(bucketUuid).listFiles(); for (const item of items) { console.log(`${item.type}: ${item.name}`); } expect(items.length).toBeGreaterThanOrEqual(0); items.forEach((item) => expect(item.name).toBeTruthy()); }); test('get bucket files markedForDeletion=true', async () => { const { items } = await storage .bucket(bucketUuid) .listObjects({ markedForDeletion: true }); expect(items.some((file) => file['status'] == 8)); }); test('get bucket directory content', async () => { const { items } = await storage .bucket(bucketUuid) .listObjects({ directoryUuid }); for (const item of items) { if (item.type == storage_2.StorageContentType.DIRECTORY) { await item.get(); } console.log(`${item.type}: ${item.name}`); } items.forEach((item) => expect(item.name).toBeTruthy()); }); test('upload files from folder', async () => { const uploadDir = (0, path_1.resolve)(__dirname, './helpers/website/'); console.time('File upload complete'); const files = await storage.bucket(bucketUuid).uploadFromFolder(uploadDir); console.timeEnd('File upload complete'); expect(files.every((f) => !!f.fileUuid)).toBeTruthy(); expect(files.every((f) => !!f.CID)).toBeTruthy(); }); test('upload files from folder with ignoreFiles=false', async () => { const uploadDir = (0, path_1.resolve)(__dirname, './helpers/website/'); // .gitignore and index.html are not ignored // and HTML files are not allowed await expect(storage .bucket(bucketUuid) .uploadFromFolder(uploadDir, { ignoreFiles: false })).rejects.toThrow(); }); test('upload files from buffer', async () => { const css = fs.readFileSync((0, path_1.resolve)(__dirname, './helpers/website/style.css')); const css2 = fs.readFileSync((0, path_1.resolve)(__dirname, './helpers/website/style2.css')); console.time('File upload complete'); const files = await storage.bucket(bucketUuid).uploadFiles([ { fileName: 'style.css', contentType: 'text/css', path: null, content: css, }, { fileName: 'style2.css', contentType: 'text/css', path: null, content: css2, }, ], { directoryPath: 'main/subdir' }); expect(files.length).toBe(2); expect(files[0].CID).toBe('bafybeibjawzowog5hmybfo6i7yaowsgwnmgdy6m3665da7xxpu2lwqjmia'); expect(files[0].fileUuid).toBeDefined(); expect(files[0].path).toBeNull(); expect(files[0].url).toContain('https://bafybeibjawzowog5hmybfo6i7yaowsgwnmgdy6m3665da7xxpu2lwqjmia'); expect(files[1].CID).toBe('bafybeihvpgcpq4cvhuhx7lobnv4zirzhk2ftgbf7hoqsphszabz7dxvwkq'); expect(files[1].fileUuid).toBeDefined(); expect(files[1].path).toBeNull(); expect(files[1].url).toContain('https://bafybeihvpgcpq4cvhuhx7lobnv4zirzhk2ftgbf7hoqsphszabz7dxvwkq'); console.timeEnd('File upload complete'); }); test('upload files from buffer with wrapWithDirectory=true', async () => { const css = fs.readFileSync((0, path_1.resolve)(__dirname, './helpers/website/style.css')); console.time('File upload complete'); const files = await storage.bucket(bucketUuid).uploadFiles([ { fileName: 'style.css', contentType: 'text/css', path: null, content: css, }, ], { wrapWithDirectory: true, directoryPath: 'main/subdir-wrapped' }); expect(files.length).toBe(1); expect(files[0].fileUuid).toBeDefined(); expect(files[0].CID).toBeUndefined(); expect(files[0].path).toBeNull(); expect(files[0].url).toBeUndefined(); console.timeEnd('File upload complete'); }); describe.skip('File detail tests', () => { test('get file details', async () => { const file = await storage.bucket(bucketUuid).file(fileUuid).get(); expect(file.name).toBeTruthy(); }); test('delete a file', async () => { await storage.bucket(bucketUuid).file(fileUuid).delete(); }); test('delete a directory', async () => { await storage.bucket(bucketUuid).directory(directoryUuid).delete(); }); }); describe('Storage info tests', () => { test('Get storage info', async () => { const info = await storage.getInfo(); expect(info).toBeDefined(); expect(info.availableStorage).toBeGreaterThan(0); expect(info.usedStorage).toBeGreaterThanOrEqual(0); expect(info.usedStorage).toBeLessThan(info.availableStorage); expect(info.availableBandwidth).toBeGreaterThan(0); expect(info.usedBandwidth).toBeGreaterThanOrEqual(0); expect(info.usedBandwidth).toBeLessThan(info.availableBandwidth); }); test('Get IPFS cluster info', async () => { const ipfsClusterInfo = await storage.getIpfsClusterInfo(); expect(ipfsClusterInfo).toBeDefined(); expect(ipfsClusterInfo.secret).toBeDefined(); expect(ipfsClusterInfo.projectUuid).toBeDefined(); expect(ipfsClusterInfo.ipfsGateway).toBeDefined(); expect(ipfsClusterInfo.ipnsGateway).toBeDefined(); }); test('Generate IPFS link', async () => { const cid = 'bafybeigjhyc2tpvqfqsuvf3byo4e4a4v6spi6jk4qqvvtlpca6rsaf2cqi'; const link = await storage.generateIpfsLink(cid); expect(link).toBeDefined(); expect(link).toContain(cid); }); }); }); //# sourceMappingURL=storage.test.js.map