177 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			177 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import boto3 | ||
|  | import pytest | ||
|  | 
 | ||
|  | from botocore.exceptions import ClientError | ||
|  | from moto import mock_iot | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_register_ca_certificate_simple(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  | 
 | ||
|  |     resp = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |     ) | ||
|  | 
 | ||
|  |     resp.should.have.key("certificateArn") | ||
|  |     resp.should.have.key("certificateId") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_describe_ca_certificate_unknown(): | ||
|  |     client = boto3.client("iot", region_name="us-east-2") | ||
|  | 
 | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         client.describe_ca_certificate(certificateId="a" * 70) | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("ResourceNotFoundException") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_describe_ca_certificate_simple(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  | 
 | ||
|  |     resp = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |     ) | ||
|  | 
 | ||
|  |     describe = client.describe_ca_certificate(certificateId=resp["certificateId"]) | ||
|  | 
 | ||
|  |     describe.should.have.key("certificateDescription") | ||
|  |     description = describe["certificateDescription"] | ||
|  |     description.should.have.key("certificateArn").equals(resp["certificateArn"]) | ||
|  |     description.should.have.key("certificateId").equals(resp["certificateId"]) | ||
|  |     description.should.have.key("status").equals("INACTIVE") | ||
|  |     description.should.have.key("certificatePem").equals("ca_certificate") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_describe_ca_certificate_advanced(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  | 
 | ||
|  |     resp = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |         setAsActive=True, | ||
|  |         registrationConfig={ | ||
|  |             "templateBody": "template_b0dy", | ||
|  |             "roleArn": "aws:iot:arn:role/asdfqwerwe", | ||
|  |         }, | ||
|  |     ) | ||
|  | 
 | ||
|  |     describe = client.describe_ca_certificate(certificateId=resp["certificateId"]) | ||
|  | 
 | ||
|  |     describe.should.have.key("certificateDescription") | ||
|  |     description = describe["certificateDescription"] | ||
|  |     description.should.have.key("certificateArn").equals(resp["certificateArn"]) | ||
|  |     description.should.have.key("certificateId").equals(resp["certificateId"]) | ||
|  |     description.should.have.key("status").equals("ACTIVE") | ||
|  |     description.should.have.key("certificatePem").equals("ca_certificate") | ||
|  | 
 | ||
|  |     describe.should.have.key("registrationConfig") | ||
|  |     config = describe["registrationConfig"] | ||
|  |     config.should.have.key("templateBody").equals("template_b0dy") | ||
|  |     config.should.have.key("roleArn").equals("aws:iot:arn:role/asdfqwerwe") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_list_certificates_by_ca(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  | 
 | ||
|  |     # create ca | ||
|  |     ca_cert = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |     ) | ||
|  |     ca_cert_id = ca_cert["certificateId"] | ||
|  | 
 | ||
|  |     # list certificates should be empty at first | ||
|  |     certs = client.list_certificates_by_ca(caCertificateId=ca_cert_id) | ||
|  |     certs.should.have.key("certificates").equals([]) | ||
|  | 
 | ||
|  |     # create one certificate | ||
|  |     cert1 = client.register_certificate( | ||
|  |         certificatePem="pem" * 20, caCertificatePem="ca_certificate", setAsActive=False | ||
|  |     ) | ||
|  | 
 | ||
|  |     # list certificates should return this | ||
|  |     certs = client.list_certificates_by_ca(caCertificateId=ca_cert_id) | ||
|  |     certs.should.have.key("certificates").length_of(1) | ||
|  |     certs["certificates"][0]["certificateId"].should.equal(cert1["certificateId"]) | ||
|  | 
 | ||
|  |     # create another certificate, without ca | ||
|  |     client.register_certificate( | ||
|  |         certificatePem="pam" * 20, | ||
|  |         caCertificatePem="unknown_ca_certificate", | ||
|  |         setAsActive=False, | ||
|  |     ) | ||
|  | 
 | ||
|  |     # list certificate should still only return the first certificate | ||
|  |     certs = client.list_certificates_by_ca(caCertificateId=ca_cert_id) | ||
|  |     certs.should.have.key("certificates").length_of(1) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_delete_ca_certificate(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  | 
 | ||
|  |     cert_id = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |     )["certificateId"] | ||
|  | 
 | ||
|  |     client.delete_ca_certificate(certificateId=cert_id) | ||
|  | 
 | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         client.describe_ca_certificate(certificateId=cert_id) | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("ResourceNotFoundException") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_update_ca_certificate__status(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  |     cert_id = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |         registrationConfig={"templateBody": "tb", "roleArn": "my:old_and_busted:arn"}, | ||
|  |     )["certificateId"] | ||
|  | 
 | ||
|  |     client.update_ca_certificate(certificateId=cert_id, newStatus="DISABLE") | ||
|  |     cert = client.describe_ca_certificate(certificateId=cert_id) | ||
|  |     cert_desc = cert["certificateDescription"] | ||
|  |     cert_desc.should.have.key("status").which.should.equal("DISABLE") | ||
|  |     cert.should.have.key("registrationConfig").equals( | ||
|  |         {"roleArn": "my:old_and_busted:arn", "templateBody": "tb"} | ||
|  |     ) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_update_ca_certificate__config(): | ||
|  |     client = boto3.client("iot", region_name="us-east-1") | ||
|  |     cert_id = client.register_ca_certificate( | ||
|  |         caCertificate="ca_certificate", | ||
|  |         verificationCertificate="verification_certificate", | ||
|  |     )["certificateId"] | ||
|  | 
 | ||
|  |     client.update_ca_certificate( | ||
|  |         certificateId=cert_id, | ||
|  |         registrationConfig={"templateBody": "tb", "roleArn": "my:new_and_fancy:arn"}, | ||
|  |     ) | ||
|  |     cert = client.describe_ca_certificate(certificateId=cert_id) | ||
|  |     cert_desc = cert["certificateDescription"] | ||
|  |     cert_desc.should.have.key("status").which.should.equal("INACTIVE") | ||
|  |     cert.should.have.key("registrationConfig").equals( | ||
|  |         {"roleArn": "my:new_and_fancy:arn", "templateBody": "tb"} | ||
|  |     ) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_iot | ||
|  | def test_get_registration_code(): | ||
|  |     client = boto3.client("iot", region_name="us-west-1") | ||
|  | 
 | ||
|  |     resp = client.get_registration_code() | ||
|  |     resp.should.have.key("registrationCode") |