Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.www.
wechaty
提交
04970105
W
wechaty
项目概览
.www.
/
wechaty
与 Fork 源项目一致
Fork自
wechaty / wechaty
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
04970105
编写于
5月 14, 2016
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use co/yield to sync test
上级
841e433c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
76 addition
and
83 deletion
+76
-83
package.json
package.json
+1
-0
tests/puppet-web-server-tests.js
tests/puppet-web-server-tests.js
+75
-83
未找到文件。
package.json
100644 → 100755
浏览文件 @
04970105
...
...
@@ -49,6 +49,7 @@
"node"
:
">= 6.1.0"
},
"devDependencies"
:
{
"
co
"
:
"
^4.6.0
"
,
"
eslint
"
:
"
^2.9.0
"
,
"
tape
"
:
"
^4.5.1
"
}
...
...
tests/puppet-web-server-tests.js
浏览文件 @
04970105
const
https
=
require
(
'
https
'
)
const
log
=
require
(
'
npmlog
'
)
const
test
=
require
(
'
tape
'
)
const
co
=
require
(
'
co
'
)
const
Server
=
require
(
'
../src/puppet-web-server
'
)
test
(
'
Server basic tests
'
,
function
(
t
)
{
...
...
@@ -37,96 +38,87 @@ test('Server smoke testing', function(t) {
const
PORT
=
58788
const
server
=
new
Server
({
port
:
PORT
})
server
.
init
()
.
then
(()
=>
{
co
(
function
*
()
{
yield
server
.
init
()
t
.
ok
(
true
,
'
server:
'
+
PORT
+
'
inited
'
)
Promise
.
all
([
dingHttps
()
// retHttps
,
dingSocket
()
// retSocket
,
dingBrowser
()
// retBrowser
,
dingProxy
()
// retProxy
,
getLoginStatusCode
()
// retStatus
]).
then
(([
retHttps
,
retSocket
,
retBrowser
,
retProxy
,
retStatus
])
=>
{
t
.
equal
(
retHttps
,
'
dong
'
,
'
ding https got dong
'
)
t
.
equal
(
retSocket
,
'
dong
'
,
'
ding socket got dong
'
)
t
.
equal
(
retBrowser
,
'
dong
'
,
'
ding browser got dong
'
)
t
.
equal
(
retProxy
,
'
dong
'
,
'
ding proxy got dong
'
)
// XXX sometimes object? 201605
t
.
equal
(
typeof
retStatus
,
'
number
'
,
'
status is number
'
)
t
.
end
()
+
server
.
quit
()
}).
catch
(
e
=>
{
t
.
fail
(
'
ding promise rejected:
'
+
e
)
t
.
end
()
+
server
.
quit
()
})
function
dingHttps
()
{
const
options
=
require
(
'
url
'
).
parse
(
`https://localhost:
${
PORT
}
/ding`
)
options
.
rejectUnauthorized
=
false
// permit self-signed CA
return
new
Promise
((
resolve
,
reject
)
=>
{
https
.
get
(
options
,
res
=>
{
res
.
on
(
'
data
'
,
chunk
=>
{
log
.
verbose
(
'
TestingServer
'
,
'
https on data got:
'
+
chunk
.
toString
())
resolve
(
chunk
.
toString
())
})
}).
on
(
'
error
'
,
e
=>
reject
(
'
https get error:
'
+
e
))
})
}
function
dingSocket
()
{
const
maxTime
=
3000
const
waitTime
=
500
let
totalTime
=
0
return
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
testDing
,
waitTime
)
function
testDing
()
{
log
.
silly
(
'
TestingServer
'
,
server
.
socketio
)
if
(
!
server
.
socketClient
)
{
totalTime
+=
waitTime
if
(
totalTime
>
maxTime
)
{
return
reject
(
'
timeout after
'
+
totalTime
+
'
ms
'
)
}
log
.
verbose
(
'
TestingServer
'
,
'
waiting socketClient to connect for
'
+
totalTime
+
'
/
'
+
maxTime
+
'
ms...
'
)
setTimeout
(
testDing
,
waitTime
)
return
}
log
.
silly
(
'
TestingServer
'
,
server
.
socketClient
)
server
.
socketClient
.
on
(
'
dong
'
,
data
=>
{
log
.
verbose
(
'
TestingServer
'
,
'
socket on dong got:
'
+
data
)
resolve
(
data
)
})
server
.
socketClient
.
emit
(
'
ding
'
)
server
.
socketClient
.
emit
(
'
ding
'
)
server
.
socketClient
.
emit
(
'
ding
'
)
}
})
}
const
retHttps
=
yield
dingHttps
()
t
.
equal
(
retHttps
,
'
dong
'
,
'
ding https got dong
'
)
function
dingBrowser
()
{
return
server
.
browserExecute
(
'
return Wechaty.ding()
'
)
}
const
retSocket
=
yield
dingSocket
()
t
.
equal
(
retSocket
,
'
dong
'
,
'
ding socket got dong
'
)
function
dingProxy
()
{
return
server
.
proxyWechaty
(
'
ding
'
)
}
const
retBrowser
=
yield
dingBrowser
()
t
.
equal
(
retBrowser
,
'
dong
'
,
'
ding browser got dong
'
)
function
getLoginStatusCode
()
{
return
server
.
proxyWechaty
(
'
getLoginStatusCode
'
)
}
const
retProxy
=
yield
dingProxy
()
t
.
equal
(
retProxy
,
'
dong
'
,
'
ding proxy got dong
'
)
}).
catch
((
e
)
=>
{
const
retStatus
=
yield
getLoginStatusCode
()
// XXX sometimes object? 201605
t
.
equal
(
typeof
retStatus
,
'
number
'
,
'
status is number
'
)
}).
catch
(
e
=>
{
t
.
fail
(
'
server init promise rejected:
'
+
e
)
})
server
.
quit
()
return
t
.
end
()
function
dingHttps
()
{
const
options
=
require
(
'
url
'
).
parse
(
`https://localhost:
${
PORT
}
/ding`
)
options
.
rejectUnauthorized
=
false
// permit self-signed CA
return
new
Promise
((
resolve
,
reject
)
=>
{
https
.
get
(
options
,
res
=>
{
res
.
on
(
'
data
'
,
chunk
=>
{
log
.
verbose
(
'
TestingServer
'
,
'
https on data got:
'
+
chunk
.
toString
())
resolve
(
chunk
.
toString
())
})
}).
on
(
'
error
'
,
e
=>
reject
(
'
https get error:
'
+
e
))
})
}
function
dingSocket
()
{
const
maxTime
=
3000
const
waitTime
=
500
let
totalTime
=
0
return
new
Promise
((
resolve
,
reject
)
=>
{
setTimeout
(
testDing
,
waitTime
)
function
testDing
()
{
log
.
silly
(
'
TestingServer
'
,
server
.
socketio
)
if
(
!
server
.
socketClient
)
{
totalTime
+=
waitTime
if
(
totalTime
>
maxTime
)
{
return
reject
(
'
timeout after
'
+
totalTime
+
'
ms
'
)
}
log
.
verbose
(
'
TestingServer
'
,
'
waiting socketClient to connect for
'
+
totalTime
+
'
/
'
+
maxTime
+
'
ms...
'
)
setTimeout
(
testDing
,
waitTime
)
return
}
log
.
silly
(
'
TestingServer
'
,
server
.
socketClient
)
server
.
socketClient
.
on
(
'
dong
'
,
data
=>
{
log
.
verbose
(
'
TestingServer
'
,
'
socket on dong got:
'
+
data
)
resolve
(
data
)
})
server
.
socketClient
.
emit
(
'
ding
'
)
server
.
socketClient
.
emit
(
'
ding
'
)
server
.
socketClient
.
emit
(
'
ding
'
)
}
})
}
function
dingBrowser
()
{
return
server
.
browserExecute
(
'
return Wechaty.ding()
'
)
}
function
dingProxy
()
{
return
server
.
proxyWechaty
(
'
ding
'
)
}
function
getLoginStatusCode
()
{
return
server
.
proxyWechaty
(
'
getLoginStatusCode
'
)
}
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录