Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
officejs-appstore
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
officejs-appstore
Commits
3388ac0c
Commit
3388ac0c
authored
Sep 14, 2018
by
Vincent Bechu
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[officejs_test] Add tests on new appstore interfaces
parent
aef537b1
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1485 additions
and
2 deletions
+1485
-2
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite.xml
...hTemplateItem/portal_tests/officejs_appstore_ui_zuite.xml
+26
-0
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterAndLogin.xml
...ppstore_ui_zuite/testOfficeJSAppstoreRegisterAndLogin.xml
+58
-0
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterAndLogin.zpt
...ppstore_ui_zuite/testOfficeJSAppstoreRegisterAndLogin.zpt
+137
-0
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterFail.xml
...js_appstore_ui_zuite/testOfficeJSAppstoreRegisterFail.xml
+58
-0
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterFail.zpt
...js_appstore_ui_zuite/testOfficeJSAppstoreRegisterFail.zpt
+153
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test.xml
...cejs_test/SkinTemplateItem/portal_skins/officejs_test.xml
+26
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_createTestUserList.py
...portal_skins/officejs_test/ERP5Site_createTestUserList.py
+7
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_createTestUserList.xml
...ortal_skins/officejs_test/ERP5Site_createTestUserList.xml
+62
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_removeTestUserList.py
...portal_skins/officejs_test/ERP5Site_removeTestUserList.py
+13
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_removeTestUserList.xml
...ortal_skins/officejs_test/ERP5Site_removeTestUserList.xml
+62
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/Zuite_CommonTemplateForOfficejsAppstoreUi.xml
...ficejs_test/Zuite_CommonTemplateForOfficejsAppstoreUi.xml
+58
-0
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/Zuite_CommonTemplateForOfficejsAppstoreUi.zpt
...ficejs_test/Zuite_CommonTemplateForOfficejsAppstoreUi.zpt
+168
-0
bt5/officejs_test/TestTemplateItem/portal_components/test.erp5.testFunctionalOfficeJSAppstoreUI.py
..._components/test.erp5.testFunctionalOfficeJSAppstoreUI.py
+56
-0
bt5/officejs_test/TestTemplateItem/portal_components/test.erp5.testFunctionalOfficeJSAppstoreUI.xml
...components/test.erp5.testFunctionalOfficeJSAppstoreUI.xml
+123
-0
bt5/officejs_test/TestTemplateItem/portal_components/test.erp5.testOfficeJSScenarioRjsUI.py
.../portal_components/test.erp5.testOfficeJSScenarioRjsUI.py
+340
-0
bt5/officejs_test/TestTemplateItem/portal_components/test.erp5.testOfficeJSScenarioRjsUI.xml
...portal_components/test.erp5.testOfficeJSScenarioRjsUI.xml
+128
-0
bt5/officejs_test/bt/dependency_list
bt5/officejs_test/bt/dependency_list
+3
-1
bt5/officejs_test/bt/template_path_list
bt5/officejs_test/bt/template_path_list
+2
-0
bt5/officejs_test/bt/template_skin_id_list
bt5/officejs_test/bt/template_skin_id_list
+1
-0
bt5/officejs_test/bt/template_test_id_list
bt5/officejs_test/bt/template_test_id_list
+3
-1
test/__init__.py
test/__init__.py
+1
-0
No files found.
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Zuite"
module=
"Products.Zelenium.zuite"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
officejs_appstore_ui_zuite
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterAndLogin.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOfficeJSAppstoreRegisterAndLogin
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterAndLogin.zpt
0 → 100644
View file @
3388ac0c
<html
xmlns:tal=
"http://xml.zope.org/namespaces/tal"
xmlns:metal=
"http://xml.zope.org/namespaces/metal"
>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
Test OfficeJS Appstore UI
</title>
</head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"3"
>
Test RenderJS UI
</td></tr>
</thead><tbody>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForOfficejsAppstoreUi/macros/appstore_init"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/ERP5Site_removeTestUserList
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/wait_for_activities"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_runner/WebSite_logout
</td>
<td></td>
</tr>
<!-- Initialize -->
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_runner/
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//a[text()=' Create New Account ']
</td>
<td></td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//a[text()=' Create New Account ']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@name='password']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@name='reference']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Register']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='reference']
</td>
<td>
demo@nexedi.com
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='password']
</td>
<td>
testSlapOSJSSubscribeUser
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='password_confirmation']
</td>
<td>
testSlapOSJSSubscribeUser
</td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//input[@value='Register']
</td>
<td></td>
</tr>
<tr>
<td>
assertTextNotPresent
</td>
<td>
Selected login is already in use, please choose different one.
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Credential Request Created.
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/wait_for_activities"
/>
<!-- Initialize -->
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_runner/
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
__ac_name
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
__ac_name
</td>
<td>
demo@nexedi.com
</td>
</tr>
<tr>
<td>
type
</td>
<td>
__ac_password
</td>
<td>
testSlapOSJSSubscribeUser
</td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value="Login"]
</td>
<td></td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//input[@value="Login"]
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForOfficejsAppstoreUi/macros/logout"
/>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterFail.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOfficeJSAppstoreRegisterFail
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_test/PathTemplateItem/portal_tests/officejs_appstore_ui_zuite/testOfficeJSAppstoreRegisterFail.zpt
0 → 100644
View file @
3388ac0c
<html
xmlns:tal=
"http://xml.zope.org/namespaces/tal"
xmlns:metal=
"http://xml.zope.org/namespaces/metal"
>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
Test OfficeJS Appstore UI
</title>
</head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"3"
>
Test RenderJS UI
</td></tr>
</thead><tbody>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/init"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_runner/WebSite_logout
</td>
<td></td>
</tr>
<!-- Account already exist -->
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_runner/
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//a[text()=' Create New Account ']
</td>
<td></td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//a[text()=' Create New Account ']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@name='password']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@name='reference']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Register']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='reference']
</td>
<td>
demo@nexedi.com
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='password']
</td>
<td>
testSlapOSJSSubscribeUser
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='password_confirmation']
</td>
<td>
testSlapOSJSSubscribeUser
</td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//input[@value='Register']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@data-gadget-scope='notification' and @class='visible']//button[@class='error']
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Selected email is already in use, please choose different one.
</td>
<td></td>
</tr>
<!-- Password and confirmation not same -->
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_runner/
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Login']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//a[text()=' Create New Account ']
</td>
<td></td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//a[text()=' Create New Account ']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@name='password']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@name='reference']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@value='Register']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='reference']
</td>
<td>
demo@nexedi.com
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='password']
</td>
<td>
testSlapOSJSSubscribeUser
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@name='password_confirmation']
</td>
<td>
2713
</td>
</tr>
<tr>
<td>
clickAndWait
</td>
<td>
//input[@value='Register']
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@data-gadget-scope='notification' and @class='visible']//button[@class='error']
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Password and Confirmation Password must be same
</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Folder"
module=
"OFS.Folder"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
officejs_test
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_createTestUserList.py
0 → 100644
View file @
3388ac0c
context
.
WebSection_newCredentialRequest
(
reference
=
"demo@nexedi.com"
,
password
=
"demo_functional_user"
,
password_confirmation
=
'demo_functional_user'
,
batch_mode
=
1
)
return
"Done."
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_createTestUserList.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5Site_createTestUserList
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_removeTestUserList.py
0 → 100644
View file @
3388ac0c
portal
=
context
.
getPortalObject
()
for
cr
in
portal
.
portal_catalog
(
reference
=
[
"demo@nexedi.com"
,
"admin@nexedi.com"
],
portal_type
=
"Credential Request"
):
related_person
=
cr
.
getDestinationDecisionValue
()
if
related_person
is
not
None
:
portal
.
person_module
.
manage_delObjects
(
ids
=
[
related_person
.
getId
()])
event_list
=
cr
.
getFollowUpRelatedValueList
()
if
len
(
event_list
):
portal
.
event_module
.
manage_delObjects
(
ids
=
[
e
.
getId
()
for
e
in
event_list
])
portal
.
credential_request_module
.
manage_delObjects
(
ids
=
[
cr
.
getId
()])
return
"Done."
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/ERP5Site_removeTestUserList.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5Site_removeTestUserList
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_test/SkinTemplateItem/portal_skins/officejs_test/Zuite_CommonTemplateForOfficejsAppstoreUi.xml
0 → 100644
View file @
3388ac0c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>