mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
rewrite unit tests
This commit is contained in:
parent
a26ab583f3
commit
0d373be689
2
app.js
2
app.js
@ -99,7 +99,7 @@ fs.readdirSync(path.resolve(__dirname, 'router'))
|
||||
|
||||
const port = process.env.PORT || 3000
|
||||
|
||||
app.listen(port, () => {
|
||||
app.server = app.listen(port, () => {
|
||||
console.log(`server running @ http://localhost:${port}`)
|
||||
})
|
||||
|
||||
|
16
app.test.js
Normal file
16
app.test.js
Normal file
@ -0,0 +1,16 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
let app
|
||||
before(() => {
|
||||
app = require('./app.js')
|
||||
global.host = 'http://localhost:' + app.server.address().port
|
||||
})
|
||||
after((done) => {
|
||||
app.server.close(done)
|
||||
})
|
||||
|
||||
fs.readdirSync(path.resolve(__dirname, 'test'))
|
||||
.forEach(file => {
|
||||
require('./test/' + file)
|
||||
})
|
@ -4,7 +4,7 @@
|
||||
"description": "网易云音乐 NodeJS 版 API",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
"test": "mocha -r intelli-espower-loader -t 20000 test"
|
||||
"test": "mocha -r intelli-espower-loader -t 20000 app.test.js --exit"
|
||||
},
|
||||
"keywords": [
|
||||
"网易云音乐",
|
||||
|
@ -1,17 +1,22 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createRequest } = require('../util/util')
|
||||
const request = require('request')
|
||||
host = global.host || 'http://localhost:3000'
|
||||
|
||||
describe('测试获取歌手专辑列表是否正常', () => {
|
||||
it('数据的 code 应该为200', done => {
|
||||
const id = 32311
|
||||
createRequest(`/api/album/${id}`, 'GET', null)
|
||||
.then(result => {
|
||||
const code = JSON.parse(result).code
|
||||
console.log('code:' + code)
|
||||
assert(code === 200)
|
||||
const qs = {
|
||||
id: 32311
|
||||
}
|
||||
|
||||
request.get({url: `${host}/album`,qs: qs}, (err, res, body) => {
|
||||
if (!err && res.statusCode == 200) {
|
||||
body = JSON.parse(body)
|
||||
assert(body.code === 200)
|
||||
done()
|
||||
})
|
||||
.catch(err => done(err))
|
||||
}
|
||||
else{
|
||||
done(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,31 +1,22 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createWebAPIRequest } = require('../util/util')
|
||||
const request = require('request')
|
||||
host = global.host || 'http://localhost:3000'
|
||||
|
||||
describe('测试获取评论是否正常', () => {
|
||||
it('数据的 code 应该为200', done => {
|
||||
const rid = 32311
|
||||
const cookie = ''
|
||||
const data = {
|
||||
offset: 0,
|
||||
rid: rid,
|
||||
limit: 20,
|
||||
csrf_token: ''
|
||||
const qs = {
|
||||
id: 32311
|
||||
}
|
||||
createWebAPIRequest(
|
||||
'music.163.com',
|
||||
`/weapi/v1/resource/comments/R_SO_4_${rid}/?csrf_token=`,
|
||||
'POST',
|
||||
data,
|
||||
cookie,
|
||||
music_req => {
|
||||
console.log({
|
||||
code: JSON.parse(music_req).code
|
||||
})
|
||||
assert(JSON.parse(music_req).code === 200)
|
||||
|
||||
request.get({url: `${host}/comment/album`,qs: qs}, (err, res, body) => {
|
||||
if (!err && res.statusCode == 200) {
|
||||
body = JSON.parse(body)
|
||||
assert(body.code === 200)
|
||||
done()
|
||||
},
|
||||
err => done(err)
|
||||
)
|
||||
}
|
||||
else{
|
||||
done(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,39 +1,25 @@
|
||||
const assert = require("assert");
|
||||
const crypto = require("crypto");
|
||||
const { createWebAPIRequest } = require("../util/util");
|
||||
const assert = require('assert')
|
||||
const request = require('request')
|
||||
host = global.host || 'http://localhost:3000'
|
||||
|
||||
console.log("注意:测试登陆需要替换这里的账号密码!!!");
|
||||
console.log("注意: 测试登录需在 test/login.test.js 中填写账号密码!!!");
|
||||
|
||||
describe("测试登录是否正常", () => {
|
||||
it("手机登录 code 应该等于200", done => {
|
||||
const phone = "换成你的手机号";
|
||||
const password = "换成你的密码";
|
||||
let cookie = "";
|
||||
const md5sum = crypto.createHash("md5");
|
||||
md5sum.update(password);
|
||||
const data = {
|
||||
const qs = {
|
||||
phone: phone,
|
||||
password: md5sum.digest("hex"),
|
||||
rememberLogin: "true"
|
||||
};
|
||||
password: password
|
||||
}
|
||||
|
||||
createWebAPIRequest(
|
||||
"music.163.com",
|
||||
"/weapi/login/cellphone",
|
||||
"POST",
|
||||
data,
|
||||
cookie,
|
||||
(music_req, cookie) => {
|
||||
const result = JSON.parse(music_req);
|
||||
console.log({
|
||||
loginType: result.loginType,
|
||||
code: result.code,
|
||||
account: result.account
|
||||
});
|
||||
assert(result.code === 200);
|
||||
done();
|
||||
},
|
||||
err => done(err)
|
||||
);
|
||||
});
|
||||
});
|
||||
request.get({url: `${host}/login/cellphone`,qs: qs}, (err, res, body) => {
|
||||
if (!err && res.statusCode == 200) {
|
||||
body = JSON.parse(body)
|
||||
assert(body.code === 200)
|
||||
done()
|
||||
}
|
||||
else{
|
||||
done(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,25 +1,22 @@
|
||||
const assert = require("assert");
|
||||
const crypto = require("crypto");
|
||||
const { createWebAPIRequest } = require("../util/util");
|
||||
const assert = require('assert')
|
||||
const request = require('request')
|
||||
host = global.host || 'http://localhost:3000'
|
||||
|
||||
describe("测试获取歌词是否正常", () => {
|
||||
it("数据应该有 lrc 字段", done => {
|
||||
const cookie = "";
|
||||
const data = {};
|
||||
const id = 347230;
|
||||
createWebAPIRequest(
|
||||
"music.163.com",
|
||||
"/weapi/song/lyric?os=osx&id=" + id + "&lv=-1&kv=-1&tv=-1",
|
||||
"POST",
|
||||
data,
|
||||
cookie,
|
||||
music_req => {
|
||||
console.log(music_req);
|
||||
assert(typeof JSON.parse(music_req).lrc !== "undefined");
|
||||
done();
|
||||
// res.send(music_req)
|
||||
},
|
||||
err => res.status(502).send("fetch error")
|
||||
);
|
||||
});
|
||||
});
|
||||
const qs = {
|
||||
id: 347230
|
||||
}
|
||||
|
||||
request.get({url: `${host}/lyric`,qs: qs}, (err, res, body) => {
|
||||
if (!err && res.statusCode == 200) {
|
||||
body = JSON.parse(body)
|
||||
assert(typeof body.lrc !== "undefined")
|
||||
done()
|
||||
}
|
||||
else{
|
||||
done(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,33 +0,0 @@
|
||||
const assert = require("assert");
|
||||
const crypto = require("crypto");
|
||||
const { createWebAPIRequest } = require("../util/util");
|
||||
|
||||
describe("测试获取歌曲是否正常", () => {
|
||||
it("歌曲的 url 不应该为空", done => {
|
||||
const id = 462791935;
|
||||
const br = 999000;
|
||||
const data = {
|
||||
ids: [id],
|
||||
br: br,
|
||||
csrf_token: ""
|
||||
};
|
||||
const cookie = "";
|
||||
|
||||
createWebAPIRequest(
|
||||
"music.163.com",
|
||||
"/weapi/song/enhance/player/url",
|
||||
"POST",
|
||||
data,
|
||||
cookie,
|
||||
music_req => {
|
||||
console.log(music_req);
|
||||
console.log(JSON.parse(music_req).data[0].url);
|
||||
assert(!!JSON.parse(music_req).data[0].url);
|
||||
done();
|
||||
},
|
||||
err => {
|
||||
done(err);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
23
test/music_url.test.js
Normal file
23
test/music_url.test.js
Normal file
@ -0,0 +1,23 @@
|
||||
const assert = require('assert')
|
||||
const request = require('request')
|
||||
host = global.host || 'http://localhost:3000'
|
||||
|
||||
describe("测试获取歌曲是否正常", () => {
|
||||
it("歌曲的 url 不应该为空", done => {
|
||||
const qs = {
|
||||
id: 462791935,
|
||||
br: 999000
|
||||
}
|
||||
|
||||
request.get({url: `${host}/music/url`,qs: qs}, (err, res, body) => {
|
||||
if (!err && res.statusCode == 200) {
|
||||
body = JSON.parse(body)
|
||||
assert(!!body.data[0].url)
|
||||
done()
|
||||
}
|
||||
else{
|
||||
done(err)
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
@ -1,22 +1,22 @@
|
||||
const assert = require('assert')
|
||||
const crypto = require('crypto')
|
||||
const { createRequest } = require('../util/util')
|
||||
const request = require('request')
|
||||
host = global.host || 'http://localhost:3000'
|
||||
|
||||
describe('测试搜索是否正常', () => {
|
||||
it('获取到的数据的 name 应该和搜索关键词一致', done => {
|
||||
const keywords = '海阔天空'
|
||||
const type = 1
|
||||
const limit = 30
|
||||
const data =
|
||||
's=' + keywords + '&limit=' + limit + '&type=' + type + '&offset=0'
|
||||
createRequest('/api/search/pc/', 'POST', data)
|
||||
.then(result => {
|
||||
console.log(JSON.parse(result).result.songs[0].mp3Url)
|
||||
assert(JSON.parse(result).result.songs[0].name === '海阔天空')
|
||||
const qs = {
|
||||
keywords: '海阔天空',
|
||||
type: 1
|
||||
}
|
||||
request.get({url: `${host}/search`,qs: qs}, (err, res, body) => {
|
||||
if (!err && res.statusCode == 200) {
|
||||
body = JSON.parse(body)
|
||||
assert(body.result.songs[0].name === '海阔天空')
|
||||
done()
|
||||
})
|
||||
.catch(err => {
|
||||
}
|
||||
else{
|
||||
done(err)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
29
util/util.js
29
util/util.js
@ -84,34 +84,7 @@ function createWebAPIRequest(
|
||||
});
|
||||
}
|
||||
|
||||
function createRequest(path, method, data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const options = {
|
||||
url: `http://music.163.com${path}`,
|
||||
method: method,
|
||||
headers: {
|
||||
"Referer": "http://music.163.com",
|
||||
"Cookie": "appver=1.5.2",
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
"User-Agent": randomUserAgent()
|
||||
}
|
||||
};
|
||||
|
||||
if (method.toLowerCase() === "post") {
|
||||
options.body = data;
|
||||
}
|
||||
|
||||
request(options, function(error, res, body) {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
resolve(body);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
module.exports = {
|
||||
request,
|
||||
createWebAPIRequest,
|
||||
createRequest
|
||||
createWebAPIRequest
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user