Skip to content

Commit ea0705e

Browse files
authored
Merge pull request #66 from TaleLin/shirmy-patch-1
feat: update tests & README
2 parents 25e9b66 + 3eef2cf commit ea0705e

5 files changed

Lines changed: 141 additions & 5 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<p align="center">
1111
<a href="http://flask.pocoo.org/docs/1.0/" rel="nofollow">
1212
<img src="https://img.shields.io/badge/koa-2.7.0-green.svg" alt="flask version" data-canonical-src="https://img.shields.io/badge/koa-2.7.0-green.svg" style="max-width:100%;"></a>
13-
<a href="https://pypi.org/project/Lin-CMS/" rel="nofollow"><img src="https://img.shields.io/badge/lin--mizar-0.1.1-green.svg" alt="lin-cms version" data-canonical-src="https://img.shields.io/badge/lin--cms--test-0.0.1--alpha8-red.svg" style="max-width:100%;"></a>
13+
<a href="https://pypi.org/project/Lin-CMS/" rel="nofollow"><img src="https://img.shields.io/badge/lin--mizar-0.3.1-green.svg" alt="lin-cms version" data-canonical-src="https://img.shields.io/badge/lin--cms--test-0.0.1--alpha8-red.svg" style="max-width:100%;"></a>
1414
<a href="http://doc.cms.7yue.pro/" rel="nofollow"><img src="https://img.shields.io/badge/license-MIT-lightgrey.svg" alt="LISENCE" data-canonical-src="https://img.shields.io/badge/license-MIT-lightgrey.svg" style="max-width:100%;"></a>
1515
</p>
1616

@@ -35,9 +35,9 @@ Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套**内
3535

3636
### 当前最新版本
3737

38-
lin-mizar(核心库) :0.2.0-beta.2
38+
lin-mizar(核心库) :0.3.1
3939

40-
lin-cms-koa(当前示例工程):0.2.0-beta.1
40+
lin-cms-koa(当前示例工程):0.3.0
4141

4242
### 文档地址
4343

tests/api/cms/test1.test.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import "../../helper/initial";
2+
import request from "supertest";
3+
import { createApp } from '../../../app/app';
4+
import sequelize from "../../../app/libs/db";
5+
6+
describe("test1.test.js", () => {
7+
// 必须,app示例
8+
let app;
9+
10+
beforeAll(async () => {
11+
// 初始化app示例
12+
app = await createApp();
13+
});
14+
15+
afterAll(() => {
16+
// 最后关闭数据库
17+
setTimeout(() => {
18+
sequelize.close();
19+
}, 500);
20+
});
21+
22+
// 测试 api 的函数
23+
// 测试 api的 URL 为 /cms/test/
24+
test("测试/cms/test/", async () => {
25+
const response = await request(app.callback()).get("/cms/test/");
26+
expect(response.status).toBe(200);
27+
expect(response.type).toMatch(/html/);
28+
});
29+
30+
// 这个测试不会通过,缺少认证,可以参考 user2.test.js 添加 bearer
31+
test("测试/cms/user/register 输入不规范用户名", async () => {
32+
const response = await request(app.callback())
33+
.post("/cms/user/register")
34+
.send({
35+
username: "p",
36+
password: "123456",
37+
confirm_password: "123456"
38+
});
39+
expect(response.status).toBe(400);
40+
expect(response.body).toHaveProperty("error_code", 10030);
41+
expect(response.type).toMatch(/json/);
42+
});
43+
});

tests/helper/fake/fake.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import '../initial';
2+
import sequelize from '../../../app/libs/db';
3+
import { generate } from 'lin-mizar';
4+
import { UserModel, UserIdentityModel } from '../../../app/models/user';
5+
import { GroupModel } from '../../../app/models/group';
6+
import { PermissionModel } from '../../../app/models/permission';
7+
import { GroupPermissionModel } from '../../../app/models/group-permission';
8+
9+
const type = 'USERNAME_PASSWORD';
10+
11+
/**
12+
* 如果创建失败,请确保你的数据库中没有同名的分组和同名的用户
13+
*/
14+
const run = async () => {
15+
// 创建权限组
16+
const group = new GroupModel();
17+
group.name = '普通分组';
18+
group.info = '就是一个分组而已';
19+
await group.save();
20+
21+
// 创建用户
22+
const user = new UserModel();
23+
user.username = 'pedro';
24+
await user.save();
25+
26+
// 创建用户密码
27+
await UserIdentityModel.create({
28+
user_id: user.id,
29+
identity_type: type,
30+
identifier: user.username,
31+
credential: generate('123456')
32+
});
33+
34+
// 在运行 app 的时候会获取路由中定义好的权限并插入,这里需要找到 id 来关联权限组
35+
const permission = await PermissionModel.findOne({
36+
where: {
37+
name: '删除图书',
38+
module: '图书'
39+
}
40+
});
41+
42+
// 关联 permission 权限和 group 权限组
43+
await GroupPermissionModel.create({
44+
group_id: group.id,
45+
permission_id: permission.id
46+
});
47+
48+
setTimeout(() => {
49+
sequelize.close();
50+
}, 500);
51+
};
52+
53+
run();
54+
55+
// /**
56+
// * 权限分配,关联用户和权限组
57+
// */
58+
// import '../initial';
59+
// import sequelize from '../../../app/libs/db';
60+
// import { UserModel } from '../../../app/models/user';
61+
// import { GroupModel } from '../../../app/models/group';
62+
// import { UserGroupModel } from '../../../app/models/user-group';
63+
64+
// const run = async () => {
65+
// // 查找需要关联的权限组 id
66+
// const group = await GroupModel.findOne({
67+
// where: {
68+
// name: '普通分组'
69+
// }
70+
// });
71+
72+
// // 查找 pedro 用户的 id 用去关联权限组
73+
// const user = await UserModel.findOne({
74+
// where: {
75+
// username: 'pedro'
76+
// }
77+
// });
78+
79+
// // 关联用户和权限组
80+
// await UserGroupModel.create({
81+
// user_id: user.id,
82+
// group_id: group.id
83+
// });
84+
85+
// setTimeout(() => {
86+
// sequelize.close();
87+
// }, 500);
88+
// };
89+
90+
// run();

tests/helper/fake/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
require('@babel/register');
2+
3+
require('./fake');

tests/helper/token.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const fs = require('fs');
22

33
exports.saveTokens = function saveTokens (data) {
4-
fs.writeFileSync('tokens.json', JSON.stringify(data));
4+
fs.writeFileSync('../../tokens.json', JSON.stringify(data));
55
};
66

77
exports.getToken = function getToken (type = 'access_token') {
8-
const buf = fs.readFileSync('tokens.json');
8+
const buf = fs.readFileSync('../../tokens.json');
99
return JSON.parse(buf.toString())[type];
1010
};

0 commit comments

Comments
 (0)