73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
import http from 'http'
|
||
import u from 'util'
|
||
import file from 'file'
|
||
|
||
let bakDB = false
|
||
|
||
// 用于测试的http客户端,设置默认URL前缀方便后续调用
|
||
let hc = http.new({ baseURL: 'http://localhost:8080', timeout: 1000 })
|
||
|
||
// 测试开始前,启动服务
|
||
function onStart() {
|
||
// 备份数据库文件
|
||
bakDB = file.exists('user.db')
|
||
if (bakDB) file.rename('user.db', 'user.db.bak')
|
||
// 启动服务
|
||
u.shell(__startExec, 'start')
|
||
// 等待服务启动
|
||
u.sleep(100)
|
||
}
|
||
|
||
// 测试结束后,停止服务
|
||
function onStop() {
|
||
// 停止服务
|
||
u.shell(__startExec, 'stop')
|
||
// 恢复数据库文件
|
||
file.remove('user.db')
|
||
if (bakDB) file.rename('user.db.bak', 'user.db')
|
||
}
|
||
|
||
function testNotLoggedIn() {
|
||
// 未登录,应该返回403
|
||
let r = hc.get('/userInfo')
|
||
return r.statusCode === 403 || r.status + ' ' + r.string()
|
||
}
|
||
|
||
function testBadUserId() {
|
||
// 注册时传入错误的用户ID,应该返回400
|
||
let r = hc.post('/register', { id: 'test.User', password: u.hex(u.sha256('123456')), name: '测试用户' })
|
||
return r.statusCode === 400 || r.status + ' ' + r.string()
|
||
}
|
||
|
||
function testRegister() {
|
||
// 注册一个新用户,,code应该返回1
|
||
let r = hc.post('/register', { id: 'testUser', password: u.hex(u.sha256('123456')), name: '测试用户' })
|
||
if (r.statusCode !== 200) return r.status + ' ' + r.string()
|
||
let o = r.object()
|
||
return o.code === 1 || o
|
||
}
|
||
|
||
function testLoginWithBadPassword() {
|
||
// 登录时传入错误的密码,code应该返回401
|
||
let r = hc.post('/login', { id: 'testUser', password: u.hex(u.sha256('1234567')) })
|
||
if (r.statusCode !== 200) return r.status + ' ' + r.string()
|
||
let o = r.object()
|
||
return o.code === 401 || o
|
||
}
|
||
|
||
function testLogin() {
|
||
// 登录,code应该返回1
|
||
let r = hc.post('/login', { id: 'testUser', password: u.hex(u.sha256('123456')) })
|
||
if (r.statusCode !== 200) return r.status + ' ' + r.string()
|
||
let o = r.object()
|
||
return o.code === 1 || o
|
||
}
|
||
|
||
function testGetUserInfo() {
|
||
// 获取用户信息,code应该返回1,id和name应该正确
|
||
let r = hc.get('/userInfo')
|
||
if (r.statusCode !== 200) return r.status + ' ' + r.string()
|
||
let o = r.object()
|
||
return o.code === 1 && o.data.id === 'testUser' && o.data.name === '测试用户' || o
|
||
}
|