0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-23 22:27:34 -05:00
verdaccio/packages/api/test/integration/_helper.ts
Juan Picado a7ba76423e refactor: test api refactor (#1826)
* test: add test for whoami

* Update middleware.ts

* test for user api

* more test for user api

* remove repeated code

* refactor

* Update index.spec.ts

* add package test

refactor others

* chore: upgrade deps

* chore: add test for package

* chore: update test

* update lock file

* Update ci.yml

* Update ci.yml

* Update package.spec.ts

* chore: update ci settings

* chore: update deps

* chore: update test
2021-04-09 17:54:11 +02:00

70 lines
2.3 KiB
TypeScript

import path from "path";
import express, {Application} from 'express';
import supertest from 'supertest';
import {parseConfigFile} from '@verdaccio/utils';
import { Config } from '@verdaccio/config';
import { Storage } from '@verdaccio/store';
import { final, handleError, errorReportingMiddleware } from '@verdaccio/middleware';
import { Auth } from '@verdaccio/auth';
import apiEndpoints from '../../src';
import {IAuth} from "@verdaccio/dev-types";
import {HEADER_TYPE, HTTP_STATUS, generatePackageMetadata} from "@verdaccio/dev-commons";
import {HEADERS} from "@verdaccio/commons-api";
const getConf = (conf) => {
const configPath = path.join(__dirname, 'config', conf);
return parseConfigFile(configPath);
};
export async function initializeServer(configName): Promise<Application> {
const app = express();
const config = new Config(getConf(configName));
const storage = new Storage(config);
await storage.init(config, []);
const auth: IAuth = new Auth(config);
// @ts-ignore
app.use(errorReportingMiddleware);
// @ts-ignore
app.use(apiEndpoints(config, auth, storage));
// @ts-ignore
app.use(handleError);
// @ts-ignore
app.use(final);
app.use(function(request, response) {
response.status(590);
console.log('respo', response);
response.json({error: 'cannot handle this'});
});
return app;
}
export function publishVersion(app, configFile, pkgName, version): supertest.Test {
const pkgMetadata = generatePackageMetadata(pkgName, version);
return supertest(app)
.put(`/${encodeURIComponent(pkgName)}`)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON)
.send(JSON.stringify(pkgMetadata))
.set('accept', HEADERS.GZIP)
.set(HEADER_TYPE.ACCEPT_ENCODING, HEADERS.JSON)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON);
}
export async function publishTaggedVersion(app, configFile, pkgName: string, version: string, tag: string) {
const pkgMetadata = generatePackageMetadata(pkgName, version, {
[tag]: version
});
return supertest(app)
.put(`/${encodeURIComponent(pkgName)}/${encodeURIComponent(version)}/-tag/${encodeURIComponent(tag)}`)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON)
.send(JSON.stringify(pkgMetadata))
.expect(HTTP_STATUS.CREATED)
.set('accept', HEADERS.GZIP)
.set(HEADER_TYPE.ACCEPT_ENCODING, HEADERS.JSON)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON);
}