You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.6 KiB

  1. ###################################################################################
  2. #
  3. # Copyright (c) 2017-2019 MuK IT GmbH.
  4. #
  5. # This file is part of MuK Large Objects Attachment
  6. # (see https://mukit.at).
  7. #
  8. # This program is free software: you can redistribute it and/or modify
  9. # it under the terms of the GNU Lesser General Public License as published by
  10. # the Free Software Foundation, either version 3 of the License, or
  11. # (at your option) any later version.
  12. #
  13. # This program is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. # GNU Lesser General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU Lesser General Public License
  19. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. #
  21. ###################################################################################
  22. import os
  23. import time
  24. import hmac
  25. import base64
  26. import hashlib
  27. import logging
  28. from odoo.http import request
  29. from odoo.addons.muk_utils.tests import common
  30. _path = os.path.dirname(os.path.dirname(__file__))
  31. _logger = logging.getLogger(__name__)
  32. class DownloadTestCase(common.HttpCase):
  33. def setUp(self):
  34. super(DownloadTestCase, self).setUp()
  35. self.attachment = self.env['ir.attachment'].sudo()
  36. self.params = self.env['ir.config_parameter'].sudo()
  37. self.location = self.params.get_param('ir_attachment.location')
  38. self.params.set_param('ir_attachment.location', 'lobject')
  39. def tearDown(self):
  40. self.params.set_param('ir_attachment.location', self.location)
  41. super(DownloadTestCase, self).tearDown()
  42. def test_attachment_download(self):
  43. self.authenticate('admin', 'admin')
  44. attach_01 = self.attachment.create({
  45. 'name': "Test_01",
  46. 'datas': base64.b64encode(b"\xff data")
  47. })
  48. attach_02 = self.attachment.create({
  49. 'name': "Test_02",
  50. })
  51. self.assertTrue(attach_01.datas)
  52. self.assertFalse(attach_02.datas)
  53. data = {
  54. 'model': 'ir.attachment',
  55. 'field': 'store_lobject',
  56. 'filename_field': 'datas_fname',
  57. }
  58. data.update({
  59. 'id': attach_01.id,
  60. })
  61. self.assertTrue(self.url_open('/web/lobject', data=data, csrf=True))
  62. data.update({
  63. 'id': attach_02.id,
  64. })
  65. self.assertTrue(self.url_open('/web/lobject', data=data, csrf=True))