@girin/framework
Version:
Core modules for Girin: GraphQL server framework
66 lines • 3.39 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const ObjectStorage_1 = require("../core/ObjectStorage");
function testObjectStorageSpec(mod) {
return __awaiter(this, void 0, void 0, function* () {
const fileBuffer = fs_1.readFileSync('./LICENSE');
const fileString = fileBuffer.toString();
// should save data to a file and returns the id as string
const { id: storageObjectId } = yield mod.save('test', 'myfile', fs_1.createReadStream('./LICENSE'));
if (typeof storageObjectId !== 'string') {
throw new Error(`should retrieve fileId which type is string: but got ${storageObjectId}`);
}
const { id: nextObjectId } = yield mod.save('test', 'myfile', fs_1.createReadStream('./LICENSE'));
if (storageObjectId === nextObjectId) {
throw new Error('should generate unique id for every object');
}
// should refetch the data with its id
const storageObject = yield mod.get('test', storageObjectId);
if (storageObject.filename !== 'myfile') {
throw new Error(`Expected filename to be myfile but got ${storageObject.filename}`);
}
if (storageObject.contentLength !== fileBuffer.byteLength) {
throw new Error(`Expected contentLength to be ${fileBuffer.byteLength} but got ${storageObject.contentLength}`);
}
const dataStream = storageObject.open();
const dataString = yield new Promise((resolve, reject) => {
let dataString = '';
dataStream.on('data', (buffer) => {
dataString += buffer.toString();
});
dataStream.once('end', () => resolve(dataString));
dataStream.once('error', err => reject(err));
});
if (dataString !== fileString) {
throw new Error(`refetched data should be equal to the original. expected ${fileString} but got ${dataString}`);
}
// deleting object
yield mod.delete('test', storageObjectId);
let error = null;
// opening id with no corresponding object should raise error
try {
yield mod.get('test', storageObjectId);
}
catch (e) {
error = e;
}
if (!error) {
throw new Error(`expected to get error but got ${error}`);
}
const expectedError = new ObjectStorage_1.StorageObjectNotFoundError(storageObjectId);
if (error.message !== expectedError.message) {
throw new Error(`Expected error message to be ${expectedError.message} but got ${error.message}`);
}
});
}
exports.testObjectStorageSpec = testObjectStorageSpec;
//# sourceMappingURL=ObjectStorage.spec.js.map