1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
import boto3
import pytest
from botocore.exceptions import ClientError
from moto import mock_aws
# See our Development Tips on writing tests for hints on how to write good tests:
# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
@mock_aws
def test_create_db_cluster():
client = boto3.client("neptune", region_name="us-east-2")
resp = client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")[
"DBCluster"
]
assert resp["DBClusterIdentifier"] == "cluster-id"
assert "DbClusterResourceId" in resp
assert "DBClusterArn" in resp
assert resp["Engine"] == "neptune"
assert "EngineVersion" in resp
assert resp["StorageEncrypted"] is False
assert resp["DBClusterParameterGroup"].startswith("default.neptune")
assert "Endpoint" in resp
assert "cluster-" in resp["DbClusterResourceId"]
assert resp["AvailabilityZones"] == ["us-east-2a", "us-east-2b", "us-east-2c"]
assert "ServerlessV2ScalingConfiguration" not in resp
# Double check this cluster is not available in another region
europe_client = boto3.client("neptune", region_name="eu-west-2")
assert len(europe_client.describe_db_clusters()["DBClusters"]) == 0
@mock_aws
def test_create_db_cluster__with_additional_params():
client = boto3.client("neptune", region_name="us-east-1")
resp = client.create_db_cluster(
DBClusterIdentifier="cluster-id",
Engine="neptune",
EngineVersion="1.1.0.1",
StorageEncrypted=False,
DBClusterParameterGroupName="myprm",
KmsKeyId="key",
ServerlessV2ScalingConfiguration={"MinCapacity": 1.0, "MaxCapacity": 2.0},
DatabaseName="sth",
)["DBCluster"]
assert resp["StorageEncrypted"] is False
assert resp["DBClusterParameterGroup"] == "myprm"
assert resp["EngineVersion"] == "1.1.0.1"
assert resp["KmsKeyId"] == "key"
assert resp["ServerlessV2ScalingConfiguration"] == {
"MinCapacity": 1.0,
"MaxCapacity": 2.0,
}
assert resp["DatabaseName"] == "sth"
@mock_aws
def test_create_db_cluster_with_instance():
client = boto3.client("neptune", region_name="us-east-2")
resp = client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")[
"DBCluster"
]
client.create_db_instance(
DBInstanceIdentifier="instance-id",
DBClusterIdentifier="cluster-id",
Engine="neptune",
DBInstanceClass="db.r5.large",
)
resp = client.describe_db_instances(DBInstanceIdentifier="instance-id")[
"DBInstances"
]
assert resp[0]["DBInstanceIdentifier"] == "instance-id"
assert resp[0]["DBInstanceClass"] == "db.r5.large"
assert resp[0]["DBClusterIdentifier"] == "cluster-id"
assert resp[0]["Engine"] == "neptune"
assert resp[0]["EngineVersion"] == "1.3.2.1"
@mock_aws
def test_describe_db_clusters():
client = boto3.client("neptune", region_name="ap-southeast-1")
assert client.describe_db_clusters()["DBClusters"] == []
client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")
clusters = client.describe_db_clusters(DBClusterIdentifier="cluster-id")[
"DBClusters"
]
assert len(clusters) == 1
assert clusters[0]["DBClusterIdentifier"] == "cluster-id"
assert clusters[0]["Engine"] == "neptune"
@mock_aws
def test_delete_db_cluster():
client = boto3.client("neptune", region_name="ap-southeast-1")
client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")
client.delete_db_cluster(DBClusterIdentifier="cluster-id")
assert client.describe_db_clusters()["DBClusters"] == []
@mock_aws
def test_remove_db_instance():
client = boto3.client("neptune", region_name="us-east-2")
client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")[
"DBCluster"
]
client.create_db_instance(
DBInstanceIdentifier="instance-id",
DBClusterIdentifier="cluster-id",
Engine="neptune",
DBInstanceClass="db.r5.large",
)
cluster = client.describe_db_clusters()["DBClusters"][0]
assert "DBClusterMembers" in cluster
assert len(cluster["DBClusterMembers"]) == 1
client.delete_db_instance(
DBInstanceIdentifier="instance-id",
SkipFinalSnapshot=True,
)
cluster = client.describe_db_clusters()["DBClusters"][0]
assert "DBClusterMembers" in cluster
assert len(cluster["DBClusterMembers"]) == 0
@mock_aws
def test_delete_unknown_db_cluster():
client = boto3.client("neptune", region_name="ap-southeast-1")
with pytest.raises(ClientError) as exc:
client.delete_db_cluster(DBClusterIdentifier="unknown-id")
err = exc.value.response["Error"]
assert err["Code"] == "DBClusterNotFoundFault"
@mock_aws
def test_modify_db_cluster():
client = boto3.client("neptune", region_name="us-east-1")
client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")
resp = client.modify_db_cluster(
DBClusterIdentifier="cluster-id",
EngineVersion="1.1.0.1",
DBClusterParameterGroupName="myprm",
PreferredBackupWindow="window",
)["DBCluster"]
assert resp["DBClusterParameterGroup"] == "myprm"
assert resp["EngineVersion"] == "1.1.0.1"
assert resp["PreferredBackupWindow"] == "window"
@mock_aws
def test_start_db_cluster():
client = boto3.client("neptune", region_name="us-east-2")
client.create_db_cluster(DBClusterIdentifier="cluster-id", Engine="neptune")
client.stop_db_cluster(DBClusterIdentifier="cluster-id")
cluster = client.start_db_cluster(DBClusterIdentifier="cluster-id")["DBCluster"]
assert cluster["Status"] == "started"
|