OCA reporting engine fork for dev and update.
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.

75 lines
2.9 KiB

  1. # -*- coding: utf-8 -*-
  2. # Copyright 2017 Onestein (<http://www.onestein.eu>)
  3. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  4. from odoo.tests.common import TransactionCase, at_install, post_install
  5. from odoo.exceptions import AccessError
  6. class TestBiSqlViewEditor(TransactionCase):
  7. def setUp(self):
  8. super(TestBiSqlViewEditor, self).setUp()
  9. self.res_partner = self.env['res.partner']
  10. self.res_users = self.env['res.users']
  11. self.bi_sql_view = self.env['bi.sql.view']
  12. self.group_bi_user = self.env.ref(
  13. 'sql_request_abstract.group_sql_request_manager')
  14. self.group_user = self.env.ref(
  15. 'base.group_user')
  16. self.view = self.bi_sql_view.create({
  17. 'name': 'Partners View 2',
  18. 'is_materialized': False,
  19. 'technical_name': 'partners_view_2',
  20. 'query': "SELECT name as x_name, street as x_street,"
  21. "company_id as x_company_id FROM res_partner "
  22. "ORDER BY name"
  23. })
  24. self.company = self.env.ref('base.main_company')
  25. # Create bi user
  26. self.bi_user = self._create_user('bi_user', [self.group_bi_user],
  27. self.company)
  28. self.no_bi_user = self._create_user('no_bi_user', [self.group_user],
  29. self.company)
  30. def _create_user(self, login, groups, company):
  31. """Create a user."""
  32. group_ids = [group.id for group in groups]
  33. user = self.res_users.create({
  34. 'name': 'Test BI User',
  35. 'login': login,
  36. 'password': 'demo',
  37. 'email': 'example@yourcompany.com',
  38. 'company_id': company.id,
  39. 'groups_id': [(6, 0, group_ids)]
  40. })
  41. return user
  42. @at_install(False)
  43. @post_install(True)
  44. def test_process_view(self):
  45. view = self.view
  46. self.assertEqual(view.state, 'draft', 'state not draft')
  47. view.button_validate_sql_expression()
  48. self.assertEqual(view.state, 'sql_valid', 'state not sql_valid')
  49. def test_copy(self):
  50. copy_view = self.view.copy()
  51. self.assertEqual(
  52. copy_view.name, 'Partners View 2 (Copy)', 'Wrong name')
  53. def test_security(self):
  54. with self.assertRaises(AccessError):
  55. self.bi_sql_view.sudo(self.no_bi_user.id).search(
  56. [('name', '=', 'Partners View 2')])
  57. bi = self.bi_sql_view.sudo(self.bi_user.id).search(
  58. [('name', '=', 'Partners View 2')])
  59. self.assertEqual(len(bi), 1, 'Bi user should not have access to '
  60. 'bi %s' % self.view.name)
  61. def test_unlink(self):
  62. self.assertEqual(self.view.state, 'draft', 'state not draft')
  63. self.view.button_validate_sql_expression()
  64. self.view.unlink()
  65. res = self.bi_sql_view.search([('name', '=', 'Partners View 2')])
  66. self.assertEqual(len(res), 0, 'View not deleted')