mirror of https://github.com/muk-it/muk_base
MuK IT GmbH
6 years ago
5 changed files with 111 additions and 3 deletions
-
2muk_utils/__manifest__.py
-
68muk_utils/tests/common.py
-
3muk_utils/tools/__init__.py
-
6muk_utils/tools/file.py
-
35muk_utils/tools/http.py
@ -0,0 +1,68 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (C) 2017 MuK IT GmbH |
|||
# |
|||
# Odoo Proprietary License v1.0 |
|||
# |
|||
# This software and associated files (the "Software") may only be used |
|||
# (executed, modified, executed after modifications) if you have |
|||
# purchased a valid license from the authors, typically via Odoo Apps, |
|||
# or if you have received a written agreement from the authors of the |
|||
# Software (see the COPYRIGHT file). |
|||
# |
|||
# You may develop Odoo modules that use the Software as a library |
|||
# (typically by depending on it, importing it and using its resources), |
|||
# but without copying any source code or material from the Software. |
|||
# You may distribute those modules under the license of your choice, |
|||
# provided that this license is compatible with the terms of the Odoo |
|||
# Proprietary License (For example: LGPL, MIT, or proprietary licenses |
|||
# similar to this one). |
|||
# |
|||
# It is forbidden to publish, distribute, sublicense, or sell copies of |
|||
# the Software or modified copies of the Software. |
|||
# |
|||
# The above copyright notice and this permission notice must be included |
|||
# in all copies or substantial portions of the Software. |
|||
# |
|||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
|||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
|||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
|||
# DEALINGS IN THE SOFTWARE. |
|||
# |
|||
################################################################################### |
|||
|
|||
import os |
|||
import time |
|||
import hmac |
|||
import hashlib |
|||
import logging |
|||
|
|||
from odoo.tests import common, HOST, PORT |
|||
|
|||
_path = os.path.dirname(os.path.dirname(__file__)) |
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
class HttpCase(common.HttpCase): |
|||
|
|||
def csrf_token(self, time_limit=3600): |
|||
token = self.session.sid |
|||
max_ts = '' if not time_limit else int(time.time() + time_limit) |
|||
msg = '%s%s' % (token, max_ts) |
|||
secret = self.env['ir.config_parameter'].sudo().get_param('database.secret') |
|||
assert secret, "CSRF protection requires a configured database secret" |
|||
hm = hmac.new(secret.encode('ascii'), msg.encode('utf-8'), hashlib.sha1).hexdigest() |
|||
return '%so%s' % (hm, max_ts) |
|||
|
|||
def url_open(self, url, data=None, timeout=10, csrf=False): |
|||
if url.startswith('/'): |
|||
url = "http://%s:%s%s" % (HOST, PORT, url) |
|||
if data: |
|||
if csrf: |
|||
data.update({'csrf_token': self.csrf_token()}) |
|||
return self.opener.post(url, data=data, timeout=timeout) |
|||
return self.opener.get(url, timeout=timeout) |
|||
|
|||
|
@ -0,0 +1,35 @@ |
|||
################################################################################### |
|||
# |
|||
# Copyright (C) 2018 MuK IT GmbH |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
################################################################################### |
|||
|
|||
import logging |
|||
|
|||
from werkzeug.datastructures import CombinedMultiDict |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
#---------------------------------------------------------- |
|||
# Werkzeug Helper |
|||
#---------------------------------------------------------- |
|||
|
|||
def request_params(httprequest): |
|||
return CombinedMultiDict([ |
|||
httprequest.args, |
|||
httprequest.form, |
|||
httprequest.files |
|||
]) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue