skybase 0.1.84 → 0.1.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/.eslintignore +35 -35
  2. package/.eslintrc +41 -41
  3. package/CHANGELOG.md +28 -495
  4. package/README.md +214 -214
  5. package/demo/1-simple/README.md +1 -1
  6. package/demo/1-simple/index.js +7 -7
  7. package/demo/1-simple/model/api/demo.js +26 -26
  8. package/demo/1-simple/model/api/frontApiFiles//347/224/250/344/272/216/345/261/225/347/244/272/345/246/202/344/275/225/345/256/232/344/271/211/344/270/200/344/270/252/346/216/245/345/217/243.js +32 -32
  9. package/demo/1-simple/model//347/224/250/344/272/216/345/261/225/347/244/272/345/246/202/344/275/225/345/256/232/344/271/211/344/270/200/344/270/252/346/216/245/345/217/243.js +29 -29
  10. package/demo/1-simple/package.json +11 -11
  11. package/demo/1-simple/router/demo.js +8 -8
  12. package/demo/1-simple/ws_router/echo.js +9 -9
  13. package/demo/2-api-register/README.md +1 -1
  14. package/demo/2-api-register/config/config.default.js +25 -25
  15. package/demo/2-api-register/config/config.dev.js +15 -15
  16. package/demo/2-api-register/config/config.prod.js +15 -15
  17. package/demo/2-api-register/config/config.test.js +15 -15
  18. package/demo/2-api-register/config/index.js +32 -32
  19. package/demo/2-api-register/model/api/demo.js +26 -26
  20. package/demo/2-api-register/model/api/dir/demo.js +27 -27
  21. package/demo/2-api-register/model/api/redirect.js +30 -30
  22. package/demo/2-api-register/model/api/use-limit.js +45 -45
  23. package/demo/2-api-register/package.json +11 -11
  24. package/demo/2-api-register/router/demo.js +9 -9
  25. package/demo/2-api-register/router/dir/demo.js +9 -9
  26. package/demo/2-api-register/router/redirect.js +8 -8
  27. package/demo/2-api-register/router/use-limit.js +9 -9
  28. package/demo/3-full-module/README.md +1 -1
  29. package/demo/3-full-module/config/config.default.js +33 -33
  30. package/demo/3-full-module/config/config.dev.js +15 -15
  31. package/demo/3-full-module/config/config.prod.js +15 -15
  32. package/demo/3-full-module/config/config.test.js +15 -15
  33. package/demo/3-full-module/config/index.js +32 -32
  34. package/demo/3-full-module/index.js +36 -36
  35. package/demo/3-full-module/model/api/demo.js +26 -26
  36. package/demo/3-full-module/model/api/dir/demo.js +26 -26
  37. package/demo/3-full-module/model/api/use-rabbitmq.js +26 -26
  38. package/demo/3-full-module/model/api/use-redis.js +33 -33
  39. package/demo/3-full-module/package.json +17 -17
  40. package/demo/3-full-module/rabbit-consumer.js +45 -45
  41. package/demo/3-full-module/router/demo.js +9 -9
  42. package/demo/3-full-module/router/dir/demo.js +9 -9
  43. package/demo/3-full-module/router/use-redis.js +14 -14
  44. package/demo/4-api-to-file/README.md +8 -8
  45. package/demo/4-api-to-file/config/config.default.js +8 -8
  46. package/demo/4-api-to-file/config/index.js +32 -32
  47. package/demo/4-api-to-file/index.js +6 -6
  48. package/demo/4-api-to-file/model/api/api.js +142 -142
  49. package/demo/4-api-to-file/package.json +14 -14
  50. package/demo/4-api-to-file/router/api.js +37 -37
  51. package/demo/5-mock-api/README.md +2 -2
  52. package/demo/5-mock-api/config/config.default.js +8 -8
  53. package/demo/5-mock-api/config/index.js +32 -32
  54. package/demo/5-mock-api/index.js +24 -24
  55. package/demo/5-mock-api/model/api/mock.js +213 -213
  56. package/demo/5-mock-api/model/mock.js +27 -27
  57. package/demo/5-mock-api/package.json +15 -15
  58. package/demo/5-mock-api/router/mock.js +20 -20
  59. package/demo/6-sql-test/README.md +1 -1
  60. package/demo/6-sql-test/config/config.default.js +61 -61
  61. package/demo/6-sql-test/config/config.dev.js +15 -15
  62. package/demo/6-sql-test/config/config.prod.js +15 -15
  63. package/demo/6-sql-test/config/config.test.js +15 -15
  64. package/demo/6-sql-test/config/index.js +32 -32
  65. package/demo/6-sql-test/index.js +48 -48
  66. package/demo/6-sql-test/model/api/dir/dir/dir/four.js +18 -18
  67. package/demo/6-sql-test/model/api/dir/dir/three.js +26 -26
  68. package/demo/6-sql-test/model/api/dir/two.js +26 -26
  69. package/demo/6-sql-test/model/api/one.js +18 -18
  70. package/demo/6-sql-test/package.json +18 -18
  71. package/demo/6-sql-test/router/test.js +38 -38
  72. package/demo/6-sql-test/service/test.js +96 -96
  73. package/demo/7-token/README.md +1 -1
  74. package/demo/7-token/config/config.default.js +35 -35
  75. package/demo/7-token/config/config.dev.js +15 -15
  76. package/demo/7-token/config/config.prod.js +15 -15
  77. package/demo/7-token/config/config.test.js +15 -15
  78. package/demo/7-token/config/index.js +32 -32
  79. package/demo/7-token/model/api/demo.js +43 -43
  80. package/demo/7-token/package.json +17 -17
  81. package/demo/8-test/README.md +1 -1
  82. package/demo/8-test/config/config.default.js +35 -35
  83. package/demo/8-test/config/config.dev.js +15 -15
  84. package/demo/8-test/config/config.prod.js +15 -15
  85. package/demo/8-test/config/config.test.js +15 -15
  86. package/demo/8-test/config/index.js +32 -32
  87. package/demo/8-test/index.js +30 -30
  88. package/demo/8-test/model/api/demo.js +43 -43
  89. package/demo/8-test/model/api/dir/two.js +26 -26
  90. package/demo/8-test/model/api/mock.js +157 -157
  91. package/demo/8-test/model/api/one.js +150 -150
  92. package/demo/8-test/model/mock.js +35 -35
  93. package/demo/8-test/package.json +17 -17
  94. package/demo/8-test/router/demo.js +45 -45
  95. package/demo/8-test/router/mock.js +20 -20
  96. package/demo/8-test/router/test.js +43 -43
  97. package/demo/8-test/service/test.js +35 -35
  98. package/demo/9-mysql-chart/config/config.dev.js +15 -15
  99. package/demo/9-mysql-chart/config/config.prod.js +15 -15
  100. package/demo/9-mysql-chart/config/config.test.js +15 -15
  101. package/demo/9-mysql-chart/index.js +36 -36
  102. package/demo/9-mysql-chart/package.json +18 -18
  103. package/lib/middleware/sky-api-register.js +348 -348
  104. package/lib/middleware/sky-cors.js +8 -8
  105. package/lib/middleware/sky-output.js +83 -83
  106. package/lib/middleware/sky-static-server.js +16 -16
  107. package/outFiles.js +325 -325
  108. package/package.json +50 -67
  109. package/sky-module/create_amqplib.js +69 -69
  110. package/sky-module/create_ioredis.js +47 -47
  111. package/sky-module/create_kafka.js +24 -24
  112. package/tests/test.js +173 -173
