| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | import pytest | 
					
						
							|  |  |  | from botocore.exceptions import ClientError | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 16:17:31 +01:00
										 |  |  | from moto import mock_mediastore | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | region = "eu-west-1" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_create_container_succeeds(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     response = client.create_container( | 
					
						
							|  |  |  |         ContainerName="Awesome container!", Tags=[{"Key": "customer"}] | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  |     container = response["Container"] | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert container["ARN"] == f"arn:aws:mediastore:container:{container['Name']}" | 
					
						
							|  |  |  |     assert container["Name"] == "Awesome container!" | 
					
						
							|  |  |  |     assert container["Status"] == "CREATING" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_describe_container_succeeds(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "Awesome container!" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name, Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.describe_container(ContainerName=name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  |     container = response["Container"] | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert container["ARN"] == f"arn:aws:mediastore:container:{name}" | 
					
						
							|  |  |  |     assert container["Name"] == name | 
					
						
							|  |  |  |     assert container["Status"] == "ACTIVE" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_list_containers_succeeds(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "Awesome container!" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name, Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  |     containers = client.list_containers()["Containers"] | 
					
						
							|  |  |  |     assert len(containers) == 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.create_container(ContainerName=f"{name}2", Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  |     containers = client.list_containers()["Containers"] | 
					
						
							|  |  |  |     assert len(containers) == 2 | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_describe_container_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.describe_container(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_put_lifecycle_policy_succeeds(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "container-name" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name, Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.put_lifecycle_policy(ContainerName=name, LifecyclePolicy="lifecycle-policy") | 
					
						
							|  |  |  |     response = client.get_lifecycle_policy(ContainerName=name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  |     assert response["LifecyclePolicy"] == "lifecycle-policy" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_put_lifecycle_policy_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |         client.put_lifecycle_policy(ContainerName="name", LifecyclePolicy="policy") | 
					
						
							|  |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_get_lifecycle_policy_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.get_lifecycle_policy(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_get_lifecycle_policy_raises_error_if_container_does_not_have_lifecycle_policy(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     client.create_container(ContainerName="container-name", Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.get_lifecycle_policy(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "PolicyNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_put_container_policy_succeeds(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "container-name" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     client.put_container_policy(ContainerName=name, Policy="container-policy") | 
					
						
							|  |  |  |     response = client.get_container_policy(ContainerName=name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  |     assert response["Policy"] == "container-policy" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_put_container_policy_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |         client.put_container_policy(ContainerName="name", Policy="policy") | 
					
						
							|  |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_get_container_policy_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.get_container_policy(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_get_container_policy_raises_error_if_container_does_not_have_container_policy(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     client.create_container(ContainerName="container-name", Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.get_container_policy(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "PolicyNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_put_metric_policy_succeeds(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "container-name" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name) | 
					
						
							|  |  |  |     client.put_metric_policy( | 
					
						
							|  |  |  |         ContainerName=name, | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  |         MetricPolicy={"ContainerLevelMetrics": "ENABLED"}, | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     response = client.get_metric_policy(ContainerName=name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  |     assert response["MetricPolicy"] == {"ContainerLevelMetrics": "ENABLED"} | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_put_metric_policy_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.put_metric_policy( | 
					
						
							|  |  |  |             ContainerName="container-name", | 
					
						
							|  |  |  |             MetricPolicy={"ContainerLevelMetrics": "ENABLED"}, | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_get_metric_policy_raises_error_if_container_does_not_exist(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.get_metric_policy(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ResourceNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-04-08 16:51:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_get_metric_policy_raises_error_if_container_does_not_have_metric_policy(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     client.create_container(ContainerName="container-name", Tags=[{"Key": "customer"}]) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.get_metric_policy(ContainerName="container-name") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "PolicyNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-05-20 16:17:31 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_list_tags_for_resource(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     tags = [{"Key": "customer"}] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "Awesome container!" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name, Tags=tags) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.list_tags_for_resource(Resource=name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  |     assert response["Tags"] == tags | 
					
						
							| 
									
										
										
										
											2021-05-20 16:17:31 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_list_tags_for_resource_return_none_if_no_tags(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     name = "Awesome container!" | 
					
						
							|  |  |  |     client.create_container(ContainerName=name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.list_tags_for_resource(Resource=name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  |     assert response.get("Tags") is None | 
					
						
							| 
									
										
										
										
											2021-05-20 16:17:31 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-28 13:23:23 +01:00
										 |  |  | @mock_mediastore | 
					
						
							| 
									
										
										
										
											2021-08-21 16:33:15 +01:00
										 |  |  | def test_list_tags_for_resource_return_error_for_unknown_resource(): | 
					
						
							| 
									
										
										
										
											2021-06-28 13:23:23 +01:00
										 |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.list_tags_for_resource(Resource="not_existing") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ContainerNotFoundException" | 
					
						
							| 
									
										
										
										
											2021-06-28 13:23:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 16:17:31 +01:00
										 |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_delete_container(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     container_name = "Awesome container!" | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     client.create_container(ContainerName=container_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = client.delete_container(ContainerName=container_name) | 
					
						
							|  |  |  |     assert response["ResponseMetadata"]["HTTPStatusCode"] == 200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     containers = client.list_containers()["Containers"] | 
					
						
							|  |  |  |     assert not any(d["Name"] == container_name for d in containers) | 
					
						
							| 
									
										
										
										
											2021-05-20 16:17:31 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_mediastore | 
					
						
							|  |  |  | def test_delete_container_raise_error_if_container_not_found(): | 
					
						
							|  |  |  |     client = boto3.client("mediastore", region_name=region) | 
					
						
							|  |  |  |     client.create_container(ContainerName="Awesome container!") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     with pytest.raises(ClientError) as ex: | 
					
						
							|  |  |  |         client.delete_container(ContainerName="notAvailable") | 
					
						
							| 
									
										
										
										
											2023-08-13 20:17:54 +00:00
										 |  |  |     assert ex.value.response["Error"]["Code"] == "ContainerNotFoundException" |