UNPKG

@storecraft/storage-google

Version:

Official Google Storage adapter for storecraft

89 lines (73 loc) 2.17 kB
import 'dotenv/config'; import { test } from 'uvu'; import * as assert from 'uvu/assert'; import { GoogleStorage } from '@storecraft/storage-google' import { readFile } from 'node:fs/promises'; import { storage as storage_test_runner } from '@storecraft/core/test-runner' const areBlobsEqual = async (blob1, blob2) => { return !Buffer.from(await blob1.arrayBuffer()).compare( Buffer.from(await blob2.arrayBuffer()) ); }; const storage = new GoogleStorage({ bucket: process.env.GS_BUCKET, client_email: process.env.GS_CLIENT_EMAIL, private_key: process.env.GS_PRIVATE_KEY, private_key_id: process.env.GS_PRIVATE_KEY_ID }); const suite = storage_test_runner.create(storage); suite.before(async () => { await storage.init(undefined) }); suite('blob put/get/delete', async () => { const data = [ // { // key: 'folder1/tomer.txt', // blob: new Blob(['this is some text from tomer :)']), // }, { key: 'folder2/node2222.png', blob: new Blob([await readFile('./node.png')]) } ]; data.forEach( async d => { // write await storage.putBlob(d.key, d.blob); // read const { value: blob_read } = await storage.getBlob(d.key); const url = await storage.getSigned(d.key); console.log('presign GET url ', url); // compare const equal = await areBlobsEqual(blob_read, d.blob); assert.ok(equal, 'Blobs are not equal !!!'); // delete // await storage.remove(d.key); } ); }); suite('blob put (presign)', async () => { const data = [ // { // key: 'folder1/tomer.txt', // blob: new Blob(['this is some text from tomer :)']), // }, { key: 'folder2/node_test2.png', blob: new Blob([await readFile('./node.png')]) } ]; data.forEach( async d => { // get put presigned url const { url, method, headers } = await storage.putSigned(d.key); // now let's use it to upload const r = await fetch( url, { method, headers, body: d.blob } ); console.log(url) assert.ok(r.ok, 'upload failed') } ); }); suite.run();