mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-24 02:08:36 +00:00
Add mocking in Swift tests
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from . import tests
|
from . import test_mock_swift_api
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2017 Camptocamp SA
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from mock import patch
|
||||||
|
from odoo.addons.base.tests.test_ir_attachment import TestIrAttachment
|
||||||
|
from ..swift_uri import SwiftUri
|
||||||
|
|
||||||
|
|
||||||
|
class TestAttachmentSwift(TestIrAttachment):
|
||||||
|
|
||||||
|
def setup(self):
|
||||||
|
super(TestAttachmentSwift, self).setUp()
|
||||||
|
self.env['ir.config_parameter'].set_param('ir_attachment.location',
|
||||||
|
'swift')
|
||||||
|
|
||||||
|
@patch('swiftclient.client')
|
||||||
|
def test_connection(self, mock_swift_client):
|
||||||
|
""" Test the connection to the store"""
|
||||||
|
os.environ['SWIFT_AUTH_URL'] = 'auth_url'
|
||||||
|
os.environ['SWIFT_ACCOUNT'] = 'account'
|
||||||
|
os.environ['SWIFT_PASSWORD'] = 'password'
|
||||||
|
os.environ['SWIFT_TENANT_NAME'] = 'tenant_name'
|
||||||
|
attachment = self.Attachment
|
||||||
|
attachment._get_swift_connection()
|
||||||
|
mock_swift_client.Connection.assert_called_once_with(
|
||||||
|
authurl=os.environ.get('SWIFT_AUTH_URL'),
|
||||||
|
user=os.environ.get('SWIFT_ACCOUNT'),
|
||||||
|
key=os.environ.get('SWIFT_PASSWORD'),
|
||||||
|
tenant_name=os.environ.get('SWIFT_TENANT_NAME'),
|
||||||
|
auth_version='2.0'
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_store_file_on_swift(self):
|
||||||
|
"""
|
||||||
|
Test writing a file
|
||||||
|
"""
|
||||||
|
(self.env['ir.config_parameter'].
|
||||||
|
set_param('ir_attachment.location', 'swift'))
|
||||||
|
os.environ['SWIFT_AUTH_URL'] = 'auth_url'
|
||||||
|
os.environ['SWIFT_ACCOUNT'] = 'account'
|
||||||
|
os.environ['SWIFT_PASSWORD'] = 'password'
|
||||||
|
os.environ['SWIFT_TENANT_NAME'] = 'tenant_name'
|
||||||
|
container = os.environ.get('SWIFT_WRITE_CONTAINER')
|
||||||
|
attachment = self.Attachment
|
||||||
|
bin_data = self.blob1_b64.decode('base64')
|
||||||
|
with patch('swiftclient.client.Connection') as MockConnection:
|
||||||
|
conn = MockConnection.return_value
|
||||||
|
attachment.create({'name': 'a5', 'datas': self.blob1_b64})
|
||||||
|
conn.put_object.assert_called_with(
|
||||||
|
container,
|
||||||
|
attachment._compute_checksum(bin_data),
|
||||||
|
bin_data)
|
||||||
|
|
||||||
|
def test_delete_file_on_swift(self):
|
||||||
|
"""
|
||||||
|
Test deleting a file
|
||||||
|
"""
|
||||||
|
(self.env['ir.config_parameter'].
|
||||||
|
set_param('ir_attachment.location', 'swift'))
|
||||||
|
os.environ['SWIFT_AUTH_URL'] = 'auth_url'
|
||||||
|
os.environ['SWIFT_ACCOUNT'] = 'account'
|
||||||
|
os.environ['SWIFT_PASSWORD'] = 'password'
|
||||||
|
os.environ['SWIFT_TENANT_NAME'] = 'tenant_name'
|
||||||
|
attachment = self.Attachment
|
||||||
|
container = os.environ.get('SWIFT_WRITE_CONTAINER')
|
||||||
|
with patch('swiftclient.client.Connection') as MockConnection:
|
||||||
|
conn = MockConnection.return_value
|
||||||
|
a5 = attachment.create({'name': 'a5', 'datas': self.blob1_b64})
|
||||||
|
uri = SwiftUri(a5.store_fname)
|
||||||
|
a5.unlink()
|
||||||
|
conn.delete_object.assert_called_with(container, uri.item())
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright 2016 Camptocamp SA
|
# Copyright 2017 Camptocamp SA
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
||||||
|
|
||||||
from odoo.addons.base.tests.test_ir_attachment import TestIrAttachment
|
from odoo.addons.base.tests.test_ir_attachment import TestIrAttachment
|
||||||
@@ -8,6 +8,9 @@ from swiftclient.exceptions import ClientException
|
|||||||
|
|
||||||
|
|
||||||
class TestAttachmentSwift(TestIrAttachment):
|
class TestAttachmentSwift(TestIrAttachment):
|
||||||
|
"""
|
||||||
|
Those tests are made to be run against a real Swift store (local or remote)
|
||||||
|
"""
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
super(TestAttachmentSwift, self).setUp()
|
super(TestAttachmentSwift, self).setUp()
|
||||||
@@ -20,6 +23,7 @@ class TestAttachmentSwift(TestIrAttachment):
|
|||||||
self.assertNotEquals(conn, False)
|
self.assertNotEquals(conn, False)
|
||||||
|
|
||||||
def test_store_file_on_swift(self):
|
def test_store_file_on_swift(self):
|
||||||
|
""" Test writing a file and then reading it """
|
||||||
(self.env['ir.config_parameter'].
|
(self.env['ir.config_parameter'].
|
||||||
set_param('ir_attachment.location', 'swift'))
|
set_param('ir_attachment.location', 'swift'))
|
||||||
a5 = self.Attachment.create({'name': 'a5', 'datas': self.blob1_b64})
|
a5 = self.Attachment.create({'name': 'a5', 'datas': self.blob1_b64})
|
||||||
@@ -27,6 +31,7 @@ class TestAttachmentSwift(TestIrAttachment):
|
|||||||
self.assertEquals(a5.datas, a5bis.datas)
|
self.assertEquals(a5.datas, a5bis.datas)
|
||||||
|
|
||||||
def test_delete_file_on_swift(self):
|
def test_delete_file_on_swift(self):
|
||||||
|
""" Create a file and then test the deletion """
|
||||||
(self.env['ir.config_parameter'].
|
(self.env['ir.config_parameter'].
|
||||||
set_param('ir_attachment.location', 'swift'))
|
set_param('ir_attachment.location', 'swift'))
|
||||||
a5 = self.Attachment.create({'name': 'a5', 'datas': self.blob1_b64})
|
a5 = self.Attachment.create({'name': 'a5', 'datas': self.blob1_b64})
|
||||||
Reference in New Issue
Block a user