221 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			221 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import boto3
							 | 
						||
| 
								 | 
							
								import pytest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from moto import mock_iot
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_create_domain_configuration_only_name():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    domain_config = client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_config.should.have.key("domainConfigurationName").which.should.equal(
							 | 
						||
| 
								 | 
							
								        "testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_config.should.have.key("domainConfigurationArn").which.should_not.be.none
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_create_duplicate_domain_configuration_fails():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    domain_config = client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_config.should.have.key("domainConfigurationName").which.should.equal(
							 | 
						||
| 
								 | 
							
								        "testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_config.should.have.key("domainConfigurationArn").which.should_not.be.none
							 | 
						||
| 
								 | 
							
								    with pytest.raises(client.exceptions.ResourceAlreadyExistsException) as exc:
							 | 
						||
| 
								 | 
							
								        client.create_domain_configuration(domainConfigurationName="testConfig")
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("ResourceAlreadyExistsException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal("Domain configuration with given name already exists.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_create_domain_configuration_full_params():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    domain_config = client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig",
							 | 
						||
| 
								 | 
							
								        domainName="example.com",
							 | 
						||
| 
								 | 
							
								        serverCertificateArns=["ARN1", "ARN2"],
							 | 
						||
| 
								 | 
							
								        validationCertificateArn="VARN",
							 | 
						||
| 
								 | 
							
								        authorizerConfig={
							 | 
						||
| 
								 | 
							
								            "defaultAuthorizerName": "name",
							 | 
						||
| 
								 | 
							
								            "allowAuthorizerOverride": True,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        serviceType="DATA",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_config.should.have.key("domainConfigurationName").which.should.equal(
							 | 
						||
| 
								 | 
							
								        "testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_config.should.have.key("domainConfigurationArn").which.should_not.be.none
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_create_domain_configuration_invalid_service_type():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(client.exceptions.InvalidRequestException) as exc:
							 | 
						||
| 
								 | 
							
								        client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								            domainConfigurationName="testConfig", serviceType="INVALIDTYPE"
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("InvalidRequestException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal(
							 | 
						||
| 
								 | 
							
								        "An error occurred (InvalidRequestException) when calling the DescribeDomainConfiguration operation: Service type INVALIDTYPE not recognized."
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_describe_nonexistent_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(client.exceptions.ResourceNotFoundException) as exc:
							 | 
						||
| 
								 | 
							
								        client.describe_domain_configuration(domainConfigurationName="doesntExist")
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("ResourceNotFoundException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal("The specified resource does not exist.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_describe_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig",
							 | 
						||
| 
								 | 
							
								        domainName="example.com",
							 | 
						||
| 
								 | 
							
								        serverCertificateArns=["ARN1", "ARN2"],
							 | 
						||
| 
								 | 
							
								        validationCertificateArn="VARN",
							 | 
						||
| 
								 | 
							
								        authorizerConfig={
							 | 
						||
| 
								 | 
							
								            "defaultAuthorizerName": "name",
							 | 
						||
| 
								 | 
							
								            "allowAuthorizerOverride": True,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        serviceType="DATA",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_config = client.describe_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("domainConfigurationName").which.should.equal(
							 | 
						||
| 
								 | 
							
								        "testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("domainConfigurationArn")
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("serverCertificates")
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("authorizerConfig")
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("domainConfigurationStatus").which.should.equal(
							 | 
						||
| 
								 | 
							
								        "ENABLED"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("serviceType").which.should.equal("DATA")
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("domainType")
							 | 
						||
| 
								 | 
							
								    described_config.should.have.key("lastStatusChangeDate")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_update_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig",
							 | 
						||
| 
								 | 
							
								        domainName="example.com",
							 | 
						||
| 
								 | 
							
								        serverCertificateArns=["ARN1", "ARN2"],
							 | 
						||
| 
								 | 
							
								        validationCertificateArn="VARN",
							 | 
						||
| 
								 | 
							
								        authorizerConfig={
							 | 
						||
| 
								 | 
							
								            "defaultAuthorizerName": "name",
							 | 
						||
| 
								 | 
							
								            "allowAuthorizerOverride": True,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        serviceType="DATA",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    client.update_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig",
							 | 
						||
| 
								 | 
							
								        authorizerConfig={
							 | 
						||
| 
								 | 
							
								            "defaultAuthorizerName": "updatedName",
							 | 
						||
| 
								 | 
							
								            "allowAuthorizerOverride": False,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        domainConfigurationStatus="DISABLED",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_updated_config = client.describe_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_updated_config.should.have.key("authorizerConfig").which.should.have.key(
							 | 
						||
| 
								 | 
							
								        "defaultAuthorizerName"
							 | 
						||
| 
								 | 
							
								    ).which.should.equal("updatedName")
							 | 
						||
| 
								 | 
							
								    described_updated_config.should.have.key("authorizerConfig").which.should.have.key(
							 | 
						||
| 
								 | 
							
								        "allowAuthorizerOverride"
							 | 
						||
| 
								 | 
							
								    ).which.should.equal(False)
							 | 
						||
| 
								 | 
							
								    described_updated_config.should.have.key(
							 | 
						||
| 
								 | 
							
								        "domainConfigurationStatus"
							 | 
						||
| 
								 | 
							
								    ).which.should.equal("DISABLED")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_update_domain_configuration_remove_authorizer_type():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    client.create_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig",
							 | 
						||
| 
								 | 
							
								        domainName="example.com",
							 | 
						||
| 
								 | 
							
								        serverCertificateArns=["ARN1", "ARN2"],
							 | 
						||
| 
								 | 
							
								        validationCertificateArn="VARN",
							 | 
						||
| 
								 | 
							
								        authorizerConfig={
							 | 
						||
| 
								 | 
							
								            "defaultAuthorizerName": "name",
							 | 
						||
| 
								 | 
							
								            "allowAuthorizerOverride": True,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        serviceType="DATA",
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    client.update_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig", removeAuthorizerConfig=True
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_updated_config = client.describe_domain_configuration(
							 | 
						||
| 
								 | 
							
								        domainConfigurationName="testConfig"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    described_updated_config.should_not.have.key("authorizerConfig")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_update_nonexistent_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(client.exceptions.ResourceNotFoundException) as exc:
							 | 
						||
| 
								 | 
							
								        client.update_domain_configuration(domainConfigurationName="doesntExist")
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("ResourceNotFoundException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal("The specified resource does not exist.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_list_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    client.create_domain_configuration(domainConfigurationName="testConfig1")
							 | 
						||
| 
								 | 
							
								    client.create_domain_configuration(domainConfigurationName="testConfig2")
							 | 
						||
| 
								 | 
							
								    domain_configs = client.list_domain_configurations()
							 | 
						||
| 
								 | 
							
								    domain_configs.should.have.key("domainConfigurations").which.should.have.length_of(
							 | 
						||
| 
								 | 
							
								        2
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    domain_configs["domainConfigurations"][0].should.have.key(
							 | 
						||
| 
								 | 
							
								        "domainConfigurationName"
							 | 
						||
| 
								 | 
							
								    ).which.should.equal("testConfig1")
							 | 
						||
| 
								 | 
							
								    domain_configs["domainConfigurations"][1].should.have.key(
							 | 
						||
| 
								 | 
							
								        "domainConfigurationName"
							 | 
						||
| 
								 | 
							
								    ).which.should.equal("testConfig2")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_delete_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    client.create_domain_configuration(domainConfigurationName="testConfig")
							 | 
						||
| 
								 | 
							
								    domain_configs = client.list_domain_configurations()
							 | 
						||
| 
								 | 
							
								    domain_configs.should.have.key("domainConfigurations").which.should.have.length_of(
							 | 
						||
| 
								 | 
							
								        1
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    client.delete_domain_configuration(domainConfigurationName="testConfig")
							 | 
						||
| 
								 | 
							
								    domain_configs = client.list_domain_configurations()
							 | 
						||
| 
								 | 
							
								    domain_configs.should.have.key("domainConfigurations").which.should.have.length_of(
							 | 
						||
| 
								 | 
							
								        0
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@mock_iot
							 | 
						||
| 
								 | 
							
								def test_delete_nonexistent_domain_configuration():
							 | 
						||
| 
								 | 
							
								    client = boto3.client("iot", region_name="us-east-1")
							 | 
						||
| 
								 | 
							
								    with pytest.raises(client.exceptions.ResourceNotFoundException) as exc:
							 | 
						||
| 
								 | 
							
								        client.delete_domain_configuration(domainConfigurationName="doesntExist")
							 | 
						||
| 
								 | 
							
								    err = exc.value.response["Error"]
							 | 
						||
| 
								 | 
							
								    err["Code"].should.equal("ResourceNotFoundException")
							 | 
						||
| 
								 | 
							
								    err["Message"].should.equal("The specified resource does not exist.")
							 |