Skip to content
Closed
Prev Previous commit
Next Next commit
original_id -> source_id
  • Loading branch information
iscai-msft committed Sep 1, 2020
commit 00a32cbc60f00dfadc2496f2b66e50eeb98fb5f7
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from ._shared import parse_key_vault_identifier, ParsedId


def parse_certificate_id(original_id):
def parse_certificate_id(source_id):
# type: (str) -> ParsedId
"""Parses a full certificate's ID into a class.

:param str original_id: the full original identifier of a certificate
:param str source_id: the full original identifier of a certificate
:returns: Returns a parsed certificate id
:rtype: ~azure.keyvault.certificates.ParsedId
:raises: ValueError
Expand All @@ -23,11 +23,11 @@ def parse_certificate_id(original_id):
:caption: Parse a certificate's ID
:dedent: 8
"""
parsed_id = parse_key_vault_identifier(original_id)
parsed_id = parse_key_vault_identifier(source_id)

return ParsedId(
name=parsed_id.name,
original_id=parsed_id.original_id,
source_id=parsed_id.source_id,
vault_url=parsed_id.vault_url,
version=parsed_id.version
)
Original file line number Diff line number Diff line change
Expand Up @@ -25,41 +25,41 @@
class ParsedId():
"""Represents a key vault identifier and its parsed contents.

:param str original_id: The originally received complete identifier
:param str source_id: The originally received complete identifier
:param str vault_url: The vault URL
:param str name: The name extracted from the id
:param str version: The version extracted from the id
"""

def __init__(
self,
original_id, # type: str
source_id, # type: str
vault_url, # type: str
name, # type: str
version=None # type: Optional[str]
):
self.original_id = original_id
self.source_id = source_id
self.vault_url = vault_url
self.name = name
self.version = version


def parse_key_vault_identifier(original_id):
def parse_key_vault_identifier(source_id):
# type: (str) -> ParsedId
try:
parsed_uri = parse.urlparse(original_id)
parsed_uri = parse.urlparse(source_id)
except Exception: # pylint: disable=broad-except
raise ValueError("'{}' is not not a valid ID".format(original_id))
raise ValueError("'{}' is not not a valid ID".format(source_id))
if not (parsed_uri.scheme and parsed_uri.hostname):
raise ValueError("'{}' is not not a valid ID".format(original_id))
raise ValueError("'{}' is not not a valid ID".format(source_id))

path = list(filter(None, parsed_uri.path.split("/")))

if len(path) < 2 or len(path) > 3:
raise ValueError("'{}' is not not a valid vault ID".format(original_id))
raise ValueError("'{}' is not not a valid vault ID".format(source_id))

return ParsedId(
original_id=original_id,
source_id=source_id,
vault_url="{}://{}".format(parsed_uri.scheme, parsed_uri.hostname),
name=path[1],
version=path[2] if len(path) == 3 else None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ def test_recover_and_purge(self, client, **kwargs):
client.begin_delete_certificate(certificate_name=cert_name).wait()

# validate all our deleted certificates are returned by list_deleted_certificates
deleted = [parse_key_vault_identifier(original_id=c.id).name for c in client.list_deleted_certificates()]
deleted = [parse_key_vault_identifier(source_id=c.id).name for c in client.list_deleted_certificates()]
self.assertTrue(all(c in deleted for c in certs.keys()))

# recover select certificates
Expand All @@ -369,7 +369,7 @@ def test_recover_and_purge(self, client, **kwargs):
time.sleep(50)

# validate none of our deleted certificates are returned by list_deleted_certificates
deleted = [parse_key_vault_identifier(original_id=c.id).name for c in client.list_deleted_certificates()]
deleted = [parse_key_vault_identifier(source_id=c.id).name for c in client.list_deleted_certificates()]
self.assertTrue(not any(c in deleted for c in certs.keys()))

# validate the recovered certificates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ async def test_recover_and_purge(self, client, **kwargs):
deleted_certificates = client.list_deleted_certificates()
deleted = []
async for c in deleted_certificates:
deleted.append(parse_certificate_id(original_id=c.id).name)
deleted.append(parse_certificate_id(source_id=c.id).name)
self.assertTrue(all(c in deleted for c in certs.keys()))

# recover select certificates
Expand All @@ -372,7 +372,7 @@ async def test_recover_and_purge(self, client, **kwargs):
deleted_certificates = client.list_deleted_certificates()
deleted = []
async for c in deleted_certificates:
deleted.append(parse_certificate_id(original_id=c.id).name)
deleted.append(parse_certificate_id(source_id=c.id).name)
self.assertTrue(not any(c in deleted for c in certs.keys()))

# validate the recovered certificates
Expand Down
20 changes: 10 additions & 10 deletions sdk/keyvault/azure-keyvault-certificates/tests/test_parse_id.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,33 @@
class TestParseId(KeyVaultTestCase):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests can be module-level methods.

def test_parse_certificate_id_with_version(self):
# [START parse_certificate_id]
original_id = "https://keyvault-name.vault.azure.net/certificates/certificate-name/version"
parsed_certificate_id = parse_certificate_id(original_id)
source_id = "https://keyvault-name.vault.azure.net/certificates/certificate-name/version"
parsed_certificate_id = parse_certificate_id(source_id)

print(parsed_certificate_id.name)
print(parsed_certificate_id.vault_url)
print(parsed_certificate_id.version)
print(parsed_certificate_id.original_id)
print(parsed_certificate_id.source_id)
# [END parse_certificate_id]
assert parsed_certificate_id.name == "certificate-name"
assert parsed_certificate_id.vault_url == "https://keyvault-name.vault.azure.net"
assert parsed_certificate_id.version == "version"
assert parsed_certificate_id.original_id == "https://keyvault-name.vault.azure.net/certificates/certificate-name/version"
assert parsed_certificate_id.source_id == "https://keyvault-name.vault.azure.net/certificates/certificate-name/version"

def test_parse_certificate_id_with_pending_version(self):
original_id = "https://keyvault-name.vault.azure.net/certificates/certificate-name/pending"
parsed_certificate_id = parse_certificate_id(original_id)
source_id = "https://keyvault-name.vault.azure.net/certificates/certificate-name/pending"
parsed_certificate_id = parse_certificate_id(source_id)

assert parsed_certificate_id.name == "certificate-name"
assert parsed_certificate_id.vault_url == "https://keyvault-name.vault.azure.net"
assert parsed_certificate_id.version == "pending"
assert parsed_certificate_id.original_id == "https://keyvault-name.vault.azure.net/certificates/certificate-name/pending"
assert parsed_certificate_id.source_id == "https://keyvault-name.vault.azure.net/certificates/certificate-name/pending"

def test_parse_deleted_certificate_id(self):
original_id = "https://keyvault-name.vault.azure.net/deletedcertificates/deleted-certificate"
parsed_certificate_id = parse_certificate_id(original_id)
source_id = "https://keyvault-name.vault.azure.net/deletedcertificates/deleted-certificate"
parsed_certificate_id = parse_certificate_id(source_id)

assert parsed_certificate_id.name == "deleted-certificate"
assert parsed_certificate_id.vault_url == "https://keyvault-name.vault.azure.net"
assert parsed_certificate_id.version == None
assert parsed_certificate_id.original_id == "https://keyvault-name.vault.azure.net/deletedcertificates/deleted-certificate"
assert parsed_certificate_id.source_id == "https://keyvault-name.vault.azure.net/deletedcertificates/deleted-certificate"