diff --git a/moto/apigateway/responses.py b/moto/apigateway/responses.py index 37d6378a0..30fed63cd 100644 --- a/moto/apigateway/responses.py +++ b/moto/apigateway/responses.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import json +from moto.utilities.utils import merge_multiple_dicts from moto.core.responses import BaseResponse from .models import apigateway_backends from .exceptions import ( @@ -363,6 +364,24 @@ class APIGatewayResponse(BaseResponse): return 200, {}, json.dumps(stage_response) + def restapis_stages_tags(self, request, full_url, headers): + self.setup_class(request, full_url, headers) + url_path_parts = self.path.split("/") + function_id = url_path_parts[4] + stage_name = url_path_parts[6] + if self.method == "PUT": + tags = self._get_param("tags") + if tags: + stage = self.backend.get_stage(function_id, stage_name) + stage["tags"] = merge_multiple_dicts(stage.get("tags"), tags) + return 200, {}, json.dumps({"item": tags}) + if self.method == "DELETE": + stage = self.backend.get_stage(function_id, stage_name) + for tag in stage.get("tags").copy(): + if tag in self.querystring.get("tagKeys"): + stage["tags"].pop(tag, None) + return 200, {}, json.dumps({"item": ""}) + def stages(self, request, full_url, headers): self.setup_class(request, full_url, headers) url_path_parts = self.path.split("/") diff --git a/moto/apigateway/urls.py b/moto/apigateway/urls.py index 5d0271f65..b6cc567a3 100644 --- a/moto/apigateway/urls.py +++ b/moto/apigateway/urls.py @@ -12,6 +12,7 @@ url_paths = { "{0}/restapis/(?P[^/]+)/authorizers$": response.restapis_authorizers, "{0}/restapis/(?P[^/]+)/authorizers/(?P[^/]+)/?$": response.authorizers, "{0}/restapis/(?P[^/]+)/stages$": response.restapis_stages, + "{0}/tags/arn:aws:apigateway:(?P[^/]+)::/restapis/(?P[^/]+)/stages/(?P[^/]+)/?$": response.restapis_stages_tags, "{0}/restapis/(?P[^/]+)/stages/(?P[^/]+)/?$": response.stages, "{0}/restapis/(?P[^/]+)/deployments$": response.deployments, "{0}/restapis/(?P[^/]+)/deployments/(?P[^/]+)/?$": response.individual_deployment, diff --git a/tests/terraform-tests.success.txt b/tests/terraform-tests.success.txt index 1578b48fa..c916cdc6f 100644 --- a/tests/terraform-tests.success.txt +++ b/tests/terraform-tests.success.txt @@ -78,6 +78,9 @@ TestAccAWSUserPolicyAttachment TestAccAWSUserSSHKey TestAccAWSVpc_ TestAccAWSRouteTable_disappears +TestAccAWSAPIGatewayStage_basic +TestAccAWSAPIGatewayStage_accessLogSettings_kinesis +TestAccAWSAPIGatewayStage_accessLogSettings TestAccAWSRouteTable_RequireRouteTarget TestAccAWSRouteTable_Route_ConfigMode TestAccAWSRouteTable_tags