Skip to content

Commit 89ade22

Browse files
GrahamCampbellstof
andauthored
Upgrade localstack (#1604)
* Upgrade localstack * Fix the dynamodb integration tests The new localstack version emulates AWS better, returning a consumed capacity only when the request asks for it. * Update the Sts integration test for the new localstack return values * Update the route53 expectation for the listing endpoint In the new localstack version, creating a zone automatically creates the NS and SOA records for that zone, emulating what actually happens on AWS. * Switch to 3.0.0 * Skip bad test for now --------- Co-authored-by: Christophe Coevoet <[email protected]>
1 parent 774e8cf commit 89ade22

File tree

15 files changed

+33
-27
lines changed

15 files changed

+33
-27
lines changed

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ $(SUBINITIALIZE): %.initialize:
1717

1818
start-docker: start-docker-s3 start-docker-kms start-docker-localstack
1919
start-docker-localstack:
20-
docker pull localstack/localstack:0.14.2
20+
docker pull localstack/localstack:3.0.0
2121
docker start async_aws_localstack && exit 0 || \
22-
docker run -d -p 4566:4566 -p 4567:4566 -p 4568:4566 -p 4571:4566 -p 4572:4566 -p 4573:4566 -p 4574:4566 -p 4575:4566 -p 4576:4566 -p 4577:4566 -p 4578:4566 -e SERVICES=sts,cloudformation,logs,events,iam,sns,ssm,dynamodb,route53,kinesis,secretsmanager -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack localstack/localstack:0.14.2 && \
22+
docker run -d -p 4566:4566 -p 4567:4566 -p 4568:4566 -p 4571:4566 -p 4572:4566 -p 4573:4566 -p 4574:4566 -p 4575:4566 -p 4576:4566 -p 4577:4566 -p 4578:4566 -e SERVICES=sts,cloudformation,logs,events,iam,sns,ssm,dynamodb,route53,kinesis,secretsmanager -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack localstack/localstack:3.0.0 && \
2323
docker run --rm --link async_aws_localstack:localstack martin/wait -c localstack:4566
2424
start-docker-s3:
2525
docker pull asyncaws/testing-s3

src/Core/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-sts && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4566:4566 -e SERVICES=sts -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-sts localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4566:4566 -e SERVICES=sts -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-sts localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-sts:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Core/tests/Integration/StsClientTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public function testAssumeRoleWithWebIdentity(): void
6565
self::assertNotNull($result->getCredentials());
6666
self::assertLessThanOrEqual(new \DateTime('+5min'), $result->getCredentials()->getExpiration());
6767
self::assertNotNull($result->getAssumedRoleUser());
68-
self::assertSame('arn:aws:sts::000000000000:assumed-role/FederatedWebIdentityRole/app1', $result->getAssumedRoleUser()->getArn());
68+
self::assertSame('arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/app1', $result->getAssumedRoleUser()->getArn());
6969
self::assertSame(6, $result->getPackedPolicySize());
7070
}
7171

@@ -78,7 +78,7 @@ public function testGetCallerIdentity(): void
7878

7979
self::assertNotNull($result->getUserId());
8080
self::assertStringContainsString('000000000000', $result->getAccount());
81-
self::assertStringContainsString('arn:aws:sts::000000000000:user/localstack', $result->getArn());
81+
self::assertStringContainsString('arn:aws:iam::000000000000:root', $result->getArn());
8282
}
8383

8484
public function testNonAwsRegionWithCustomEndpoint(): void

