test_models.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. from django.test import TestCase
  2. from core.models import DataSource
  3. from core.choices import ObjectChangeActionChoices
  4. from netbox.constants import CENSOR_TOKEN, CENSOR_TOKEN_CHANGED
  5. class DataSourceChangeLoggingTestCase(TestCase):
  6. def test_password_added_on_create(self):
  7. datasource = DataSource.objects.create(
  8. name='Data Source 1',
  9. type='git',
  10. source_url='http://localhost/',
  11. parameters={
  12. 'username': 'jeff',
  13. 'password': 'foobar123',
  14. }
  15. )
  16. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_CREATE)
  17. self.assertIsNone(objectchange.prechange_data)
  18. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'jeff')
  19. self.assertEqual(objectchange.postchange_data['parameters']['password'], CENSOR_TOKEN_CHANGED)
  20. def test_password_added_on_update(self):
  21. datasource = DataSource.objects.create(
  22. name='Data Source 1',
  23. type='git',
  24. source_url='http://localhost/'
  25. )
  26. datasource.snapshot()
  27. # Add a blank password
  28. datasource.parameters = {
  29. 'username': 'jeff',
  30. 'password': '',
  31. }
  32. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_UPDATE)
  33. self.assertIsNone(objectchange.prechange_data['parameters'])
  34. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'jeff')
  35. self.assertEqual(objectchange.postchange_data['parameters']['password'], '')
  36. # Add a password
  37. datasource.parameters = {
  38. 'username': 'jeff',
  39. 'password': 'foobar123',
  40. }
  41. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_UPDATE)
  42. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'jeff')
  43. self.assertEqual(objectchange.postchange_data['parameters']['password'], CENSOR_TOKEN_CHANGED)
  44. def test_password_changed(self):
  45. datasource = DataSource.objects.create(
  46. name='Data Source 1',
  47. type='git',
  48. source_url='http://localhost/',
  49. parameters={
  50. 'username': 'jeff',
  51. 'password': 'password1',
  52. }
  53. )
  54. datasource.snapshot()
  55. # Change the password
  56. datasource.parameters['password'] = 'password2'
  57. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_UPDATE)
  58. self.assertEqual(objectchange.prechange_data['parameters']['username'], 'jeff')
  59. self.assertEqual(objectchange.prechange_data['parameters']['password'], CENSOR_TOKEN)
  60. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'jeff')
  61. self.assertEqual(objectchange.postchange_data['parameters']['password'], CENSOR_TOKEN_CHANGED)
  62. def test_password_removed_on_update(self):
  63. datasource = DataSource.objects.create(
  64. name='Data Source 1',
  65. type='git',
  66. source_url='http://localhost/',
  67. parameters={
  68. 'username': 'jeff',
  69. 'password': 'foobar123',
  70. }
  71. )
  72. datasource.snapshot()
  73. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_UPDATE)
  74. self.assertEqual(objectchange.prechange_data['parameters']['username'], 'jeff')
  75. self.assertEqual(objectchange.prechange_data['parameters']['password'], CENSOR_TOKEN)
  76. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'jeff')
  77. self.assertEqual(objectchange.postchange_data['parameters']['password'], CENSOR_TOKEN)
  78. # Remove the password
  79. datasource.parameters['password'] = ''
  80. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_UPDATE)
  81. self.assertEqual(objectchange.prechange_data['parameters']['username'], 'jeff')
  82. self.assertEqual(objectchange.prechange_data['parameters']['password'], CENSOR_TOKEN)
  83. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'jeff')
  84. self.assertEqual(objectchange.postchange_data['parameters']['password'], '')
  85. def test_password_not_modified(self):
  86. datasource = DataSource.objects.create(
  87. name='Data Source 1',
  88. type='git',
  89. source_url='http://localhost/',
  90. parameters={
  91. 'username': 'username1',
  92. 'password': 'foobar123',
  93. }
  94. )
  95. datasource.snapshot()
  96. # Remove the password
  97. datasource.parameters['username'] = 'username2'
  98. objectchange = datasource.to_objectchange(ObjectChangeActionChoices.ACTION_UPDATE)
  99. self.assertEqual(objectchange.prechange_data['parameters']['username'], 'username1')
  100. self.assertEqual(objectchange.prechange_data['parameters']['password'], CENSOR_TOKEN)
  101. self.assertEqual(objectchange.postchange_data['parameters']['username'], 'username2')
  102. self.assertEqual(objectchange.postchange_data['parameters']['password'], CENSOR_TOKEN)