test_views.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import base64
  2. from django.urls import reverse
  3. from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
  4. from secrets.models import Secret, SecretRole, SessionKey, UserKey
  5. from utilities.testing import StandardTestCases
  6. from .constants import PRIVATE_KEY, PUBLIC_KEY
  7. class SecretRoleTestCase(StandardTestCases.Views):
  8. model = SecretRole
  9. # Disable inapplicable tests
  10. test_get_object = None
  11. test_delete_object = None
  12. @classmethod
  13. def setUpTestData(cls):
  14. SecretRole.objects.bulk_create([
  15. SecretRole(name='Secret Role 1', slug='secret-role-1'),
  16. SecretRole(name='Secret Role 2', slug='secret-role-2'),
  17. SecretRole(name='Secret Role 3', slug='secret-role-3'),
  18. ])
  19. cls.form_data = {
  20. 'name': 'Secret Role X',
  21. 'slug': 'secret-role-x',
  22. 'description': 'A secret role',
  23. 'users': [],
  24. 'groups': [],
  25. }
  26. cls.csv_data = (
  27. "name,slug",
  28. "Secret Role 4,secret-role-4",
  29. "Secret Role 5,secret-role-5",
  30. "Secret Role 6,secret-role-6",
  31. )
  32. class SecretTestCase(StandardTestCases.Views):
  33. model = Secret
  34. # Disable inapplicable tests
  35. test_create_object = None
  36. # TODO: Check permissions enforcement on secrets.views.secret_edit
  37. test_edit_object = None
  38. @classmethod
  39. def setUpTestData(cls):
  40. site = Site.objects.create(name='Site 1', slug='site-1')
  41. manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1')
  42. devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1')
  43. devicerole = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1')
  44. device = Device.objects.create(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
  45. secretrole = SecretRole.objects.create(name='Secret Role 1', slug='secret-role-1')
  46. Secret.objects.bulk_create([
  47. Secret(device=device, role=secretrole, name='Secret 1', ciphertext=b'1234567890'),
  48. Secret(device=device, role=secretrole, name='Secret 2', ciphertext=b'1234567890'),
  49. Secret(device=device, role=secretrole, name='Secret 3', ciphertext=b'1234567890'),
  50. ])
  51. cls.form_data = {
  52. 'device': device.pk,
  53. 'role': secretrole.pk,
  54. 'name': 'Secret X',
  55. }
  56. def setUp(self):
  57. super().setUp()
  58. # Set up a master key for the test user
  59. userkey = UserKey(user=self.user, public_key=PUBLIC_KEY)
  60. userkey.save()
  61. master_key = userkey.get_master_key(PRIVATE_KEY)
  62. self.session_key = SessionKey(userkey=userkey)
  63. self.session_key.save(master_key)
  64. def test_import_objects(self):
  65. self.add_permissions('secrets.add_secret')
  66. csv_data = (
  67. "device,role,name,plaintext",
  68. "Device 1,Secret Role 1,Secret 4,abcdefghij",
  69. "Device 1,Secret Role 1,Secret 5,abcdefghij",
  70. "Device 1,Secret Role 1,Secret 6,abcdefghij",
  71. )
  72. # Set the session_key cookie on the request
  73. session_key = base64.b64encode(self.session_key.key).decode('utf-8')
  74. self.client.cookies['session_key'] = session_key
  75. response = self.client.post(reverse('secrets:secret_import'), {'csv': '\n'.join(csv_data)})
  76. self.assertHttpStatus(response, 200)
  77. self.assertEqual(Secret.objects.count(), 6)