src/Service/CloudFormation/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-cloudformation && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4567:4566 -e SERVICES=cloudformation -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-cloudformation localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4567:4566 -e SERVICES=cloudformation -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-cloudformation localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-cloudformation:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/CloudWatchLogs/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-logs && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4568:4566 -e SERVICES=logs -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-logs localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4568:4566 -e SERVICES=logs -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-logs localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-logs:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/DynamoDb/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-dynamodb && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4575:4566 -e SERVICES=dynamodb -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-dynamodb localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4575:4566 -e SERVICES=dynamodb -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-dynamodb localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-dynamodb:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/DynamoDb/tests/Integration/DynamoDbClientTest.php

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use AsyncAws\DynamoDb\DynamoDbClient;
88
use AsyncAws\DynamoDb\Enum\KeyType;
99
use AsyncAws\DynamoDb\Enum\ProjectionType;
10+
use AsyncAws\DynamoDb\Enum\ReturnConsumedCapacity;
1011
use AsyncAws\DynamoDb\Input\BatchGetItemInput;
1112
use AsyncAws\DynamoDb\Input\BatchWriteItemInput;
1213
use AsyncAws\DynamoDb\Input\CreateTableInput;
@@ -348,9 +349,11 @@ public function testPutItem(): void
348349
'Subject' => ['S' => 'How do I update multiple items?'],
349350
'LastPostedBy' => ['S' => '[email protected]'],
350351
],
352+
'ReturnConsumedCapacity' => ReturnConsumedCapacity::INDEXES,
351353
]);
352354

353355
$result = $client->putItem($input);
356+
self::assertNotNull($result->getConsumedCapacity());
354357
self::assertSame(1.0, $result->getConsumedCapacity()->getCapacityUnits());
355358
}
356359

src/Service/EventBridge/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-events && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4571:4566 -e SERVICES=events -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-events localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4571:4566 -e SERVICES=events -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-events localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-events:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/Iam/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-iam && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4572:4566 -e SERVICES=iam -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-iam localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4572:4566 -e SERVICES=iam -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-iam localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-iam:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/Kinesis/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-kinesis && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4578:4566 -e SERVICES=kinesis -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-kinesis localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4578:4566 -e SERVICES=kinesis -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-kinesis localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-kinesis:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/Route53/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-route53 && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4576:4566 -e SERVICES=route53 -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-route53 localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4576:4566 -e SERVICES=route53 -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-route53 localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-route53:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/Route53/tests/Integration/Route53ClientTest.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ public function testChangeResourceRecordSets(): void
8080

8181
public function testCreateHostedZone(): void
8282
{
83+
self::markTestSkipped('Localstack does not implement this operation correctly');
84+
8385
$client = $this->getClient();
8486

8587
$this->deleteZone('test-domain.com.');
@@ -221,7 +223,8 @@ public function testListResourceRecordSets(): void
221223

222224
$result->resolve();
223225

224-
self::assertCount(2, iterator_to_array($result->getResourceRecordSets()));
226+
// Creating a zone automatically creates NS and SOA records, and we added 2 records above.
227+
self::assertCount(4, iterator_to_array($result->getResourceRecordSets()));
225228
self::assertFalse($result->getIsTruncated());
226229
self::assertNull($result->getNextRecordName());
227230
}

src/Service/SecretsManager/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-secretsmanager && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4577:4566 -e SERVICES=secretsmanager -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-secretsmanager localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4577:4566 -e SERVICES=secretsmanager -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-secretsmanager localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-secretsmanager:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/Sns/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-sns && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4573:4566 -e SERVICES=sns -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-sns localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4573:4566 -e SERVICES=sns -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-sns localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-sns:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

src/Service/Ssm/Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ initialize: start-docker
44
start-docker:
55
docker start async_aws_localstack && exit 0 || \
66
docker start async_aws_localstack-ssm && exit 0 || \
7-
docker pull localstack/localstack:0.14.2 && \
8-
docker run -d -p 4574:4566 -e SERVICES=ssm -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-ssm localstack/localstack:0.14.2 && \
7+
docker pull localstack/localstack:3.0.0 && \
8+
docker run -d -p 4574:4566 -e SERVICES=ssm -v /var/run/docker.sock:/var/run/docker.sock --name async_aws_localstack-ssm localstack/localstack:3.0.0 && \
99
docker run --rm --link async_aws_localstack-ssm:localstack martin/wait -c localstack:4566
1010

1111
test: initialize

0 commit comments

Comments
 (0)