Source code for ska.tests.test_commands
import shlex
import subprocess
import unittest
from urllib import parse
from ..shortcuts import validate_signed_request_data
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2013-2023 Artur Barseghyan"
__license__ = "GPL-2.0-only OR LGPL-2.1-or-later"
__all__ = ("GenerateSignedUrlTest",)
[docs]
class GenerateSignedUrlTest(unittest.TestCase):
"""Tests of `generate_signed_url` module and `ska-sign-url` script."""
[docs]
def setUp(self):
"""Set up."""
self.auth_user = "user"
self.secret_key = "secret"
self.url = "http://example.com/"
[docs]
def test_generate_signed_url(self):
"""Test `generate_signed_url` module.
:return:
"""
signed_url = subprocess.check_output(
shlex.split(
"ska-sign-url "
"-au {auth_user} "
"-sk {secret_key} "
"--url {url}".format(
auth_user=self.auth_user,
secret_key=self.secret_key,
url=self.url,
)
)
).strip()
# It's necessary to `strip` the value, since in Python 2 there might
# be a \n added at the end of the string.
parsed_url = parse.urlparse(str(signed_url))
parsed_query_params = parse.parse_qs(parsed_url.query)
data = {
"signature": parsed_query_params.get("signature")[0],
"auth_user": parsed_query_params.get("auth_user")[0],
"valid_until": parsed_query_params.get("valid_until")[0],
}
validation_result = validate_signed_request_data(data, self.secret_key)
self.assertTrue(validation_result.result)