List dependencies for services - add integration test to verify
This commit is contained in:
parent
9f0f230d13
commit
db1d7123f6
41 changed files with 1405 additions and 1245 deletions
|
|
@ -7,12 +7,11 @@ import botocore.exceptions
|
|||
import sure # noqa
|
||||
import datetime
|
||||
import uuid
|
||||
import json
|
||||
|
||||
from botocore.exceptions import ClientError, ParamValidationError
|
||||
from nose.tools import assert_raises
|
||||
|
||||
from moto import mock_ssm, mock_cloudformation
|
||||
from moto import mock_ssm
|
||||
|
||||
|
||||
@mock_ssm
|
||||
|
|
@ -1714,68 +1713,3 @@ def test_get_command_invocation():
|
|||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id, InstanceId=instance_id, PluginName="FAKE"
|
||||
)
|
||||
|
||||
|
||||
@mock_ssm
|
||||
@mock_cloudformation
|
||||
def test_get_command_invocations_from_stack():
|
||||
stack_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Test Stack",
|
||||
"Resources": {
|
||||
"EC2Instance1": {
|
||||
"Type": "AWS::EC2::Instance",
|
||||
"Properties": {
|
||||
"ImageId": "ami-test-image-id",
|
||||
"KeyName": "test",
|
||||
"InstanceType": "t2.micro",
|
||||
"Tags": [
|
||||
{"Key": "Test Description", "Value": "Test tag"},
|
||||
{"Key": "Test Name", "Value": "Name tag for tests"},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
"Outputs": {
|
||||
"test": {
|
||||
"Description": "Test Output",
|
||||
"Value": "Test output value",
|
||||
"Export": {"Name": "Test value to export"},
|
||||
},
|
||||
"PublicIP": {"Value": "Test public ip"},
|
||||
},
|
||||
}
|
||||
|
||||
cloudformation_client = boto3.client("cloudformation", region_name="us-east-1")
|
||||
|
||||
stack_template_str = json.dumps(stack_template)
|
||||
|
||||
response = cloudformation_client.create_stack(
|
||||
StackName="test_stack",
|
||||
TemplateBody=stack_template_str,
|
||||
Capabilities=("CAPABILITY_IAM",),
|
||||
)
|
||||
|
||||
client = boto3.client("ssm", region_name="us-east-1")
|
||||
|
||||
ssm_document = "AWS-RunShellScript"
|
||||
params = {"commands": ["#!/bin/bash\necho 'hello world'"]}
|
||||
|
||||
response = client.send_command(
|
||||
Targets=[
|
||||
{"Key": "tag:aws:cloudformation:stack-name", "Values": ("test_stack",)}
|
||||
],
|
||||
DocumentName=ssm_document,
|
||||
Parameters=params,
|
||||
OutputS3Region="us-east-2",
|
||||
OutputS3BucketName="the-bucket",
|
||||
OutputS3KeyPrefix="pref",
|
||||
)
|
||||
|
||||
cmd = response["Command"]
|
||||
cmd_id = cmd["CommandId"]
|
||||
instance_ids = cmd["InstanceIds"]
|
||||
|
||||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id, InstanceId=instance_ids[0], PluginName="aws:runShellScript"
|
||||
)
|
||||
|
|
|
|||
70
tests/test_ssm/test_ssm_cloudformation.py
Normal file
70
tests/test_ssm/test_ssm_cloudformation.py
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
import boto3
|
||||
import json
|
||||
|
||||
|
||||
from moto import mock_ssm, mock_cloudformation
|
||||
|
||||
|
||||
@mock_ssm
|
||||
@mock_cloudformation
|
||||
def test_get_command_invocations_from_stack():
|
||||
stack_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Test Stack",
|
||||
"Resources": {
|
||||
"EC2Instance1": {
|
||||
"Type": "AWS::EC2::Instance",
|
||||
"Properties": {
|
||||
"ImageId": "ami-test-image-id",
|
||||
"KeyName": "test",
|
||||
"InstanceType": "t2.micro",
|
||||
"Tags": [
|
||||
{"Key": "Test Description", "Value": "Test tag"},
|
||||
{"Key": "Test Name", "Value": "Name tag for tests"},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
"Outputs": {
|
||||
"test": {
|
||||
"Description": "Test Output",
|
||||
"Value": "Test output value",
|
||||
"Export": {"Name": "Test value to export"},
|
||||
},
|
||||
"PublicIP": {"Value": "Test public ip"},
|
||||
},
|
||||
}
|
||||
|
||||
cloudformation_client = boto3.client("cloudformation", region_name="us-east-1")
|
||||
|
||||
stack_template_str = json.dumps(stack_template)
|
||||
|
||||
response = cloudformation_client.create_stack(
|
||||
StackName="test_stack",
|
||||
TemplateBody=stack_template_str,
|
||||
Capabilities=("CAPABILITY_IAM",),
|
||||
)
|
||||
|
||||
client = boto3.client("ssm", region_name="us-east-1")
|
||||
|
||||
ssm_document = "AWS-RunShellScript"
|
||||
params = {"commands": ["#!/bin/bash\necho 'hello world'"]}
|
||||
|
||||
response = client.send_command(
|
||||
Targets=[
|
||||
{"Key": "tag:aws:cloudformation:stack-name", "Values": ("test_stack",)}
|
||||
],
|
||||
DocumentName=ssm_document,
|
||||
Parameters=params,
|
||||
OutputS3Region="us-east-2",
|
||||
OutputS3BucketName="the-bucket",
|
||||
OutputS3KeyPrefix="pref",
|
||||
)
|
||||
|
||||
cmd = response["Command"]
|
||||
cmd_id = cmd["CommandId"]
|
||||
instance_ids = cmd["InstanceIds"]
|
||||
|
||||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id, InstanceId=instance_ids[0], PluginName="aws:runShellScript"
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue