Skip to content

Commit d61bd5a

Browse files
committed
2.2.0 pre release
1.添加团队管理的功能 2.添加项目版本和接口快照的功能 3.添加自动化测试的轮询功能
1 parent 69446da commit d61bd5a

File tree

2,339 files changed

+212642
-272
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,339 files changed

+212642
-272
lines changed

SBDoc/app.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ app.all('*', function(req, res, next) {
2626
app.use(logger('dev'));
2727
app.use("/proxy",proxy);
2828
app.use(bodyParser.json());
29-
app.use(bodyParser.urlencoded({ extended: false }));
29+
app.use(bodyParser.urlencoded({ extended: false,limit:"100000kb" }));
3030
app.use(cookieParser());
3131
app.use(session({
3232
cookie: {maxAge: 1000*3600*6 },
@@ -40,6 +40,9 @@ app.use("/group",checkFormDataUser(con.imgPath),checkParam("group"),checkUser);
4040
app.use("/interface",checkFormDataUser(con.imgPath),checkParam("interface"),checkUser);
4141
app.use("/status",checkFormDataUser(con.imgPath),checkParam("status"),checkUser);
4242
app.use("/test",checkFormDataUser(con.imgPath),checkParam("test"),checkUser);
43+
app.use("/team",checkFormDataUser(con.imgPath),checkParam("team"),checkUser);
44+
app.use("/version",checkFormDataUser(con.imgPath),checkParam("version"),checkUser);
45+
app.use("/poll",checkFormDataUser(con.imgPath),checkParam("poll"),checkUser);
4346
app.use("/mock",checkFormDataUser(con.tempPath),mock);
4447
app.use("/html",express.static(path.join(__dirname, '../SBDocClient')));
4548
app.use("/img",express.static(con.imgPath));

SBDoc/event/event.js

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ var await=require("asyncawait/await");
77
var moment=require("moment");
88
var fs=require("fs");
99
var temp=require("../model/tempModel");
10+
var poll=require("../model/pollModel");
11+
var test=require("../model/testModel");
12+
var user=require("../model/userModel");
1013
var con=require("../../config.json");
14+
var util=require("../util/util");
1115
var blue=require("bluebird");
1216
var path = require('path');
1317
var rule = new schedule.RecurrenceRule();
@@ -38,3 +42,122 @@ var j = schedule.scheduleJob(rule,async (function(){
3842

3943

4044
}));
45+
46+
var j1=schedule.scheduleJob("0 * * * *",(async (function () {
47+
try
48+
{
49+
let date=moment();
50+
let weekDay=date.weekday();
51+
let hour=date.hour();
52+
let arr=await (poll.findAsync({
53+
date:weekDay,
54+
time:hour
55+
},null,{
56+
populate:{
57+
path:"project"
58+
}
59+
}));
60+
arr=await (poll.populateAsync(arr,{
61+
path:"version"
62+
}));
63+
arr=await (poll.populateAsync(arr,{
64+
path:"test",
65+
}));
66+
for(let obj of arr)
67+
{
68+
let root={
69+
output:"",
70+
count:obj.test.length,
71+
success:0,
72+
fail:0,
73+
unknown:0
74+
};
75+
for(let obj1 of obj.test)
76+
{
77+
obj1=await (test.populateAsync(obj1,{
78+
path:"module"
79+
}))
80+
obj1=await (test.populateAsync(obj1,{
81+
path:"group"
82+
}))
83+
let global={
84+
baseUrl:obj.baseUrl,
85+
before:obj.project.before,
86+
after:obj.project.after
87+
}
88+
if(typeof (obj.version)=="object")
89+
{
90+
global.before=obj.version.before;
91+
global.after=obj.version.after;
92+
}
93+
try
94+
{
95+
let ret=await (util.runTestCode(obj1.code,obj1,{},global,root))
96+
if(ret===undefined)
97+
{
98+
root.unknown++;
99+
}
100+
else if(Boolean(ret)==true)
101+
{
102+
root.success++;
103+
}
104+
else
105+
{
106+
root.fail++;
107+
}
108+
}
109+
catch (err)
110+
{
111+
root.output+=err+"<br>"
112+
}
113+
}
114+
var arrPollUser=obj.users.map(function (obj) {
115+
return obj.toString();
116+
});
117+
var arrProjectUser=obj.project.users.map(function (obj) {
118+
return obj.user.toString();
119+
})
120+
arrProjectUser.unshift(obj.project.owner.toString());
121+
let arr=[];
122+
for(let u of arrPollUser)
123+
{
124+
if(arrProjectUser.indexOf(u)>-1)
125+
{
126+
let obj=await (user.findOneAsync({
127+
_id:u
128+
}));
129+
if(obj && obj.email)
130+
{
131+
arr.push(obj.email);
132+
}
133+
}
134+
}
135+
if(arr.length>0)
136+
{
137+
let subject="[SBDoc]"+moment().format("YYYY-MM-DD HH:mm:ss")+" 项目"+obj.project.name+"轮询结果";
138+
let content=`<h3>测试:${root.count}&nbsp;&nbsp;成功:${root.success}&nbsp;&nbsp;失败:${root.fail}&nbsp;&nbsp;未判定:${root.unknown}</h3>`+root.output;
139+
util.sendMail(obj.sendInfo.smtp,obj.sendInfo.port,obj.sendInfo.user,obj.sendInfo.password,arr,subject,content);
140+
}
141+
}
142+
}
143+
catch (err)
144+
{
145+
console.log(err);
146+
}
147+
})));
148+
149+
150+
151+
152+
153+
154+
155+
156+
157+
158+
159+
160+
161+
162+
163+

SBDoc/model/applyModel.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* Created by sunxin on 2017/4/13.
3+
*/
4+
var mongoose = require('mongoose');
5+
var mongoomise=require("mongoomise")
6+
var db=require("../util/db.js");
7+
var model=new mongoose.Schema({
8+
dis:{
9+
type:String,
10+
default:""
11+
},
12+
fromType:String, //User,Project,Team
13+
from:{
14+
type:mongoose.Schema.ObjectId,
15+
refPath:"fromType"
16+
},
17+
toType:String, //Team,User,Project
18+
to:{
19+
type:mongoose.Schema.ObjectId,
20+
refPath:"toType"
21+
},
22+
type:Number, //0 拉人 1 拉项目 2 人员申请加入 3 项目申请加入
23+
state:Number, //0 申请中 1 同意 2 拒绝 3 忽略
24+
creator:{
25+
type:mongoose.Schema.ObjectId,
26+
ref:"User"
27+
},
28+
editor:{
29+
type:mongoose.Schema.ObjectId,
30+
ref:"User"
31+
},
32+
relatedData:mongoose.Schema.Types.Mixed
33+
},{
34+
timestamps:true
35+
});
36+
model.configOutputField(null,[
37+
"createdAt",
38+
"updatedAt"
39+
]);
40+
var dbManage=db.model("Apply",model);
41+
mongoomise.promisifyAll(dbManage,require("bluebird"));
42+
module.exports=dbManage;

SBDoc/model/groupVersionModel.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Created by sunxin on 2016/11/17.
3+
*/
4+
var mongoose = require('mongoose');
5+
var mongoomise=require("mongoomise")
6+
var db=require("../util/db.js");
7+
var model=new mongoose.Schema({
8+
name:String,
9+
project:{
10+
type:mongoose.Schema.ObjectId,
11+
ref:"Project"
12+
},
13+
type:{
14+
type:Number,
15+
default:0 //0 普通 1 回收站
16+
},
17+
id:String,
18+
version:{
19+
type:mongoose.Schema.ObjectId,
20+
ref:"Version"
21+
}
22+
},{
23+
timestamps:true
24+
});
25+
26+
var dbManage=db.model("GroupVersion",model);
27+
mongoomise.promisifyAll(dbManage,require("bluebird"));
28+
module.exports=dbManage;
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/**
2+
* Created by sunxin on 2017/6/23.
3+
*/
4+
var mongoose = require('mongoose');
5+
var mongoomise=require("mongoomise")
6+
var db=require("../util/db.js");
7+
var model=new mongoose.Schema({
8+
name:String,
9+
project:{
10+
type:mongoose.Schema.ObjectId,
11+
ref:"Project"
12+
},
13+
groupType:String,
14+
group:{
15+
type:mongoose.Schema.ObjectId,
16+
refPath:"groupType"
17+
},
18+
url:String,
19+
remark:String,
20+
method:String,
21+
header:{
22+
type:[],
23+
default:[]
24+
},
25+
queryParam:{
26+
type:[],
27+
default:[]
28+
},
29+
bodyParam:{
30+
type:[],
31+
default:[]
32+
},
33+
outParam:{
34+
type:[],
35+
default:[]
36+
},
37+
restParam:{
38+
type:[],
39+
default:[]
40+
},
41+
bodyInfo:Object,
42+
outInfo:Object,
43+
owner:{
44+
type:mongoose.Schema.ObjectId,
45+
ref:"User"
46+
},
47+
editor:{
48+
type:mongoose.Schema.ObjectId,
49+
ref:"User"
50+
},
51+
mock:String,
52+
finish:{
53+
type:Number,
54+
default:0
55+
},
56+
before:Object,
57+
after:Object,
58+
id:String,
59+
snapshot:{
60+
type:String,
61+
default:""
62+
},
63+
snapshotCreator:{
64+
type:mongoose.Schema.ObjectId,
65+
ref:"User"
66+
},
67+
version:{
68+
type:mongoose.Schema.ObjectId,
69+
ref:"Version"
70+
}
71+
},{
72+
timestamps:true
73+
});
74+
model.configOutputField(null,[
75+
"createdAt",
76+
"updatedAt"
77+
]);
78+
var dbManage=db.model("InterfaceSnapshot",model);
79+
mongoomise.promisifyAll(dbManage,require("bluebird"));
80+
module.exports=dbManage;
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/**
2+
* Created by sunxin on 2016/11/17.
3+
*/
4+
var mongoose = require('mongoose');
5+
var mongoomise=require("mongoomise")
6+
var db=require("../util/db.js");
7+
var model=new mongoose.Schema({
8+
name:String,
9+
project:{
10+
type:mongoose.Schema.ObjectId,
11+
ref:"Project"
12+
},
13+
group:{
14+
type:mongoose.Schema.ObjectId,
15+
ref:"GroupVersion"
16+
},
17+
url:String,
18+
remark:String,
19+
method:String,
20+
header:{
21+
type:[],
22+
default:[]
23+
},
24+
queryParam:{
25+
type:[],
26+
default:[]
27+
},
28+
bodyParam:{
29+
type:[],
30+
default:[]
31+
},
32+
outParam:{
33+
type:[],
34+
default:[]
35+
},
36+
restParam:{
37+
type:[],
38+
default:[]
39+
},
40+
bodyInfo:Object,
41+
outInfo:Object,
42+
owner:{
43+
type:mongoose.Schema.ObjectId,
44+
ref:"User"
45+
},
46+
editor:{
47+
type:mongoose.Schema.ObjectId,
48+
ref:"User"
49+
},
50+
mock:String,
51+
finish:{
52+
type:Number,
53+
default:0
54+
},
55+
before:Object,
56+
after:Object,
57+
id:String,
58+
version:{
59+
type:mongoose.Schema.ObjectId,
60+
ref:"Version"
61+
}
62+
},{
63+
timestamps:true
64+
});
65+
model.configOutputField(null,[
66+
"createdAt",
67+
"updatedAt"
68+
]);
69+
var dbManage=db.model("InterfaceVersion",model);
70+
mongoomise.promisifyAll(dbManage,require("bluebird"));
71+
module.exports=dbManage;

0 commit comments

Comments
 (0)