diff --git a/tcms/utils/tests/test_github.py b/tcms/utils/tests/test_github.py index 82716ae23f..b943a12ff8 100644 --- a/tcms/utils/tests/test_github.py +++ b/tcms/utils/tests/test_github.py @@ -1,5 +1,8 @@ # Copyright (c) 2019 Alexander Todorov +import hmac +import hashlib + from http import HTTPStatus from django import test @@ -8,6 +11,12 @@ from tcms.utils import github +class CalculateSignatureTestCase(test.TestCase): + def test_return_format(self): + self.assertEqual(github.calculate_signature(b'secret', b'content'), + 'sha1=0bd98d1a7514a85bbb8377bb8d750b6e01494056') + + class VerifySignatureTestCase(test.TestCase): def setUp(self): self.factory = test.RequestFactory() @@ -27,3 +36,12 @@ def test_invalid_signature_header(self): self.assertIsInstance(result, HttpResponseForbidden) self.assertEqual(HTTPStatus.FORBIDDEN, result.status_code) + + def test_valid_signature_header(self): + request = self.factory.post(self.url) + request.META['HTTP_X_HUB_SIGNATURE'] = ( + github.calculate_signature(b'secret', request.body) + ) + result = github.verify_signature(request, b'secret') + self.assertIsInstance(result, bool) + self.assertTrue(result)