Skip to content

Commit

Permalink
fix: tarball test
Browse files Browse the repository at this point in the history
  • Loading branch information
favoyang committed Jul 5, 2020
1 parent 7e7d9a2 commit a0db8cf
Showing 1 changed file with 21 additions and 25 deletions.
46 changes: 21 additions & 25 deletions tests/plugin.test.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import { IPackageStorage, ILocalPackageManager, Token } from '@verdaccio/types';
import { HTTP_STATUS, VerdaccioError, getBadRequest, getInternalError } from '@verdaccio/commons-api';
import streamToString from 'stream-to-string';

import RedisStorage from '../src/plugin';
import { TEST_REDIS_PREFIX, REDIS_KEY } from '../src/utils';
import { TEST_REDIS_PREFIX, REDIS_KEY, bufferStreamToBase64String } from '../src/utils';
import StoragePluginManager from '../src/PackageStorage';

import config from './mocks/config';
import logger from './mocks/logger';
import { pkg1 } from './mocks/pkgs';

const TarballBase64 =
'H4sIAAAAAAAAAytITM5OTE/VL4DQelnF+XkMVAYGBgZmZiYK2MTBwBQoZ2xqZmBoaGZmAGQDGaYm5kCa2g7BBkqLSxKLgE6h1ByIVxTg9BAB1VwKCkp5ibmpSlYKSrmVBdnpSjogobLUouLM/DyQqKGegZ6BElct10C7dRSMglEwCkYB9QAA9VEdpAAIAAA=';
const TarballBuffer = new Buffer(TarballBase64, 'base64');

describe('redis storage unit test', () => {
let redisStorage: RedisStorage = null;
beforeEach(() => {
Expand Down Expand Up @@ -386,8 +389,7 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const pkgName = pkg1.name;
const fileName = 'test.tgz';
const data = 'tarball content...';
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, data).then(() => {
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, TarballBase64).then(() => {
storage.deletePackage(fileName, err => {
expect(err).toBeNull();
redisStorage.redisClient.hget(REDIS_KEY.package + pkgName, fileName).then(data2 => {
Expand Down Expand Up @@ -415,8 +417,7 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const pkgName = pkg1.name;
const fileName = 'test.tgz';
const data = 'tarball content...';
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, data).then(() => {
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, TarballBase64).then(() => {
storage.removePackage(err => {
expect(err).toBeNull();
redisStorage.redisClient.hget(REDIS_KEY.package + pkgName, fileName).then(data2 => {
Expand All @@ -431,21 +432,20 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const pkgName = pkg1.name;
const fileName = 'test.tgz';
const data = 'tarball content...';
const uploadTarball = storage.writeTarball(fileName);
uploadTarball.on('success', () => {
redisStorage.redisClient.hget(REDIS_KEY.package + pkgName, fileName).then(data2 => {
expect(data2).toEqual(data);
redisStorage.redisClient.hget(REDIS_KEY.package + pkgName, fileName).then(data => {
expect(data).toEqual(TarballBase64);
done();
});
});
uploadTarball.on('error', err => {
done.fail(`Unexpected error has been emitted in write stream: ${err}`);
});
// Write to stream
uploadTarball.emit('content-length', data.length);
uploadTarball.emit('content-length', TarballBuffer.length);
uploadTarball.emit('open');
uploadTarball.write(data, err => {
uploadTarball.write(TarballBuffer, err => {
if (!err) {
uploadTarball.end();
}
Expand All @@ -456,8 +456,7 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const pkgName = pkg1.name;
const fileName = 'test.tgz';
const data = 'tarball content...';
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, data).then(() => {
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, TarballBase64).then(() => {
const uploadTarball = storage.writeTarball(fileName);
uploadTarball.on('success', () => {
done.fail('should not reach here');
Expand All @@ -467,9 +466,9 @@ describe('redis storage unit test', () => {
done();
});
// Write to stream
uploadTarball.emit('content-length', data.length);
uploadTarball.emit('content-length', TarballBuffer.length);
uploadTarball.emit('open');
uploadTarball.write(data, err => {
uploadTarball.write(TarballBuffer, err => {
if (!err) {
uploadTarball.end();
}
Expand All @@ -480,7 +479,6 @@ describe('redis storage unit test', () => {
test('should fail on writing tarball fails', done => {
const storage = packageStorage as ILocalPackageManager;
const fileName = 'test.tgz';
const data = 'tarball content...';
const uploadTarball = storage.writeTarball(fileName);
uploadTarball.on('success', () => {
done.fail('should not reach here');
Expand All @@ -490,7 +488,7 @@ describe('redis storage unit test', () => {
done();
});
// Write to stream
uploadTarball.emit('content-length', data.length);
uploadTarball.emit('content-length', TarballBuffer.length);
uploadTarball.emit('open');
uploadTarball.emit('error', getBadRequest('bad request'));
});
Expand All @@ -499,11 +497,10 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const pkgName = pkg1.name;
const fileName = 'test.tgz';
const data = 'tarball content...';
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, data).then(() => {
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, TarballBase64).then(() => {
const readTarball = storage.readTarball(fileName);
streamToString(readTarball).then(data2 => {
expect(data2).toEqual(data);
bufferStreamToBase64String(readTarball).then(data => {
expect(data).toEqual(TarballBase64);
done();
});
});
Expand All @@ -513,7 +510,7 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const fileName = 'test-not-exist.tgz';
const readTarball = storage.readTarball(fileName);
streamToString(readTarball)
bufferStreamToBase64String(readTarball)
.then(() => {
done.fail('should not reach here');
})
Expand All @@ -527,11 +524,10 @@ describe('redis storage unit test', () => {
const storage = packageStorage as ILocalPackageManager;
const pkgName = pkg1.name;
const fileName = 'test.tgz';
const data = 'tarball content...';
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, data).then(() => {
redisStorage.redisClient.hset(REDIS_KEY.package + pkgName, fileName, TarballBase64).then(() => {
const readTarball = storage.readTarball(fileName);
readTarball.abort();
streamToString(readTarball)
bufferStreamToBase64String(readTarball)
.then(() => {
done.fail('should not reach here');
})
Expand Down

0 comments on commit a0db8cf

Please sign in to comment.