123 lines
4.1 KiB
JavaScript
123 lines
4.1 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const test = require('node:test');
|
|
|
|
const GenealogyApi = require('../utils/ApiClient.js');
|
|
|
|
function createClient() {
|
|
return GenealogyApi.createClient({
|
|
baseUrl: 'https://api.example.test',
|
|
tokenStore: {
|
|
getItem() { return null; },
|
|
setItem() {},
|
|
removeItem() {}
|
|
},
|
|
axiosInstance: {
|
|
request() {
|
|
return Promise.resolve({ data: { code: 200, data: {} } });
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
test('API client exposes latest document-defined PC operations', () => {
|
|
const client = createClient();
|
|
const allowed = [
|
|
'clientId', 'tenantId', 'tokenKey', 'getToken', 'setToken', 'clearToken', 'buildApiUrl',
|
|
'register', 'login', 'loginBySms', 'sendSmsCode',
|
|
'currentProfile', 'updateProfile', 'changePassword', 'resetPassword', 'changePhone',
|
|
'deactivateAccount', 'logout', 'uploadFile',
|
|
'captchaRequirement', 'captchaChallenge', 'captchaVerify',
|
|
'regionChildren', 'regionPath', 'regionSearch', 'regionDetail',
|
|
'feeds', 'feedsPage', 'feedDetail', 'createFeed', 'updateFeed', 'deleteFeed',
|
|
'likeFeed', 'unlikeFeed', 'feedComments', 'feedCommentsPage', 'createFeedComment',
|
|
'deleteFeedComment'
|
|
].sort();
|
|
|
|
assert.deepEqual(Object.keys(client).sort(), allowed);
|
|
});
|
|
|
|
test('password login stores only the returned token', async () => {
|
|
let stored = '';
|
|
const client = GenealogyApi.createClient({
|
|
baseUrl: 'https://api.example.test',
|
|
tokenStore: {
|
|
getItem() { return stored; },
|
|
setItem(_, value) { stored = value; },
|
|
removeItem() { stored = ''; }
|
|
},
|
|
axiosInstance: {
|
|
request(config) {
|
|
assert.equal(config.method, 'post');
|
|
assert.equal(config.url, '/genealogy/pc/auth/login');
|
|
assert.equal(config.headers.Authorization, undefined);
|
|
return Promise.resolve({ data: { code: 200, data: { accessToken: 'access-token' } } });
|
|
}
|
|
}
|
|
});
|
|
|
|
await client.login({ phone: '13800000000', password: 'hash' });
|
|
|
|
assert.equal(client.getToken(), 'access-token');
|
|
});
|
|
|
|
test('sending an SMS code uses the latest documented request fields', async () => {
|
|
const client = GenealogyApi.createClient({
|
|
baseUrl: 'https://api.example.test',
|
|
tokenStore: { getItem() { return null; }, setItem() {}, removeItem() {} },
|
|
axiosInstance: {
|
|
request(config) {
|
|
assert.equal(config.url, '/genealogy/pc/auth/sms/code');
|
|
assert.deepEqual(config.data, {
|
|
grantType: 'sms',
|
|
tenantId: '000000',
|
|
clientId: 'ced7e5f0498645c6ec642dcf450b036f',
|
|
phone: '13800000000',
|
|
sceneCode: 'WEB_H5_LOGIN',
|
|
validToken: 'captcha-ticket'
|
|
});
|
|
return Promise.resolve({ data: { code: 200, data: null } });
|
|
}
|
|
}
|
|
});
|
|
|
|
await client.sendSmsCode({
|
|
phone: '13800000000',
|
|
sceneCode: 'WEB_H5_LOGIN',
|
|
validToken: 'captcha-ticket'
|
|
});
|
|
});
|
|
|
|
test('family feed methods use the documented paths and request bodies', async () => {
|
|
const calls = [];
|
|
const client = GenealogyApi.createClient({
|
|
baseUrl: 'https://api.example.test',
|
|
tokenStore: { getItem() { return 'access-token'; }, setItem() {}, removeItem() {} },
|
|
axiosInstance: {
|
|
request(config) {
|
|
calls.push(config);
|
|
return Promise.resolve({ data: { code: 200, data: {} } });
|
|
}
|
|
}
|
|
});
|
|
|
|
await client.createFeed(900001001, {
|
|
feedType: 'text',
|
|
feedContent: '今天上传一张老照片。',
|
|
mediaOssIds: '101,102',
|
|
status: '0'
|
|
});
|
|
await client.feedCommentsPage(900001001, 7001, { pageNum: 1, pageSize: 10 });
|
|
await client.deleteFeedComment(900001001, 7001, 8001);
|
|
|
|
assert.deepEqual(calls.map((config) => [config.method, config.url, config.params, config.data]), [
|
|
['post', '/genealogy/pc/genealogies/900001001/feeds', undefined, {
|
|
feedType: 'text',
|
|
feedContent: '今天上传一张老照片。',
|
|
mediaOssIds: '101,102',
|
|
status: '0'
|
|
}],
|
|
['get', '/genealogy/pc/genealogies/900001001/feeds/7001/comments/page', { pageNum: 1, pageSize: 10 }, undefined],
|
|
['delete', '/genealogy/pc/genealogies/900001001/feeds/7001/comments/8001', undefined, undefined]
|
|
]);
|
|
});
|