Union of hero bots.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

230 lines
6.1 KiB

/**
* HeroUnion测试用例
* 执行此测试之前,请先启动主程序,在根目录执行命令:npm start
*/
import test from 'node:test';
import assert from 'node:assert';
import axios from 'axios';
import common from '../common.mjs';
import HeroUnion from '../heroUnion.mjs';
const axiosConfig = {
timeout: 5000,
proxy: false
};
test('HeroUnion api list test', async (t) => {
let api = 'http://127.0.0.1:8080/api/';
const response = await axios.get(api, axiosConfig);
console.log(response.data);
assert.equal(response.status, 200);
});
test('Hero onboard test', async (t) => {
let params = {
name: 'test_hero',
description: 'Hero test 测试爬虫',
status: 'idle',
timestamp: common.getTimestampInSeconds(),
platforms: 'douyin,xigua',
contracts: 'tajiantv',
country: 'cn',
lang: 'zh',
contact: 'https://tajian.tv'
};
let api = 'http://127.0.0.1:8080/api/onboard/';
const response = await axios.post(api, params, axiosConfig);
console.log(response.data);
assert.equal(response.status, 200);
assert.equal(response.data.code, 1);
params.name = 'test_hero_2';
const response2 = await axios.post(api, params, axiosConfig);
console.log(response2.data);
assert.equal(response2.status, 200);
assert.equal(response2.data.code, 1);
});
test('HeroUnion get heros test', async (t) => {
let api = 'http://127.0.0.1:8080/api/heros/';
const response = await axios.get(api, axiosConfig);
console.log(response.data);
assert.equal(response.status, 200);
});
test('HeroUnion create task test', async (t) => {
let params = {
uuid: 'herounion_demo',
url: 'https://v.douyin.com/xxx',
platform: 'douyin',
contract: 'tajiantv',
data_mode: 'json',
country: 'cn',
lang: 'zh',
notify_url: 'https://tajian.tv/test/'
};
let token = 'hello#world!';
params.sign = common.sign(params, token);
let api = 'http://127.0.0.1:8080/api/newtask/';
const response = await axios.post(api, params, axiosConfig);
console.log(response.data);
assert.equal(response.status, 200);
assert.equal(response.data.code, 1);
});
test('HeroUnion task query test', async (t) => {
let params = {
uuid: 'herounion_demo',
url: 'https://v.douyin.com/yyy',
platform: 'douyin',
contract: 'tajiantv',
data_mode: 'json',
country: 'cn',
lang: 'zh',
notify_url: 'https://tajian.tv/test/'
};
let token = 'hello#world!';
params.sign = common.sign(params, token);
let api = 'http://127.0.0.1:8080/api/newtask/';
const response = await axios.post(api, params, axiosConfig);
console.log(response.data);
assert.equal(response.status, 200);
assert.equal(response.data.code, 1);
assert.ok(response.data.task);
//调用查询接口
let task_id = response.data.task.id;
assert.ok(task_id);
api = 'http://127.0.0.1:8080/api/querytask/';
params = {
uuid: 'herounion_demo',
task_id: task_id
};
params.sign = common.sign(params, token);
let queryOption = axiosConfig;
queryOption.method = 'get';
queryOption.url = api;
queryOption.params = params;
const response2 = await axios(queryOption);
console.log('Query task params', params,);
console.log('Query task result', response2.data);
assert.equal(response2.status, 200);
assert.equal(response2.data.code, 1);
assert.ok(response2.data.task);
});
test('HeroUnion get waiting task test', async (t) => {
//case 1
let params = {
platforms: 'douyin,kuaishou,xigua,bilibili',
contracts: 'tajiantv',
data_mode: 'json',
country: 'cn',
lang: 'zh'
};
let api = 'http://127.0.0.1:8080/api/gettask/';
let queryOption = axiosConfig;
queryOption.method = 'get';
queryOption.url = api;
queryOption.params = params;
const response = await axios(queryOption);
console.log(response.data);
assert.equal(response.status, 200);
assert.equal(response.data.code, 1);
assert.ok(response.data.task);
//case 2
params.platforms = 'youku';
const response2 = await axios(queryOption);
console.log(response2.data);
assert.equal(response2.status, 200);
assert.equal(response2.data.code, 0);
assert.ifError(response2.data.task);
});
test('HeroUnion task data save test', async (t) => {
let params = {
platforms: 'douyin,kuaishou,xigua,bilibili',
contracts: 'tajiantv',
data_mode: 'json',
country: 'cn',
lang: 'zh'
};
let api = 'http://127.0.0.1:8080/api/gettask/';
let queryOption = axiosConfig;
queryOption.method = 'get';
queryOption.url = api;
queryOption.params = params;
const response = await axios(queryOption);
console.log(response.data);
assert.equal(response.status, 200);
assert.equal(response.data.code, 1);
assert.ok(response.data.task);
let task = response.data.task;
let task_data = {
"title": "标题:HeroUnion英雄联盟",
"description": "描述内容,联盟简介",
"others": "其它内容"
};
api = 'http://127.0.0.1:8080/api/savetask/';
params = {
name: "heroDemo",
task_id: task.id,
task_result: task_data
};
params.sign = common.sign(params, task.token); //对参数进行签名
//case 1
const response2 = await axios.post(api, params, axiosConfig);
console.log(response2.data);
assert.equal(response2.status, 200);
assert.equal(response2.data.code, 1);
//case 2
const response3 = await axios.post(api, params, axiosConfig);
console.log(response3.data);
assert.equal(response3.status, 200);
assert.equal(response3.data.code, 0);
});
test('HeroUnion stats test', async (t) => {
let api = 'http://127.0.0.1:8080/api/stats/';
const response = await axios.get(api, axiosConfig);
console.log(response.data);
assert.equal(response.status, 200);
});