2024-08-03 12:39:22 -05:00
|
|
|
import { describe, expect, test } from 'vitest';
|
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
import { DEFAULT_USER } from '@verdaccio/core';
|
2021-10-29 10:33:05 -05:00
|
|
|
|
2021-11-03 14:56:36 -05:00
|
|
|
import {
|
|
|
|
GENERIC_AVATAR,
|
|
|
|
addGravatarSupport,
|
|
|
|
formatAuthor,
|
|
|
|
generateGravatarUrl,
|
|
|
|
} from '../src/index';
|
2020-03-03 17:59:19 -05:00
|
|
|
|
|
|
|
describe('Utilities', () => {
|
2022-07-29 13:51:45 -05:00
|
|
|
describe('formatAuthor', () => {
|
|
|
|
test('should check author field different values', () => {
|
|
|
|
const author = 'verdaccioNpm';
|
|
|
|
expect(formatAuthor(author).name).toEqual(author);
|
|
|
|
});
|
|
|
|
test('should check author field for object value', () => {
|
|
|
|
const user = {
|
|
|
|
name: 'Verdaccion NPM',
|
|
|
|
email: 'verdaccio@verdaccio.org',
|
|
|
|
url: 'https://verdaccio.org',
|
|
|
|
};
|
|
|
|
expect(formatAuthor(user).url).toEqual(user.url);
|
|
|
|
expect(formatAuthor(user).email).toEqual(user.email);
|
|
|
|
expect(formatAuthor(user).name).toEqual(user.name);
|
|
|
|
});
|
|
|
|
test('should check author field for other value', () => {
|
|
|
|
expect(formatAuthor(null).name).toEqual(DEFAULT_USER);
|
|
|
|
// @ts-expected-error
|
|
|
|
expect(formatAuthor({}).name).toEqual(DEFAULT_USER);
|
|
|
|
// @ts-expected-error
|
|
|
|
expect(formatAuthor([]).name).toEqual(DEFAULT_USER);
|
|
|
|
});
|
|
|
|
});
|
2020-03-03 17:59:19 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
describe('User utilities', () => {
|
|
|
|
test('should generate gravatar url with email', () => {
|
|
|
|
const gravatarUrl: string = generateGravatarUrl('user@verdaccio.org');
|
2020-03-03 17:59:19 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
expect(gravatarUrl).toMatch('https://www.gravatar.com/avatar/');
|
|
|
|
expect(gravatarUrl).not.toMatch('000000000');
|
2020-03-03 17:59:19 -05:00
|
|
|
});
|
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('should generate generic gravatar url', () => {
|
|
|
|
const gravatarUrl: string = generateGravatarUrl();
|
2020-03-03 17:59:19 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
expect(gravatarUrl).toMatch(GENERIC_AVATAR);
|
2020-03-03 17:59:19 -05:00
|
|
|
});
|
2022-07-29 13:51:45 -05:00
|
|
|
});
|
2020-03-03 17:59:19 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
describe('addGravatarSupport', () => {
|
|
|
|
test('check for blank object', () => {
|
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport({})).toEqual({});
|
2020-03-03 17:59:19 -05:00
|
|
|
});
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('author, contributors and maintainers fields are not present', () => {
|
|
|
|
const packageInfo = {
|
|
|
|
latest: {},
|
|
|
|
};
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(packageInfo);
|
|
|
|
});
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('author field is a blank object', () => {
|
|
|
|
const packageInfo = { latest: { author: {} } };
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(packageInfo);
|
2021-11-03 14:56:36 -05:00
|
|
|
});
|
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('author field is a string type', () => {
|
|
|
|
const packageInfo = {
|
|
|
|
latest: { author: 'user@verdccio.org' },
|
|
|
|
};
|
|
|
|
const result = {
|
|
|
|
latest: {
|
|
|
|
author: {
|
|
|
|
author: 'user@verdccio.org',
|
|
|
|
avatar: GENERIC_AVATAR,
|
|
|
|
email: '',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(result);
|
|
|
|
});
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('author field is an object type with author information', () => {
|
|
|
|
const packageInfo = {
|
|
|
|
latest: { author: { name: 'verdaccio', email: 'user@verdccio.org' } },
|
|
|
|
};
|
|
|
|
const result = {
|
|
|
|
latest: {
|
|
|
|
author: {
|
|
|
|
avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7',
|
|
|
|
email: 'user@verdccio.org',
|
|
|
|
name: 'verdaccio',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(result);
|
|
|
|
});
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('contributor field is a blank array', () => {
|
|
|
|
const packageInfo = {
|
|
|
|
latest: {
|
|
|
|
contributors: [],
|
|
|
|
},
|
|
|
|
};
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(packageInfo);
|
|
|
|
});
|
2021-11-03 14:56:36 -05:00
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
describe('contributors', () => {
|
|
|
|
test('contributors field has contributors', () => {
|
2021-11-03 14:56:36 -05:00
|
|
|
const packageInfo = {
|
|
|
|
latest: {
|
2022-07-29 13:51:45 -05:00
|
|
|
contributors: [
|
|
|
|
{ name: 'user', email: 'user@verdccio.org' },
|
|
|
|
{ name: 'user1', email: 'user1@verdccio.org' },
|
|
|
|
],
|
2021-11-03 14:56:36 -05:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
const result = {
|
|
|
|
latest: {
|
2022-07-29 13:51:45 -05:00
|
|
|
contributors: [
|
|
|
|
{
|
|
|
|
avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7',
|
|
|
|
email: 'user@verdccio.org',
|
|
|
|
name: 'user',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
avatar: 'https://www.gravatar.com/avatar/51105a49ce4a9c2bfabf0f6a2cba3762',
|
|
|
|
email: 'user1@verdccio.org',
|
|
|
|
name: 'user1',
|
|
|
|
},
|
|
|
|
],
|
2021-11-03 14:56:36 -05:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(result);
|
|
|
|
});
|
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('contributors field is an object', () => {
|
2021-11-03 14:56:36 -05:00
|
|
|
const packageInfo = {
|
|
|
|
latest: {
|
2022-07-29 13:51:45 -05:00
|
|
|
contributors: { name: 'user', email: 'user@verdccio.org' },
|
2021-11-03 14:56:36 -05:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
const result = {
|
2021-11-03 14:56:36 -05:00
|
|
|
latest: {
|
2022-07-29 13:51:45 -05:00
|
|
|
contributors: [
|
|
|
|
{
|
|
|
|
avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7',
|
|
|
|
email: 'user@verdccio.org',
|
|
|
|
name: 'user',
|
|
|
|
},
|
|
|
|
],
|
2021-11-03 14:56:36 -05:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// @ts-ignore
|
2022-07-29 13:51:45 -05:00
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(result);
|
2021-11-03 14:56:36 -05:00
|
|
|
});
|
|
|
|
|
2022-07-29 13:51:45 -05:00
|
|
|
test('contributors field is a string', () => {
|
|
|
|
const contributor = 'Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)';
|
2021-11-03 14:56:36 -05:00
|
|
|
const packageInfo = {
|
|
|
|
latest: {
|
2022-07-29 13:51:45 -05:00
|
|
|
contributors: contributor,
|
2021-11-03 14:56:36 -05:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
const result = {
|
|
|
|
latest: {
|
2022-07-29 13:51:45 -05:00
|
|
|
contributors: [
|
2021-11-03 14:56:36 -05:00
|
|
|
{
|
2022-07-29 13:51:45 -05:00
|
|
|
avatar: GENERIC_AVATAR,
|
|
|
|
email: contributor,
|
|
|
|
name: contributor,
|
2021-11-03 14:56:36 -05:00
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(result);
|
|
|
|
});
|
|
|
|
});
|
2022-07-29 13:51:45 -05:00
|
|
|
|
|
|
|
test('maintainers field is a blank array', () => {
|
|
|
|
const packageInfo = {
|
|
|
|
latest: {
|
|
|
|
maintainers: [],
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(packageInfo);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('maintainers field has maintainers', () => {
|
|
|
|
const packageInfo = {
|
|
|
|
latest: {
|
|
|
|
maintainers: [
|
|
|
|
{ name: 'user', email: 'user@verdccio.org' },
|
|
|
|
{ name: 'user1', email: 'user1@verdccio.org' },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
const result = {
|
|
|
|
latest: {
|
|
|
|
maintainers: [
|
|
|
|
{
|
|
|
|
avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7',
|
|
|
|
email: 'user@verdccio.org',
|
|
|
|
name: 'user',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
avatar: 'https://www.gravatar.com/avatar/51105a49ce4a9c2bfabf0f6a2cba3762',
|
|
|
|
email: 'user1@verdccio.org',
|
|
|
|
name: 'user1',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// @ts-ignore
|
|
|
|
expect(addGravatarSupport(packageInfo)).toEqual(result);
|
|
|
|
});
|
2020-03-03 17:59:19 -05:00
|
|
|
});
|
|
|
|
});
|