From 0d373be6898d9b2e7367d12c3f2d8e08154b1c16 Mon Sep 17 00:00:00 2001 From: Nzix Date: Tue, 25 Sep 2018 19:49:10 +0800 Subject: [PATCH] rewrite unit tests --- app.js | 2 +- app.test.js | 16 +++++++++++++ package.json | 2 +- test/album.test.js | 25 ++++++++++++-------- test/comment.test.js | 37 ++++++++++++------------------ test/login.test.js | 52 +++++++++++++++--------------------------- test/lyric.test.js | 41 +++++++++++++++------------------ test/musicUrl.test.js | 33 --------------------------- test/music_url.test.js | 23 +++++++++++++++++++ test/search.test.js | 28 +++++++++++------------ util/util.js | 29 +---------------------- 11 files changed, 123 insertions(+), 165 deletions(-) create mode 100644 app.test.js delete mode 100644 test/musicUrl.test.js create mode 100644 test/music_url.test.js diff --git a/app.js b/app.js index 7bd789a..dd8a12e 100644 --- a/app.js +++ b/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}`) }) diff --git a/app.test.js b/app.test.js new file mode 100644 index 0000000..2aa5409 --- /dev/null +++ b/app.test.js @@ -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) +}) \ No newline at end of file diff --git a/package.json b/package.json index 63bcdd3..f97631f 100644 --- a/package.json +++ b/package.json @@ -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": [ "网易云音乐", diff --git a/test/album.test.js b/test/album.test.js index 8a811e0..b2253fe 100644 --- a/test/album.test.js +++ b/test/album.test.js @@ -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) + } + }) }) }) diff --git a/test/comment.test.js b/test/comment.test.js index 39e586d..bbf4ba7 100644 --- a/test/comment.test.js +++ b/test/comment.test.js @@ -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) + } + }) }) }) diff --git a/test/login.test.js b/test/login.test.js index a001af6..349b9e3 100644 --- a/test/login.test.js +++ b/test/login.test.js @@ -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) + } + }) + }) +}) diff --git a/test/lyric.test.js b/test/lyric.test.js index 128d86b..491113e 100644 --- a/test/lyric.test.js +++ b/test/lyric.test.js @@ -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) + } + }) + }) +}) diff --git a/test/musicUrl.test.js b/test/musicUrl.test.js deleted file mode 100644 index bd45286..0000000 --- a/test/musicUrl.test.js +++ /dev/null @@ -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); - } - ); - }); -}); diff --git a/test/music_url.test.js b/test/music_url.test.js new file mode 100644 index 0000000..c0fccb4 --- /dev/null +++ b/test/music_url.test.js @@ -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) + } + }) + }); +}); diff --git a/test/search.test.js b/test/search.test.js index b9c280c..4f92b5a 100644 --- a/test/search.test.js +++ b/test/search.test.js @@ -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) - }) + } + }) }) }) diff --git a/util/util.js b/util/util.js index 5a37aff..65243d3 100644 --- a/util/util.js +++ b/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 }; -- GitLab