2021-04-08 15:51:50 +00:00
|
|
|
import boto3
|
|
|
|
import pytest
|
|
|
|
from botocore.exceptions import ClientError
|
|
|
|
|
2021-05-20 15:17:31 +00:00
|
|
|
from moto import mock_mediastore
|
|
|
|
|
2021-04-08 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:51:50 +00: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 15:17:31 +00: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 15:17:31 +00: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 15:17:31 +00:00
|
|
|
|
|
|
|
|
2021-06-28 12:23:23 +00:00
|
|
|
@mock_mediastore
|
2021-08-21 15:33:15 +00:00
|
|
|
def test_list_tags_for_resource_return_error_for_unknown_resource():
|
2021-06-28 12:23:23 +00: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 12:23:23 +00:00
|
|
|
|
|
|
|
|
2021-05-20 15:17:31 +00: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 15:17:31 +00: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"
|