from __future__ import unicode_literals import boto3 from freezegun import freeze_time import sure # noqa import re from moto import mock_opsworks @freeze_time("2015-01-01") @mock_opsworks def test_create_app_response(): client = boto3.client("opsworks", region_name="us-east-1") stack_id = client.create_stack( Name="test_stack_1", Region="us-east-1", ServiceRoleArn="service_arn", DefaultInstanceProfileArn="profile_arn", )["StackId"] response = client.create_app(StackId=stack_id, Type="other", Name="TestApp") response.should.contain("AppId") second_stack_id = client.create_stack( Name="test_stack_2", Region="us-east-1", ServiceRoleArn="service_arn", DefaultInstanceProfileArn="profile_arn", )["StackId"] response = client.create_app(StackId=second_stack_id, Type="other", Name="TestApp") response.should.contain("AppId") # ClientError client.create_app.when.called_with( StackId=stack_id, Type="other", Name="TestApp" ).should.throw(Exception, re.compile(r'already an app named "TestApp"')) # ClientError client.create_app.when.called_with( StackId="nothere", Type="other", Name="TestApp" ).should.throw(Exception, "nothere") @freeze_time("2015-01-01") @mock_opsworks def test_describe_apps(): client = boto3.client("opsworks", region_name="us-east-1") stack_id = client.create_stack( Name="test_stack_1", Region="us-east-1", ServiceRoleArn="service_arn", DefaultInstanceProfileArn="profile_arn", )["StackId"] app_id = client.create_app(StackId=stack_id, Type="other", Name="TestApp")["AppId"] rv1 = client.describe_apps(StackId=stack_id) rv2 = client.describe_apps(AppIds=[app_id]) rv1["Apps"].should.equal(rv2["Apps"]) rv1["Apps"][0]["Name"].should.equal("TestApp") # ClientError client.describe_apps.when.called_with( StackId=stack_id, AppIds=[app_id] ).should.throw(Exception, "Please provide one or more app IDs or a stack ID") # ClientError client.describe_apps.when.called_with(StackId="nothere").should.throw( Exception, "Unable to find stack with ID nothere" ) # ClientError client.describe_apps.when.called_with(AppIds=["nothere"]).should.throw( Exception, "nothere" )