Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
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
Romain Courteaud
erp5
Commits
47995d06
Commit
47995d06
authored
Jul 28, 2020
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[test/upgradeOldDataFS] use UI callables
Ensure the admin will able to trigger the upgrader
parent
4abcabb6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
99 additions
and
2 deletions
+99
-2
product/ERP5Type/tests/testUpgradeInstanceWithOldDataFs.py
product/ERP5Type/tests/testUpgradeInstanceWithOldDataFs.py
+99
-2
No files found.
product/ERP5Type/tests/testUpgradeInstanceWithOldDataFs.py
View file @
47995d06
...
...
@@ -26,8 +26,75 @@
#
##############################################################################
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
from
ZPublisher.HTTPRequest
import
HTTPRequest
from
ZPublisher.HTTPResponse
import
HTTPResponse
import
StringIO
import
urllib
from
zope.globalrequest
import
setRequest
# pylint: disable=no-name-in-module, import-error
from
Acquisition
import
aq_base
# XXX Copy/pasted from erp5_hal_json_style tests
def
do_fake_request
(
request_method
,
headers
=
None
,
data
=
()):
__version__
=
"0.1"
if
(
headers
is
None
):
headers
=
{}
env
=
{}
env
[
'SERVER_NAME'
]
=
'bobo.server'
env
[
'SERVER_PORT'
]
=
'80'
env
[
'REQUEST_METHOD'
]
=
request_method
env
[
'REMOTE_ADDR'
]
=
'204.183.226.81 '
env
[
'REMOTE_HOST'
]
=
'bobo.remote.host'
env
[
'HTTP_USER_AGENT'
]
=
'Bobo/%s'
%
__version__
env
[
'HTTP_HOST'
]
=
'127.0.0.1'
env
[
'SERVER_SOFTWARE'
]
=
'Bobo/%s'
%
__version__
env
[
'SERVER_PROTOCOL'
]
=
'HTTP/1.0 '
env
[
'HTTP_ACCEPT'
]
=
'image/gif, image/x-xbitmap, image/jpeg, */* '
env
[
'SERVER_HOSTNAME'
]
=
'bobo.server.host'
env
[
'GATEWAY_INTERFACE'
]
=
'CGI/1.1 '
env
[
'SCRIPT_NAME'
]
=
'Main'
env
.
update
(
headers
)
body_stream
=
StringIO
.
StringIO
()
# for some mysterious reason QUERY_STRING does not get parsed into data fields
if
data
and
request_method
.
upper
()
==
'GET'
:
# see: GET http://www.cgi101.com/book/ch3/text.html
env
[
'QUERY_STRING'
]
=
'&'
.
join
(
'{}={}'
.
format
(
urllib
.
quote_plus
(
key
),
urllib
.
quote
(
value
))
for
key
,
value
in
data
)
if
data
and
request_method
.
upper
()
==
'POST'
:
# see: POST request body https://tools.ietf.org/html/rfc1866#section-8.2.1
env
[
'CONTENT_TYPE'
]
=
'application/x-www-form-urlencoded'
for
key
,
value
in
data
:
body_stream
.
write
(
'{}={!s}&'
.
format
(
urllib
.
quote_plus
(
key
),
urllib
.
quote
(
value
)))
request
=
HTTPRequest
(
body_stream
,
env
,
HTTPResponse
())
if
data
and
request_method
.
upper
()
==
'POST'
:
for
key
,
value
in
data
:
request
.
form
[
key
]
=
value
return
request
def
replace_request
(
new_request
,
context
):
base_chain
=
[
aq_base
(
x
)
for
x
in
context
.
aq_chain
]
# Grab existig request (last chain item) and create a copy.
request_container
=
base_chain
.
pop
()
# request = request_container.REQUEST
setRequest
(
new_request
)
new_request_container
=
request_container
.
__class__
(
REQUEST
=
new_request
)
# Recreate acquisition chain.
my_self
=
new_request_container
base_chain
.
reverse
()
for
item
in
base_chain
:
my_self
=
item
.
__of__
(
my_self
)
return
my_self
class
TestUpgradeInstanceWithOldDataFs
(
ERP5TypeTestCase
):
def
getBusinessTemplateList
(
self
):
return
(
'erp5_core_proxy_field_legacy'
,
'erp5_full_text_mroonga_catalog'
,
...
...
@@ -72,9 +139,39 @@ class TestUpgradeInstanceWithOldDataFs(ERP5TypeTestCase):
self
.
tic
()
alarm
=
self
.
portal
.
portal_alarms
.
promise_check_upgrade
alarm
.
solve
()
# Ensure it is viewable
alarm
.
view
()
# Call active sense
alarm
.
activeSense
()
self
.
tic
()
# XXX No idea why active sense must be called twice...
alarm
.
activeSense
()
self
.
tic
()
self
.
assertNotEquals
([
x
.
detail
for
x
in
alarm
.
getLastActiveProcess
().
getResultList
()],
[])
# Solve divergencies, like called from the form_dialog
fake_request
=
do_fake_request
(
"POST"
,
data
=
(
(
'dialog_method'
,
'Alarm_solve'
),
(
'dialog_id'
,
'Alarm_viewSolveDialog'
),
(
'form_id'
,
'Alarm_view'
),
(
'selection_name'
,
'foo_selection'
)
))
fake_portal
=
replace_request
(
fake_request
,
self
.
portal
)
result
=
fake_portal
.
portal_alarms
.
promise_check_upgrade
.
Base_callDialogMethod
(
dialog_method
=
'Alarm_solve'
,
dialog_id
=
'Alarm_viewSolveDialog'
,
form_id
=
'Alarm_view'
,
)
self
.
assertEqual
(
fake_request
.
RESPONSE
.
status
,
302
)
alarm
.
Alarm_solve
()
# alarm.solve()
self
.
tic
()
self
.
assertEquals
(
alarm
.
getLastActiveProcess
().
getResultList
(),
[])
self
.
assertEquals
([
x
.
detail
for
x
in
alarm
.
getLastActiveProcess
().
getResultList
()],
[])
# Make sure that *all* Portal Type can be loaded after upgrade
import
erp5.portal_type
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment