crypto: fix has_key filter (#6727)
* crypto: fix has_key certificate filter Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
parent
d485a04153
commit
0772756eef
|
@ -189,6 +189,8 @@ class CertificateKeyPairFilter(FilterSet):
|
||||||
|
|
||||||
def filter_has_key(self, queryset, name, value): # pragma: no cover
|
def filter_has_key(self, queryset, name, value): # pragma: no cover
|
||||||
"""Only return certificate-key pairs with keys"""
|
"""Only return certificate-key pairs with keys"""
|
||||||
|
if not value:
|
||||||
|
return queryset
|
||||||
return queryset.exclude(key_data__exact="")
|
return queryset.exclude(key_data__exact="")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -128,8 +128,26 @@ class TestCrypto(APITestCase):
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
reverse(
|
reverse(
|
||||||
"authentik_api:certificatekeypair-list",
|
"authentik_api:certificatekeypair-list",
|
||||||
)
|
),
|
||||||
+ f"?name={cert.name}"
|
data={"name": cert.name},
|
||||||
|
)
|
||||||
|
self.assertEqual(200, response.status_code)
|
||||||
|
body = loads(response.content.decode())
|
||||||
|
api_cert = [x for x in body["results"] if x["name"] == cert.name][0]
|
||||||
|
self.assertEqual(api_cert["fingerprint_sha1"], cert.fingerprint_sha1)
|
||||||
|
self.assertEqual(api_cert["fingerprint_sha256"], cert.fingerprint_sha256)
|
||||||
|
|
||||||
|
def test_list_has_key_false(self):
|
||||||
|
"""Test API List with has_key set to false"""
|
||||||
|
cert = create_test_cert()
|
||||||
|
cert.key_data = ""
|
||||||
|
cert.save()
|
||||||
|
self.client.force_login(create_test_admin_user())
|
||||||
|
response = self.client.get(
|
||||||
|
reverse(
|
||||||
|
"authentik_api:certificatekeypair-list",
|
||||||
|
),
|
||||||
|
data={"name": cert.name, "has_key": False},
|
||||||
)
|
)
|
||||||
self.assertEqual(200, response.status_code)
|
self.assertEqual(200, response.status_code)
|
||||||
body = loads(response.content.decode())
|
body = loads(response.content.decode())
|
||||||
|
@ -144,8 +162,8 @@ class TestCrypto(APITestCase):
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
reverse(
|
reverse(
|
||||||
"authentik_api:certificatekeypair-list",
|
"authentik_api:certificatekeypair-list",
|
||||||
)
|
),
|
||||||
+ f"?name={cert.name}&include_details=false"
|
data={"name": cert.name, "include_details": False},
|
||||||
)
|
)
|
||||||
self.assertEqual(200, response.status_code)
|
self.assertEqual(200, response.status_code)
|
||||||
body = loads(response.content.decode())
|
body = loads(response.content.decode())
|
||||||
|
@ -168,8 +186,8 @@ class TestCrypto(APITestCase):
|
||||||
reverse(
|
reverse(
|
||||||
"authentik_api:certificatekeypair-view-certificate",
|
"authentik_api:certificatekeypair-view-certificate",
|
||||||
kwargs={"pk": keypair.pk},
|
kwargs={"pk": keypair.pk},
|
||||||
)
|
),
|
||||||
+ "?download",
|
data={"download": True},
|
||||||
)
|
)
|
||||||
self.assertEqual(200, response.status_code)
|
self.assertEqual(200, response.status_code)
|
||||||
self.assertIn("Content-Disposition", response)
|
self.assertIn("Content-Disposition", response)
|
||||||
|
@ -189,8 +207,8 @@ class TestCrypto(APITestCase):
|
||||||
reverse(
|
reverse(
|
||||||
"authentik_api:certificatekeypair-view-private-key",
|
"authentik_api:certificatekeypair-view-private-key",
|
||||||
kwargs={"pk": keypair.pk},
|
kwargs={"pk": keypair.pk},
|
||||||
)
|
),
|
||||||
+ "?download",
|
data={"download": True},
|
||||||
)
|
)
|
||||||
self.assertEqual(200, response.status_code)
|
self.assertEqual(200, response.status_code)
|
||||||
self.assertIn("Content-Disposition", response)
|
self.assertIn("Content-Disposition", response)
|
||||||
|
@ -200,7 +218,7 @@ class TestCrypto(APITestCase):
|
||||||
self.client.force_login(create_test_admin_user())
|
self.client.force_login(create_test_admin_user())
|
||||||
keypair = create_test_cert()
|
keypair = create_test_cert()
|
||||||
provider = OAuth2Provider.objects.create(
|
provider = OAuth2Provider.objects.create(
|
||||||
name="test",
|
name=generate_id(),
|
||||||
client_id="test",
|
client_id="test",
|
||||||
client_secret=generate_key(),
|
client_secret=generate_key(),
|
||||||
authorization_flow=create_test_flow(),
|
authorization_flow=create_test_flow(),
|
||||||
|
|
Reference in New Issue