package/tests/test.js CHANGED
@@ -1,173 +1,173 @@
1
- 'use strict'
2
- /* global describe */
3
- /* global it */
4
- const assert = require('assert')
5
- const path = require('path')
6
- const request = require('request-promise-native')
7
- const $ = require('meeko')
8
- const sky = require('../index.js')
9
- const createIoredis = require('../sky-module/create_ioredis')
10
- const projectName = `8-test`
11
- const Config = require(`../demo/${projectName}/config`)
12
-
13
- describe('覆盖率测试', async () => {
14
- let port = 8090
15
- let url = `http://localhost:${port}`
16
-
17
- it(`1.启动项目 demo`, async () => {
18
- Config.beforeMount = async () => {
19
- const redis = createIoredis(Config.redis)
20
- await redis.waitForConnected()
21
- global.redis = redis
22
-
23
- createIoredis({ host: 'localhost', port: 6379, db: 1 })
24
-
25
- const db = require('j2sql')(Config.mysql)
26
- await waitNotEmpty(db, '_mysql')
27
- global.db = db
28
- }
29
-
30
- Config.port = port
31
- Config.rootDir = path.join(__dirname, `../demo/${projectName}`)
32
-
33
- Config.beforeLoadMiddlewares = async () => { }
34
- Config.afterLoadMiddlewares = async () => { }
35
- Config.beforeListenPort = async () => {
36
- return port
37
- }
38
-
39
- sky.start(Config, async () => {
40
- console.log('项目成功启动')
41
- })
42
-
43
- await $.wait(500)
44
- let r = await request(`${url}`)
45
- let obj = JSON.parse(r)
46
- assert.strictEqual(obj.msg, '接口不存在')
47
- assert.strictEqual(obj.code, 404)
48
- })
49
-
50
- it(`2.mock模块测试`, async () => {
51
- let r = await request(`${url}/mock/noControllerNoMock`)
52
- let obj = JSON.parse(r)
53
- assert.strictEqual(obj.data, 'controller未定义 & mock未定义')
54
- assert.strictEqual(obj.msg, 'ok')
55
- assert.strictEqual(obj.code, 200)
56
-
57
- r = await request(`${url}/mock/noController`)
58
- obj = JSON.parse(r)
59
- assert.strictEqual(obj.msg, 'ok')
60
- assert.strictEqual(obj.code, 200)
61
-
62
- r = await request(`${url}/mock/haveController`)
63
- obj = JSON.parse(r)
64
- assert.strictEqual(obj.msg, 'ok')
65
- assert.strictEqual(obj.code, 200)
66
-
67
- r = await request(`${url}/mock/image`)
68
- obj = JSON.parse(r)
69
- assert.strictEqual(obj.msg, 'ok')
70
- assert.strictEqual(obj.code, 200)
71
- })
72
-
73
- it(`3.登录模块测试`, async () => {
74
- let r = await request(`${url}/demo/login`)
75
- let obj = JSON.parse(r)
76
- assert.strictEqual(obj.msg, '账号 必填')
77
- assert.strictEqual(obj.code, 400)
78
-
79
- let account = 'testAccount'
80
- let password = 'TestPassword'
81
- r = await request(`${url}/demo/login?account=${account}`)
82
- obj = JSON.parse(r)
83
- assert.strictEqual(obj.msg, '密码 必填')
84
- assert.strictEqual(obj.code, 400)
85
-
86
- r = await request(`${url}/demo/login?account=${account}&password=${password}`)
87
- obj = JSON.parse(r)
88
- assert.strictEqual(obj.msg, '成功')
89
- assert.strictEqual(obj.code, 200)
90
-
91
- await request(`${url}/demo/home`)
92
-
93
- await request({ url: `${url}/demo/home`, headers: { token: 'test' } })
94
-
95
- await request({ url: `${url}/demo/home`, headers: { token: obj.data.token } })
96
- })
97
-
98
- it(`4.数据库模块测试`, async () => {
99
- let r = await request(`${url}/one`)
100
- let obj = JSON.parse(r)
101
- assert.strictEqual(obj.msg, '成功')
102
- assert.strictEqual(obj.code, 200)
103
- assert.strictEqual(obj.data.db.length, 1)
104
-
105
- r = await request({ url: `${url}/dir/two`, method: 'post' })
106
- obj = JSON.parse(r)
107
- assert.strictEqual(obj.msg, '你的名字 必填')
108
- assert.strictEqual(obj.code, 400)
109
-
110
- r = await request({ url: `${url}/dir/two`, method: 'post', formData: { name: 'test two' } })
111
- obj = JSON.parse(r)
112
- assert.strictEqual(obj.msg, '成功')
113
- assert.strictEqual(obj.data.redis, 'OK')
114
- assert.strictEqual(obj.code, 200)
115
- })
116
-
117
- it(`5.错误例子和特殊情况`, async () => {
118
- let r = await request(`${url}/testErrCode`)
119
- let obj = JSON.parse(r)
120
- assert.strictEqual(obj.code, 500)
121
-
122
- r = await request(`${url}/testErrCodeArr`)
123
- obj = JSON.parse(r)
124
- assert.strictEqual(obj.code, 200)
125
-
126
- r = await request(`${url}/testErrCodeObj`)
127
- obj = JSON.parse(r)
128
- assert.strictEqual(obj.code, 500)
129
-
130
- r = await request(`${url}/testErrCodeErr`)
131
- obj = JSON.parse(r)
132
- assert.strictEqual(obj.code, 500)
133
-
134
- r = await request(`${url}/testErr`)
135
- obj = JSON.parse(r)
136
- assert.strictEqual(obj.code, 500)
137
-
138
- let largeName = 'test'
139
- for (let i = 0; i < 23; i++) { largeName += largeName }
140
- await request({ url: `${url}/dir/two`, method: 'post', formData: { name: largeName } })
141
-
142
- await request({ url: `${url}/dir/two`, method: 'put', formData: { name: 'test' } })
143
-
144
- global.coreConfig = { apiChange: { 'swagger-ui.html': '/one' } }
145
- await request({ url: `${url}/swagger-ui.html`, method: 'get', formData: { name: 'test' } })
146
-
147
- await request({ url: `${url}/dir/two`, method: 'get', formData: { name: 'largeName' } })
148
-
149
- global.$G.cache['get/one'] = 'test'
150
- await request({ url: `${url}/one` })
151
- delete global.$G.cache['get/one']
152
-
153
- global.redis.reconnectOnError({ code: 400, message: 'test' })
154
- })
155
-
156
- it(`6.启动空项目`, async () => {
157
- sky.start(null, async () => {
158
- console.log('项目成功启动')
159
- })
160
- })
161
-
162
- await $.wait(10000)
163
- process.exit(0) // 测试结束退出
164
- })
165
-
166
- async function waitNotEmpty (o, prop, fn) {
167
- fn = fn || function () {}
168
- if (!o[prop]) {
169
- fn(o, prop)
170
- await $.wait(100)
171
- await waitNotEmpty(o, prop, fn)
172
- }
173
- }
1
+ 'use strict'
2
+ /* global describe */
3
+ /* global it */
4
+ const assert = require('assert')
5
+ const path = require('path')
6
+ const request = require('request-promise-native')
7
+ const $ = require('meeko')
8
+ const sky = require('../index.js')
9
+ const createIoredis = require('../sky-module/create_ioredis')
10
+ const projectName = `8-test`
11
+ const Config = require(`../demo/${projectName}/config`)
12
+
13
+ describe('覆盖率测试', async () => {
14
+ let port = 8090
15
+ let url = `http://localhost:${port}`
16
+
17
+ it(`1.启动项目 demo`, async () => {
18
+ Config.beforeMount = async () => {
19
+ const redis = createIoredis(Config.redis)
20
+ await redis.waitForConnected()
21
+ global.redis = redis
22
+
23
+ createIoredis({ host: 'localhost', port: 6379, db: 1 })
24
+
25
+ const db = require('j2sql')(Config.mysql)
26
+ await waitNotEmpty(db, '_mysql')
27
+ global.db = db
28
+ }
29
+
30
+ Config.port = port
31
+ Config.rootDir = path.join(__dirname, `../demo/${projectName}`)
32
+
33
+ Config.beforeLoadMiddlewares = async () => { }
34
+ Config.afterLoadMiddlewares = async () => { }
35
+ Config.beforeListenPort = async () => {
36
+ return port
37
+ }
38
+
39
+ sky.start(Config, async () => {
40
+ console.log('项目成功启动')
41
+ })
42
+
43
+ await $.wait(500)
44
+ let r = await request(`${url}`)
45
+ let obj = JSON.parse(r)
46
+ assert.strictEqual(obj.msg, '接口不存在')
47
+ assert.strictEqual(obj.code, 404)
48
+ })
49
+
50
+ it(`2.mock模块测试`, async () => {
51
+ let r = await request(`${url}/mock/noControllerNoMock`)
52
+ let obj = JSON.parse(r)
53
+ assert.strictEqual(obj.data, 'controller未定义 & mock未定义')
54
+ assert.strictEqual(obj.msg, 'ok')
55
+ assert.strictEqual(obj.code, 200)
56
+
57
+ r = await request(`${url}/mock/noController`)
58
+ obj = JSON.parse(r)
59
+ assert.strictEqual(obj.msg, 'ok')
60
+ assert.strictEqual(obj.code, 200)
61
+
62
+ r = await request(`${url}/mock/haveController`)
63
+ obj = JSON.parse(r)
64
+ assert.strictEqual(obj.msg, 'ok')
65
+ assert.strictEqual(obj.code, 200)
66
+
67
+ r = await request(`${url}/mock/image`)
68
+ obj = JSON.parse(r)
69
+ assert.strictEqual(obj.msg, 'ok')
70
+ assert.strictEqual(obj.code, 200)
71
+ })
72
+
73
+ it(`3.登录模块测试`, async () => {
74
+ let r = await request(`${url}/demo/login`)
75
+ let obj = JSON.parse(r)
76
+ assert.strictEqual(obj.msg, '账号 必填')
77
+ assert.strictEqual(obj.code, 400)
78
+
79
+ let account = 'testAccount'
80
+ let password = 'TestPassword'
81
+ r = await request(`${url}/demo/login?account=${account}`)
82
+ obj = JSON.parse(r)
83
+ assert.strictEqual(obj.msg, '密码 必填')
84
+ assert.strictEqual(obj.code, 400)
85
+
86
+ r = await request(`${url}/demo/login?account=${account}&password=${password}`)
87
+ obj = JSON.parse(r)
88
+ assert.strictEqual(obj.msg, '成功')
89
+ assert.strictEqual(obj.code, 200)
90
+
91
+ await request(`${url}/demo/home`)
92
+
93
+ await request({ url: `${url}/demo/home`, headers: { token: 'test' } })
94
+
95
+ await request({ url: `${url}/demo/home`, headers: { token: obj.data.token } })
96
+ })
97
+
98
+ it(`4.数据库模块测试`, async () => {
99
+ let r = await request(`${url}/one`)
100
+ let obj = JSON.parse(r)
101
+ assert.strictEqual(obj.msg, '成功')
102
+ assert.strictEqual(obj.code, 200)
103
+ assert.strictEqual(obj.data.db.length, 1)
104
+
105
+ r = await request({ url: `${url}/dir/two`, method: 'post' })
106
+ obj = JSON.parse(r)
107
+ assert.strictEqual(obj.msg, '你的名字 必填')
108
+ assert.strictEqual(obj.code, 400)
109
+
110
+ r = await request({ url: `${url}/dir/two`, method: 'post', formData: { name: 'test two' } })
111
+ obj = JSON.parse(r)
112
+ assert.strictEqual(obj.msg, '成功')
113
+ assert.strictEqual(obj.data.redis, 'OK')
114
+ assert.strictEqual(obj.code, 200)
115
+ })
116
+
117
+ it(`5.错误例子和特殊情况`, async () => {
118
+ let r = await request(`${url}/testErrCode`)
119
+ let obj = JSON.parse(r)
120
+ assert.strictEqual(obj.code, 500)
121
+
122
+ r = await request(`${url}/testErrCodeArr`)
123
+ obj = JSON.parse(r)
124
+ assert.strictEqual(obj.code, 200)
125
+
126
+ r = await request(`${url}/testErrCodeObj`)
127
+ obj = JSON.parse(r)
128
+ assert.strictEqual(obj.code, 500)
129
+
130
+ r = await request(`${url}/testErrCodeErr`)
131
+ obj = JSON.parse(r)
132
+ assert.strictEqual(obj.code, 500)
133
+
134
+ r = await request(`${url}/testErr`)
135
+ obj = JSON.parse(r)
136
+ assert.strictEqual(obj.code, 500)
137
+
138
+ let largeName = 'test'
139
+ for (let i = 0; i < 23; i++) { largeName += largeName }
140
+ await request({ url: `${url}/dir/two`, method: 'post', formData: { name: largeName } })
141
+
142
+ await request({ url: `${url}/dir/two`, method: 'put', formData: { name: 'test' } })
143
+
144
+ global.coreConfig = { apiChange: { 'swagger-ui.html': '/one' } }
145
+ await request({ url: `${url}/swagger-ui.html`, method: 'get', formData: { name: 'test' } })
146
+
147
+ await request({ url: `${url}/dir/two`, method: 'get', formData: { name: 'largeName' } })
148
+
149
+ global.$G.cache['get/one'] = 'test'
150
+ await request({ url: `${url}/one` })
151
+ delete global.$G.cache['get/one']
152
+
153
+ global.redis.reconnectOnError({ code: 400, message: 'test' })
154
+ })
155
+
156
+ it(`6.启动空项目`, async () => {
157
+ sky.start(null, async () => {
158
+ console.log('项目成功启动')
159
+ })
160
+ })
161
+
162
+ await $.wait(10000)
163
+ process.exit(0) // 测试结束退出
164
+ })
165
+
166
+ async function waitNotEmpty (o, prop, fn) {
167
+ fn = fn || function () {}
168
+ if (!o[prop]) {
169
+ fn(o, prop)
170
+ await $.wait(100)
171
+ await waitNotEmpty(o, prop, fn)
172
+ }
173
+ }