smartbucket/test/test.ts

130 lines
3.8 KiB
TypeScript
Raw Normal View History

2023-11-03 00:36:11 +00:00
import { expect, expectAsync, tap } from '@push.rocks/tapbundle';
import { Qenv } from '@push.rocks/qenv';
2019-10-15 12:16:28 +00:00
2022-03-30 23:45:46 +00:00
import * as smartbucket from '../ts/index.js';
2018-03-30 17:42:14 +00:00
2019-10-15 12:16:28 +00:00
const testQenv = new Qenv('./', './.nogit/');
let testSmartbucket: smartbucket.SmartBucket;
2019-10-15 17:23:06 +00:00
let myBucket: smartbucket.Bucket;
2019-10-16 17:11:28 +00:00
let baseDirectory: smartbucket.Directory;
2019-10-15 12:16:28 +00:00
tap.test('should create a valid smartbucket', async () => {
testSmartbucket = new smartbucket.SmartBucket({
accessKey: await testQenv.getEnvVarOnDemandStrict('S3_ACCESSKEY'),
accessSecret: await testQenv.getEnvVarOnDemandStrict('S3_ACCESSSECRET'),
endpoint: await testQenv.getEnvVarOnDemandStrict('S3_ENDPOINT'),
2019-10-15 12:16:28 +00:00
});
expect(testSmartbucket).toBeInstanceOf(smartbucket.SmartBucket);
myBucket = await testSmartbucket.getBucketByNameStrict(await testQenv.getEnvVarOnDemandStrict('S3_BUCKET'),);
expect(myBucket).toBeInstanceOf(smartbucket.Bucket);
expect(myBucket.name).toEqual('test-pushrocks-smartbucket');
});
tap.test('should clean all contents', async () => {
await myBucket.cleanAllContents();
expect(await myBucket.fastExists({ path: 'hithere/socool.txt' })).toBeFalse();
expect(await myBucket.fastExists({ path: 'trashtest/trashme.txt' })).toBeFalse();
2019-10-15 12:16:28 +00:00
});
2019-10-15 17:23:06 +00:00
tap.skip.test('should create testbucket', async () => {
// await testSmartbucket.createBucket('testzone2');
2019-10-15 12:16:28 +00:00
});
tap.skip.test('should remove testbucket', async () => {
// await testSmartbucket.removeBucket('testzone2');
2019-10-15 17:23:06 +00:00
});
2019-10-16 16:12:18 +00:00
// Fast operations
tap.test('should store data in bucket fast', async () => {
2024-05-17 16:53:11 +00:00
await myBucket.fastPut({
path: 'hithere/socool.txt',
contents: 'hi there!',
});
2019-10-15 17:23:06 +00:00
});
2019-10-16 13:21:02 +00:00
tap.test('should get data in bucket', async () => {
2024-05-17 16:53:11 +00:00
const fileString = await myBucket.fastGet({
path: 'hithere/socool.txt',
});
const fileStringStream = await myBucket.fastGetStream(
{
path: 'hithere/socool.txt',
},
'nodestream'
);
2019-10-16 13:21:02 +00:00
console.log(fileString);
});
tap.test('should delete data in bucket', async () => {
2024-05-17 16:53:11 +00:00
await myBucket.fastRemove({
path: 'hithere/socool.txt',
});
2019-10-16 13:21:02 +00:00
});
2019-10-16 17:11:28 +00:00
// fs operations
tap.test('prepare for directory style tests', async () => {
2024-05-17 16:53:11 +00:00
await myBucket.fastPut({
path: 'dir1/file1.txt',
contents: 'dir1/file1.txt content',
});
await myBucket.fastPut({
path: 'dir1/file2.txt',
contents: 'dir1/file2.txt content',
});
await myBucket.fastPut({
path: 'dir2/file1.txt',
contents: 'dir2/file1.txt content',
});
await myBucket.fastPut({
path: 'dir3/file1.txt',
contents: 'dir3/file1.txt content',
});
await myBucket.fastPut({
path: 'dir3/dir4/file1.txt',
contents: 'dir3/dir4/file1.txt content',
});
await myBucket.fastPut({
path: '/file1.txt',
2024-05-17 16:53:11 +00:00
contents: 'file1 content',
});
2019-10-16 17:11:28 +00:00
});
tap.test('should get base directory', async () => {
baseDirectory = await myBucket.getBaseDirectory();
const directories = await baseDirectory.listDirectories();
2019-10-18 13:43:06 +00:00
console.log('Found the following directories:');
console.log(directories);
2022-03-30 23:45:46 +00:00
expect(directories.length).toEqual(3);
2019-10-16 17:11:28 +00:00
const files = await baseDirectory.listFiles();
2019-10-18 13:43:06 +00:00
console.log('Found the following files:');
2019-10-18 10:34:32 +00:00
console.log(files);
2022-03-30 23:45:46 +00:00
expect(files.length).toEqual(1);
2019-10-16 17:11:28 +00:00
});
2019-10-19 22:45:11 +00:00
tap.test('should correctly build paths for sub directories', async () => {
2019-10-19 23:18:13 +00:00
const dir4 = await baseDirectory.getSubDirectoryByName('dir3/dir4');
2022-03-30 23:45:46 +00:00
expect(dir4).toBeInstanceOf(smartbucket.Directory);
const dir4BasePath = dir4?.getBasePath();
2019-10-19 23:18:13 +00:00
console.log(dir4BasePath);
expect(dir4BasePath).toEqual('dir3/dir4/');
2019-10-19 22:45:11 +00:00
});
2019-10-16 17:11:28 +00:00
tap.test('clean up directory style tests', async () => {
2024-05-17 16:53:11 +00:00
await myBucket.fastRemove({
path: 'dir1/file1.txt',
});
await myBucket.fastRemove({
path: 'dir1/file2.txt',
});
await myBucket.fastRemove({
path: 'dir2/file1.txt',
});
await myBucket.fastRemove({ path: 'dir3/file1.txt' });
await myBucket.fastRemove({ path: 'dir3/dir4/file1.txt' });
await myBucket.fastRemove({ path: 'file1.txt' });
2019-10-16 17:11:28 +00:00
});
2018-09-14 16:07:20 +00:00
tap.start();