0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-23 22:27:34 -05:00
verdaccio/test/unit/__helper/api.ts

119 lines
3.6 KiB
TypeScript
Raw Normal View History

import {HEADER_TYPE, HEADERS, HTTP_STATUS, TOKEN_BEARER} from '../../../src/lib/constants';
import {buildToken} from '../../../src/lib/utils';
import { Package } from '@verdaccio/types';
chore(docs): add testing development notes (#1343) * chore: add testing notes co-contributions by: @lirantal @DanielRuf This PR aims to add on boarding proccess for new contributors to test verdaccio, update test or add new features. * chore: add new sections * chore: add functional test notes * chore: fix typos Co-Authored-By: Daniel Ruf <danielruf@users.noreply.github.com> * chore: add functional test block Co-Authored-By: Daniel Ruf <danielruf@users.noreply.github.com> * chore: add before commit guide Co-Authored-By: Daniel Ruf <danielruf@users.noreply.github.com> * chore: add ci notes Co-Authored-By: Daniel Ruf <danielruf@users.noreply.github.com> * chore: extend notes Co-Authored-By: Daniel Ruf <danielruf@users.noreply.github.com> * chore: update ci notes Co-Authored-By: Daniel Ruf <danielruf@users.noreply.github.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com> * chore: update test/README.md Co-Authored-By: Liran Tal <liran.tal@gmail.com>
2019-06-13 11:28:43 -05:00
// API Helpers
// This file should contain utilities to avoid repeated task over API unit testing,
// Please, comply with the following:
// - Promisify everything
// - Encourage using constants or create new ones if it's needed
// - // @ts-ignore or any is fine if there is no other way
export function putPackage(
request: any,
pkgName: string,
publishMetadata: Package
): Promise<any[]> {
return new Promise((resolve) => {
request.put(pkgName)
.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON)
.send(JSON.stringify(publishMetadata))
.set('accept', 'gzip')
.set('accept-encoding', HEADERS.JSON)
.expect(HTTP_STATUS.CREATED)
.end(function(err, res) {
resolve([err, res]);
});
});
}
export function getPackage(
request: any,
header: string,
pkg: string,
statusCode: number = HTTP_STATUS.OK): Promise<any[]> {
// $FlowFixMe
return new Promise((resolve) => {
request.get(`/${pkg}`)
.set(HEADERS.AUTHORIZATION, header)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(statusCode)
.end(function(err, res) {
resolve([err, res]);
});
});
}
export function loginUserToken(request: any,
user: string,
credentials: any,
token: string,
statusCode: number = HTTP_STATUS.CREATED): Promise<any[]> {
// $FlowFixMe
return new Promise((resolve) => {
request.put(`/-/user/org.couchdb.user:${user}`)
.send(credentials)
.set('authorization', buildToken(TOKEN_BEARER, token))
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(statusCode)
.end(function(err, res) {
return resolve([err, res]);
});
});
}
export function addUser(request: any, user: string, credentials: any,
statusCode: number = HTTP_STATUS.CREATED): Promise<any[]> {
// $FlowFixMe
return new Promise((resolve) => {
request.put(`/-/user/org.couchdb.user:${user}`)
.send(credentials)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(statusCode)
.end(function(err, res) {
return resolve([err, res]);
});
});
}
export async function getNewToken(request: any, credentials: any): Promise<string> {
return new Promise(async (resolve) => {
const [err, res] = await
addUser(request, credentials.name, credentials);
expect(err).toBeNull();
const {token, ok} = res.body;
expect(ok).toBeDefined();
expect(token).toBeDefined();
expect(typeof token).toBe('string');
resolve(token);
});
}
export function getProfile(request: any, token: string, statusCode: number = HTTP_STATUS.OK): Promise<any[]> {
// $FlowFixMe
return new Promise((resolve) => {
request.get(`/-/npm/v1/user`)
.set('authorization', buildToken(TOKEN_BEARER, token))
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(statusCode)
.end(function(err, res) {
return resolve([err, res]);
});
});
}
export function postProfile(request: any, body: any, token: string, statusCode: number = HTTP_STATUS.OK): Promise<any[]> {
// $FlowFixMe
return new Promise((resolve) => {
request.post(`/-/npm/v1/user`)
.send(body)
2019-05-19 14:37:43 -05:00
.set(HEADERS.AUTHORIZATION, `Bearer ${token}`)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(statusCode)
.end(function(err, res) {
return resolve([err, res]);
});
});
}