mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
+tests for utils, fix UNAME_RE
This commit is contained in:
1 parent
54a57d3ca9
commit
d01034bca8
5 files changed
+187
-4
No files matched your search
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hydrooj",
|
||||
"version": "2.12.12",
|
||||
"version": "2.12.13",
|
||||
"bin": "bin/hydrooj.js",
|
||||
"main": "dist/loader.js",
|
||||
"typings": "dist/loader.d.ts",
|
||||
@@ -70,4 +70,4 @@
|
||||
"build": "tsc",
|
||||
"build:watch": "tsc --watch"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ import { ValidationError } from '../error';
|
||||
|
||||
const RE_UID = /^-?\d+$/i;
|
||||
const RE_PID = /^[a-zA-Z]+[a-zA-Z0-9]*$/i;
|
||||
const RE_UNAME = /[^\s\u3000](.{,254}[^\s\u3000])?$/i;
|
||||
const RE_UNAME = /^.{3,254}$/i;
|
||||
const RE_ROLE = /^[_0-9A-Za-z]{1,256}$/i;
|
||||
const RE_MAIL = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$/i;
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ export function parseTimeMS(str: string) {
|
||||
export function parseMemoryMB(str: string) {
|
||||
const match = MEMORY_RE.exec(str);
|
||||
if (!match) throw new Error(`${str} error parsing memory`);
|
||||
return Math.floor(parseFloat(match[1]) * MEMORY_UNITS[match[2]]);
|
||||
return Math.ceil(parseFloat(match[1]) * MEMORY_UNITS[match[2]]);
|
||||
}
|
||||
|
||||
export function isClass(obj: any, strict = false) {
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
import 'hydrooj';
|
||||
import * as validator from 'hydrooj/src/lib/validator';
|
||||
|
||||
describe('Validator', () => {
|
||||
test('uid', () => {
|
||||
expect(validator.isUid('123')).toBeTruthy();
|
||||
expect(validator.isUid('123')).toBeTruthy();
|
||||
expect(validator.isUid('-456')).toBeTruthy();
|
||||
expect(validator.isUid('')).toBeFalsy();
|
||||
expect(validator.isUid('1.23')).toBeFalsy();
|
||||
expect(validator.isUid('xyz')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('uname', () => {
|
||||
expect(validator.isUname('twd2')).toBeTruthy();
|
||||
expect(validator.isUname('123twd3')).toBeTruthy();
|
||||
expect(validator.isUname('$%1234')).toBeTruthy();
|
||||
expect(validator.isUname('12<><?,.,./,.,.;\'\'[] 3 t ###2$%^&&*%&#^%$@#$^wd3')).toBeTruthy();
|
||||
expect(validator.isUname('中文测试')).toBeTruthy();
|
||||
expect(validator.isUname('twd'.repeat(10))).toBeTruthy();
|
||||
expect(validator.isUname('')).toBeFalsy();
|
||||
expect(validator.isUname('twd'.repeat(500))).toBeFalsy();
|
||||
expect(validator.isUname('\ntwd4')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('password', () => {
|
||||
expect(validator.isPassword('123twd3')).toBeTruthy();
|
||||
expect(validator.isPassword('12<><?,.,./,.,.;\'\'[]_+)}_+{}{\\%^^%$@#$^wd3')).toBeTruthy();
|
||||
expect(validator.isPassword('twd'.repeat(10))).toBeTruthy();
|
||||
expect(validator.isPassword('twd'.repeat(500))).toBeTruthy();
|
||||
expect(validator.isPassword(' twd4')).toBeTruthy();
|
||||
expect(validator.isPassword('twd2')).toBeFalsy();
|
||||
expect(validator.isPassword('')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('mail', () => {
|
||||
expect(validator.isEmail('ex@example.com')).toBeTruthy();
|
||||
expect(validator.isEmail('1+e-x@example.com')).toBeTruthy();
|
||||
expect(validator.isEmail('example.net@example.com')).toBeTruthy();
|
||||
expect(validator.isEmail('example:net@example.com')).toBeFalsy();
|
||||
expect(validator.isEmail('ex@examplecom')).toBeFalsy();
|
||||
expect(validator.isEmail('example.com')).toBeFalsy();
|
||||
expect(validator.isEmail('examplecom')).toBeFalsy();
|
||||
expect(validator.isEmail('1+e=x@example.com')).toBeFalsy();
|
||||
});
|
||||
|
||||
/*
|
||||
test('domainId', () => {
|
||||
expect(validator.is_domain_id('my_domain_1')).toBeTruthy();
|
||||
expect(validator.is_domain_id('My_Domain')).toBeTruthy();
|
||||
expect(validator.is_domain_id('MyDomain')).toBeTruthy();
|
||||
expect(validator.is_domain_id('myDomain')).toBeTruthy();
|
||||
expect(validator.is_domain_id('twd2')).toBeTruthy();
|
||||
expect(validator.is_domain_id('twd' * 10)).toBeTruthy();
|
||||
expect(validator.is_domain_id('C:\\a.txt')).toBeFalsy();
|
||||
expect(validator.is_domain_id('/etc/hosts')).toBeFalsy();
|
||||
expect(validator.is_domain_id('')).toBeFalsy();
|
||||
expect(validator.is_domain_id(' twd4')).toBeFalsy();
|
||||
expect(validator.is_domain_id('twd4\u3000')).toBeFalsy();
|
||||
expect(validator.is_domain_id('\ntwd4')).toBeFalsy();
|
||||
expect(validator.is_domain_id('22domain')).toBeFalsy();
|
||||
expect(validator.is_domain_id('22-Domain')).toBeFalsy();
|
||||
expect(validator.is_domain_id('My-Domain')).toBeFalsy();
|
||||
expect(validator.is_domain_id('dom')).toBeFalsy();
|
||||
expect(validator.is_domain_id('twd' * 500)).toBeFalsy();
|
||||
expect(validator.is_domain_id('twd\r\n2')).toBeFalsy();
|
||||
expect(validator.is_domain_id('$domain')).toBeFalsy();
|
||||
expect(validator.is_domain_id('12<><?,.,./,.,.;\'\'[] 3 t ###2$%^&&*%&#^')).toBeFalsy();
|
||||
expect(validator.is_domain_id('domain.id')).toBeFalsy();
|
||||
});
|
||||
*/
|
||||
|
||||
test('role', () => {
|
||||
expect(validator.isRole('my_domain_1')).toBeTruthy();
|
||||
expect(validator.isRole('My_Domain')).toBeTruthy();
|
||||
expect(validator.isRole('MyDomain')).toBeTruthy();
|
||||
expect(validator.isRole('myDomain')).toBeTruthy();
|
||||
expect(validator.isRole('twd2')).toBeTruthy();
|
||||
expect(validator.isRole('twd'.repeat(10))).toBeTruthy();
|
||||
expect(validator.isRole('r0le')).toBeTruthy();
|
||||
expect(validator.isRole('1role')).toBeTruthy();
|
||||
expect(validator.isRole('C:\\a.txt')).toBeFalsy();
|
||||
expect(validator.isRole('/etc/hosts')).toBeFalsy();
|
||||
expect(validator.isRole('')).toBeFalsy();
|
||||
expect(validator.isRole(' twd4')).toBeFalsy();
|
||||
expect(validator.isRole('twd4\u3000')).toBeFalsy();
|
||||
expect(validator.isRole('\ntwd4')).toBeFalsy();
|
||||
expect(validator.isRole('My-Role')).toBeFalsy();
|
||||
expect(validator.isRole('twd'.repeat(90))).toBeFalsy();
|
||||
expect(validator.isRole('twd\r\n2')).toBeFalsy();
|
||||
expect(validator.isRole('$role')).toBeFalsy();
|
||||
expect(validator.isRole('role.admin')).toBeFalsy();
|
||||
expect(validator.isRole('12<><?,.,./,.,.;\'\'[#2$%^&&*%&#^')).toBeFalsy();
|
||||
});
|
||||
|
||||
test('content', () => {
|
||||
expect(validator.isContent('dummy_name')).toBeTruthy();
|
||||
expect(validator.isContent('x'.repeat(300))).toBeTruthy();
|
||||
expect(validator.isContent('c')).toBeTruthy();
|
||||
expect(validator.isContent('')).toBeFalsy();
|
||||
expect(validator.isContent('x'.repeat(700000))).toBeFalsy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,80 @@
|
||||
import 'hydrooj';
|
||||
import * as utils from 'hydrooj/src/utils';
|
||||
|
||||
describe('Utils', () => {
|
||||
test('Array.isDiff', () => {
|
||||
expect(Array.isDiff([1], [2])).toBeTruthy();
|
||||
expect(Array.isDiff([1, 2, 3], [1, 2])).toBeTruthy();
|
||||
expect(Array.isDiff(['1'], [1])).toBeTruthy();
|
||||
expect(Array.isDiff(['2'], [])).toBeTruthy();
|
||||
expect(Array.isDiff([1], [1])).toBeFalsy();
|
||||
expect(Array.isDiff([1, 2], [2, 1])).toBeFalsy();
|
||||
});
|
||||
|
||||
test('Date.format', () => {
|
||||
const date = new Date('1926-08-17 00:00:00');
|
||||
expect(date.format()).toStrictEqual('1926-08-17 00:00:00');
|
||||
expect(date.format('%Y-%m+%d')).toStrictEqual('1926-08+17');
|
||||
});
|
||||
|
||||
test('Math.sum', () => {
|
||||
expect(Math.sum(1, 2, 3)).toStrictEqual(6);
|
||||
expect(Math.sum([1, 2], 3)).toStrictEqual(6);
|
||||
expect(Math.sum(-1, 2, 3)).toStrictEqual(4);
|
||||
expect(Math.sum()).toStrictEqual(0);
|
||||
});
|
||||
|
||||
test('Set.isSuperset', () => {
|
||||
const setA = new Set([1, 2, 3]);
|
||||
const setB = new Set([1]);
|
||||
const setC = new Set([2]);
|
||||
const setD = new Set();
|
||||
expect(Set.isSuperset(setA, setA)).toBeTruthy();
|
||||
expect(Set.isSuperset(setA, setB)).toBeTruthy();
|
||||
expect(Set.isSuperset(setB, setA)).toBeFalsy();
|
||||
expect(Set.isSuperset(setB, setC)).toBeFalsy();
|
||||
expect(Set.isSuperset(setA, setD)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('Set.union', () => {
|
||||
const setA = new Set([1, 2, 3]);
|
||||
const setB = new Set([2]);
|
||||
const setC = new Set([4]);
|
||||
const setD = new Set([1, 2, 3, 4]);
|
||||
expect(Set.union(setA, setB)).toStrictEqual(setA);
|
||||
expect(Set.union(setA, setC)).toStrictEqual(setD);
|
||||
});
|
||||
|
||||
test('Set.intersection', () => {
|
||||
const setA = new Set([1, 2, 3]);
|
||||
const setB = new Set([2]);
|
||||
const setC = new Set([4]);
|
||||
const setD = new Set();
|
||||
expect(Set.intersection(setA, setB)).toStrictEqual(setB);
|
||||
expect(Set.intersection(setA, setC)).toStrictEqual(setD);
|
||||
expect(Set.intersection(setA, setD)).toStrictEqual(setD);
|
||||
});
|
||||
|
||||
test('parseTimeMs', () => {
|
||||
expect(utils.parseTimeMS('1000ms')).toStrictEqual(1000);
|
||||
expect(utils.parseTimeMS('1s')).toStrictEqual(1000);
|
||||
expect(utils.parseTimeMS('1.5s')).toStrictEqual(1500);
|
||||
expect(utils.parseTimeMS('13000us')).toStrictEqual(13);
|
||||
});
|
||||
|
||||
test('parseMemoryMB', () => {
|
||||
expect(utils.parseMemoryMB('1mb')).toStrictEqual(1);
|
||||
expect(utils.parseMemoryMB('10kb')).toStrictEqual(1);
|
||||
expect(utils.parseMemoryMB('0.2g')).toStrictEqual(205);
|
||||
});
|
||||
|
||||
test('isClass', () => {
|
||||
const classA = class { };
|
||||
const classB = function () { };
|
||||
classB.prototype.get = function () { return 1 };
|
||||
const funcA = function () { };
|
||||
expect(utils.isClass(classA)).toBeTruthy();
|
||||
expect(utils.isClass(classB)).toBeTruthy();
|
||||
expect(utils.isClass(funcA)).toBeFalsy();
|
||||
})
|
||||
});
|
||||
Reference in new issue
Block a user