Source code for devices.tests.test_issuer.test_domain_credential
"""Test suite for validating the Domain Credential functionality."""fromtypingimportAnyimportpytestfromdevices.issuerimportLocalDomainCredentialIssuerfromdevices.modelsimportIssuedCredentialModel,OnboardingStatus@pytest.mark.django_db
[docs]deftest_issue_domain_credential(device_instance_onboarding:dict[str,Any])->None:"""Test that issuing a domain credential works without mocks."""device=device_instance_onboarding['device']issuer=LocalDomainCredentialIssuer(device=device,domain=device.domain)issued_credential=issuer.issue_domain_credential()assertisinstance(issued_credential,IssuedCredentialModel),('The returned object should be an IssuedCredentialModel')assertissued_credential.common_name=='Trustpoint Domain Credential','The common name should match the pseudonym'assertissued_credential.device==device,'The issued credential should belong to the correct device'assertissued_credential.domain==device.domain,'The issued credential should belong to the correct domain'assertissued_credential.issued_credential_type==IssuedCredentialModel.IssuedCredentialType.DOMAIN_CREDENTIAL,('The issued_credential_type should match DOMAIN_CREDENTIAL')assert(issued_credential.issued_credential_purpose==IssuedCredentialModel.IssuedCredentialPurpose.DOMAIN_CREDENTIAL),'The issued_credential_purpose should match DOMAIN_CREDENTIAL'device.refresh_from_db()assertdevice.onboarding_config.onboarding_status==OnboardingStatus.ONBOARDED,('The device onboarding status should be updated to ONBOARDED')db_credential=IssuedCredentialModel.objects.get(pk=issued_credential.pk)assertdb_credential==issued_credential,'The credential should be saved correctly in the database'cert_chain=issued_credential.credential.get_certificate_chain()assertisinstance(cert_chain,list),'The certificate chain should be a list'assertlen(cert_chain)>0,'The certificate chain should not be empty'assertall(certisnotNoneforcertincert_chain),'All certificates in the chain should be valid'