Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_46011646
wechaty
提交
919e8515
W
wechaty
项目概览
weixin_46011646
/
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,发现更多精彩内容 >>
提交
919e8515
编写于
6月 09, 2016
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix session promise chaining bug, unit test passed
上级
b7c581e8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
63 deletion
+29
-63
src/puppet-web.js
src/puppet-web.js
+7
-22
test/puppet-web-spec.js
test/puppet-web-spec.js
+22
-41
未找到文件。
src/puppet-web.js
浏览文件 @
919e8515
...
...
@@ -320,40 +320,25 @@ class PuppetWeb extends Puppet {
loadSession
()
{
log
.
verbose
(
'
PuppetWeb
'
,
`loadSession(
${
this
.
session
}
)`
)
if
(
!
this
.
session
)
{
return
Promise
.
re
solve
(
'
loadSession() no session
'
)
}
if
(
!
this
.
session
)
{
return
Promise
.
re
ject
(
'
loadSession() no session
'
)
}
const
filename
=
this
.
session
return
new
Promise
((
resolve
,
reject
)
=>
{
fs
.
readFile
(
filename
,
(
err
,
jsonStr
)
=>
{
if
(
err
)
{
if
(
err
)
{
log
.
verbose
(
'
PuppetWeb
'
,
'
loadSession(%s) skipped because: %s
'
,
this
.
session
,
err
)
}
return
re
solve
(
err
.
toString
())
// resolve promise even there no session
return
re
ject
(
err
.
toString
())
}
const
cookies
=
JSON
.
parse
(
jsonStr
)
log
.
verbose
(
'
PuppetWeb
'
,
'
loading %d cookies for session
'
,
cookies
.
length
)
const
p
=
Promise
.
resolve
()
log
.
verbose
(
'
PuppetWeb
'
,
'
cookies loaded from session:
'
)
cookies
.
forEach
(
cookie
=>
{
log
.
verbose
(
'
PuppetWeb
'
,
'
set cookie to browser: %s
'
,
cookie
.
name
)
p
.
then
(()
=>
{
return
this
.
browser
.
addCookies
(
cookie
)
})
})
log
.
verbose
(
'
PuppetWeb
'
,
'
set cookies to browser end
'
)
return
p
.
then
(()
=>
{
log
.
verbose
(
'
PuppetWeb
'
,
'
addCookies() all resolved
'
)
resolve
(
cookies
)
})
const
ps
=
this
.
browser
.
addCookies
(
cookies
)
return
Promise
.
all
(
ps
)
.
then
(()
=>
resolve
(
cookies
))
.
catch
(
e
=>
{
log
.
error
(
'
PuppetWeb
'
,
'
addCookies()
rejected: %s
'
,
e
)
log
.
error
(
'
PuppetWeb
'
,
'
loadSession2
rejected: %s
'
,
e
)
reject
(
e
)
)
// return Promise.all()
// .then(() => resolve(cookies))
// .catch(e => reject(e))
})
})
})
}
...
...
test/puppet-web-spec.js
浏览文件 @
919e8515
...
...
@@ -6,7 +6,7 @@ const log = require('../src/npmlog-env')
const
PORT
=
process
.
env
.
WECHATY_PORT
||
58788
const
HEAD
=
process
.
env
.
WECHATY_HEAD
||
false
const
SESSION
=
process
.
env
.
WECHATY_SESSION
||
'
unit-test-session.wechaty.
'
+
process
.
pid
const
SESSION
=
'
unit-test-session.json
'
const
PuppetWeb
=
require
(
'
../src/puppet-web
'
)
...
...
@@ -15,24 +15,24 @@ function dingSocket(server) {
const
waitTime
=
500
let
totalTime
=
0
return
new
Promise
((
resolve
,
reject
)
=>
{
log
.
verbose
(
'
Test
ing
PuppetWeb
'
,
'
dingSocket()
'
)
log
.
verbose
(
'
TestPuppetWeb
'
,
'
dingSocket()
'
)
return
testDing
()
function
testDing
()
{
// log.silly('Test
ing
PuppetWeb', server.socketio)
// log.silly('TestPuppetWeb', server.socketio)
if
(
!
server
.
socketClient
)
{
totalTime
+=
waitTime
if
(
totalTime
>
maxTime
)
{
return
reject
(
'
timeout after
'
+
totalTime
+
'
ms
'
)
}
log
.
silly
(
'
Test
ing
PuppetWeb
'
,
'
waiting socketClient to connect for
'
+
totalTime
+
'
/
'
+
maxTime
+
'
ms...
'
)
log
.
silly
(
'
TestPuppetWeb
'
,
'
waiting socketClient to connect for
'
+
totalTime
+
'
/
'
+
maxTime
+
'
ms...
'
)
setTimeout
(
testDing
,
waitTime
)
return
}
//log.silly('Test
ing
PuppetWebServer', server.socketClient)
//log.silly('TestPuppetWebServer', server.socketClient)
server
.
socketClient
.
once
(
'
dong
'
,
data
=>
{
log
.
verbose
(
'
Test
ing
PuppetWeb
'
,
'
socket recv event dong:
'
+
data
)
log
.
verbose
(
'
TestPuppetWeb
'
,
'
socket recv event dong:
'
+
data
)
return
resolve
(
data
)
})
server
.
socketClient
.
emit
(
'
ding
'
)
...
...
@@ -74,7 +74,7 @@ false && test('PuppetWeb smoke testing', function(t) {
})
.
catch
(
e
=>
t
.
fail
(
e
))
// Reject
.
then
(
r
=>
{
// Finally 1
log
.
warn
(
'
Test
ing
PuppetWeb
'
,
'
finally()
'
)
log
.
warn
(
'
TestPuppetWeb
'
,
'
finally()
'
)
return
pw
.
quit
()
})
.
then
(
r
=>
{
t
.
end
()
})
// Finally 2
...
...
@@ -97,7 +97,7 @@ false && test('Puppet Web server/browser communication', function(t) {
t
.
equal
(
retSocket
,
'
dong
'
,
'
dingSocket got dong
'
)
})
.
catch
(
e
=>
{
log
.
warn
(
'
Test
ing
PuppetWeb
'
,
'
error: %s
'
,
e
)
log
.
warn
(
'
TestPuppetWeb
'
,
'
error: %s
'
,
e
)
t
.
fail
(
e
)
})
// Reject
.
then
(
r
=>
{
// Finally
...
...
@@ -123,7 +123,7 @@ false && test('Puppet Web WTF server/browser communication', function(t) {
return
true
})
.
catch
(
e
=>
{
// Reject
log
.
warn
(
'
Test
ing
PuppetWeb
'
,
'
error: %s
'
,
e
)
log
.
warn
(
'
TestPuppetWeb
'
,
'
error: %s
'
,
e
)
t
.
fail
(
e
)
throw
e
})
...
...
@@ -141,7 +141,7 @@ false && test('Puppet Web WTF server/browser communication', function(t) {
})
// Exception
})
false
&&
test
(
'
Puppet Web browser session save & load
'
,
function
(
t
)
{
test
(
'
Puppet Web browser session save & load
'
,
function
(
t
)
{
let
pw
=
new
PuppetWeb
({
port
:
PORT
,
head
:
HEAD
,
session
:
SESSION
})
t
.
ok
(
pw
,
'
new PuppetWeb
'
)
...
...
@@ -157,17 +157,6 @@ false && test('Puppet Web browser session save & load', function(t) {
,
secure
:
false
,
expiry
:
99999999999999
}
/*
{
name: 'wechaty0'
, value: '8788-0'
, path: '/'
, domain: '.qq.com'
, secure: false
, expiry: 99999999999999
}
*/
const
EXPECTED_NAME_REGEX
=
new
RegExp
(
'
^
'
+
EXPECTED_COOKIE
.
name
+
'
$
'
)
yield
pw
.
browser
.
driver
.
manage
().
deleteAllCookies
()
...
...
@@ -193,23 +182,16 @@ false && test('Puppet Web browser session save & load', function(t) {
cookiesFromCheck
=
yield
pw
.
checkSession
()
t
.
equal
(
cookiesFromCheck
.
length
,
0
,
'
should no cookie from checkSession() after deleteAllCookies()
'
)
const
cookiesFromLoad
=
yield
pw
.
loadSession
()
const
cookiesFromLoad
=
yield
pw
.
loadSession
()
.
catch
(()
=>
{})
// fall safe
t
.
ok
(
cookiesFromLoad
.
length
,
'
should get cookies after loadSession()
'
)
const
cookieFromLoad
=
cookiesFromLoad
.
filter
(
c
=>
EXPECTED_NAME_REGEX
.
test
(
c
.
name
))
t
.
equal
(
cookieFromLoad
[
0
].
name
,
EXPECTED_COOKIE
.
name
,
'
cookie from loadSession() should has expected cookie
'
)
// setTimeout(function() {
// co(function* () {
cookiesFromCheck
=
yield
pw
.
checkSession
()
t
.
ok
(
cookiesFromCheck
.
length
,
'
should get cookies from checkSession()
'
)
t
.
ok
(
cookiesFromCheck
.
length
,
'
should get cookies from checkSession()
after loadSession()
'
)
cookieFromCheck
=
cookiesFromCheck
.
filter
(
c
=>
EXPECTED_NAME_REGEX
.
test
(
c
.
name
))
t
.
ok
(
cookieFromCheck
.
length
,
'
should has cookie after filtered
'
)
t
.
equal
(
cookieFromCheck
[
0
].
name
,
EXPECTED_COOKIE
.
name
,
'
cookie from checkSession() return should has expected cookie
'
)
t
.
end
()
process
.
exit
()
// })
// }, 100)
t
.
ok
(
cookieFromCheck
.
length
,
'
should has cookie after filtered after loadSession()
'
)
t
.
equal
(
cookieFromCheck
[
0
].
name
,
EXPECTED_COOKIE
.
name
,
'
cookie from checkSession() return should has expected cookie after loadSession
'
)
yield
pw
.
quit
()
t
.
pass
(
'
quited
'
)
...
...
@@ -218,16 +200,9 @@ false && test('Puppet Web browser session save & load', function(t) {
yield
pw
.
init
()
t
.
pass
(
'
re-new/init/open PuppetWeb
'
)
const
cookieAfterQuit
=
(
yield
pw
.
browser
.
driver
.
manage
().
getCookie
(
EXPECTED_COOKIE
.
name
)
)
t
.
equal
(
cookieAfterQuit
.
name
,
EXPECTED_COOKIE
.
name
,
'
cookie from getCookie() after browser quit
e
, should load the right cookie back
'
)
const
cookieAfterQuit
=
yield
pw
.
browser
.
driver
.
manage
().
getCookie
(
EXPECTED_COOKIE
.
name
)
t
.
equal
(
cookieAfterQuit
.
name
,
EXPECTED_COOKIE
.
name
,
'
cookie from getCookie() after browser quit, should load the right cookie back
'
)
// clean
if
(
/^unit-test-session
\.
wechaty
\.\d
+/
.
test
(
SESSION
))
{
require
(
'
fs
'
).
unlink
(
SESSION
,
err
=>
{
if
(
err
)
{
t
.
fail
(
'
unlink err:
'
+
err
)
}
else
{
t
.
pass
(
'
should unlinked wechaty session file before end
'
)
}
})
}
})
.
catch
(
e
=>
{
// Reject
log
.
warn
(
'
TestPuppetWeb
'
,
'
error: %s
'
,
e
)
...
...
@@ -236,6 +211,12 @@ false && test('Puppet Web browser session save & load', function(t) {
.
then
(
r
=>
{
// Finally
pw
.
quit
()
t
.
end
()
// clean
require
(
'
fs
'
).
unlink
(
SESSION
,
err
=>
{
if
(
err
)
{
log
.
warn
(
'
TestPuppetWeb
'
,
'
unlink session file %s fail: %s
'
,
SESSION
,
err
)
}
})
})
.
catch
(
e
=>
{
t
.
fail
(
e
)
})
// Exception
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录