206 lines
6.7 KiB
Python
206 lines
6.7 KiB
Python
import boto3
|
|
import pytest
|
|
from botocore.exceptions import ClientError
|
|
|
|
from moto import mock_opensearch
|
|
|
|
# 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_opensearch
|
|
def test_create_domain__minimal_options():
|
|
client = boto3.client("opensearch", region_name="eu-west-1")
|
|
status = client.create_domain(DomainName="testdn")["DomainStatus"]
|
|
assert "DomainId" in status
|
|
assert "DomainName" in status
|
|
assert status["DomainName"] == "testdn"
|
|
assert status["Endpoint"] is not None
|
|
assert "Endpoints" not in status
|
|
|
|
|
|
@mock_opensearch
|
|
def test_create_domain_in_vpc():
|
|
client = boto3.client("opensearch", region_name="eu-west-1")
|
|
status = client.create_domain(
|
|
DomainName="testdn", VPCOptions={"SubnetIds": ["sub1"]}
|
|
)["DomainStatus"]
|
|
assert "DomainId" in status
|
|
assert "DomainName" in status
|
|
assert status["DomainName"] == "testdn"
|
|
assert "Endpoint" not in status
|
|
assert status["Endpoints"] is not None
|
|
|
|
|
|
@mock_opensearch
|
|
def test_create_domain_with_some_options():
|
|
client = boto3.client("opensearch", region_name="eu-north-1")
|
|
status = client.create_domain(
|
|
DomainName="testdn",
|
|
DomainEndpointOptions={
|
|
"CustomEndpointEnabled": False,
|
|
"EnforceHTTPS": True,
|
|
"TLSSecurityPolicy": "Policy-Min-TLS-1-0-2019-07",
|
|
},
|
|
EBSOptions={"EBSEnabled": True, "VolumeSize": 10},
|
|
SnapshotOptions={"AutomatedSnapshotStartHour": 20},
|
|
EngineVersion="OpenSearch_1.1",
|
|
)["DomainStatus"]
|
|
assert status["Created"]
|
|
assert status["EngineVersion"] == "OpenSearch_1.1"
|
|
assert status["DomainEndpointOptions"] == {
|
|
"EnforceHTTPS": True,
|
|
"TLSSecurityPolicy": "Policy-Min-TLS-1-0-2019-07",
|
|
"CustomEndpointEnabled": False,
|
|
}
|
|
assert status["EBSOptions"] == {"EBSEnabled": True, "VolumeSize": 10}
|
|
assert status["SnapshotOptions"] == {"AutomatedSnapshotStartHour": 20}
|
|
|
|
|
|
@mock_opensearch
|
|
def test_get_compatible_versions():
|
|
client = boto3.client("opensearch", region_name="us-east-2")
|
|
client.create_domain(DomainName="testdn")
|
|
|
|
versions = client.get_compatible_versions(DomainName="testdn")["CompatibleVersions"]
|
|
assert len(versions) == 22
|
|
|
|
|
|
@mock_opensearch
|
|
def test_get_compatible_versions_unknown_domain():
|
|
client = boto3.client("opensearch", region_name="us-east-2")
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
client.get_compatible_versions(DomainName="testdn")
|
|
err = exc.value.response["Error"]
|
|
assert err["Code"] == "ResourceNotFoundException"
|
|
assert err["Message"] == "Domain not found: testdn"
|
|
|
|
|
|
@mock_opensearch
|
|
def test_describe_unknown_domain():
|
|
client = boto3.client("opensearch", region_name="eu-west-1")
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
client.describe_domain(DomainName="testdn")
|
|
err = exc.value.response["Error"]
|
|
assert err["Code"] == "ResourceNotFoundException"
|
|
assert err["Message"] == "Domain not found: testdn"
|
|
|
|
|
|
@mock_opensearch
|
|
def test_describe_domain():
|
|
client = boto3.client("opensearch", region_name="eu-west-1")
|
|
client.create_domain(DomainName="testdn")
|
|
|
|
status = client.describe_domain(DomainName="testdn")["DomainStatus"]
|
|
assert "DomainId" in status
|
|
assert "DomainName" in status
|
|
assert status["DomainName"] == "testdn"
|
|
|
|
|
|
@mock_opensearch
|
|
def test_delete_domain():
|
|
client = boto3.client("opensearch", region_name="eu-west-1")
|
|
client.create_domain(DomainName="testdn")
|
|
client.delete_domain(DomainName="testdn")
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
client.describe_domain(DomainName="testdn")
|
|
err = exc.value.response["Error"]
|
|
assert err["Code"] == "ResourceNotFoundException"
|
|
assert err["Message"] == "Domain not found: testdn"
|
|
|
|
|
|
@mock_opensearch
|
|
def test_update_domain_config():
|
|
client = boto3.client("opensearch", region_name="eu-north-1")
|
|
client.create_domain(
|
|
DomainName="testdn",
|
|
DomainEndpointOptions={
|
|
"CustomEndpointEnabled": False,
|
|
"EnforceHTTPS": True,
|
|
"TLSSecurityPolicy": "Policy-Min-TLS-1-0-2019-07",
|
|
},
|
|
EBSOptions={"EBSEnabled": True, "VolumeSize": 10},
|
|
EngineVersion="OpenSearch 1.1",
|
|
)
|
|
|
|
config = client.update_domain_config(
|
|
DomainName="testdn",
|
|
EBSOptions={"EBSEnabled": False},
|
|
)["DomainConfig"]
|
|
|
|
assert config["EBSOptions"] == {"Options": {"EBSEnabled": False}}
|
|
assert config["DomainEndpointOptions"] == {
|
|
"Options": {
|
|
"EnforceHTTPS": True,
|
|
"TLSSecurityPolicy": "Policy-Min-TLS-1-0-2019-07",
|
|
"CustomEndpointEnabled": False,
|
|
}
|
|
}
|
|
|
|
|
|
@mock_opensearch
|
|
def test_list_domain_names():
|
|
client = boto3.client("opensearch", region_name="ap-southeast-1")
|
|
|
|
test_domain_names_list_exist = False
|
|
|
|
opensearch_domain_name = "testdn"
|
|
opensearch_engine_version = "OpenSearch_1.0"
|
|
client.create_domain(
|
|
DomainName=opensearch_domain_name, EngineVersion=opensearch_engine_version
|
|
)
|
|
|
|
resp = client.list_domain_names()
|
|
domain_names = resp["DomainNames"]
|
|
|
|
for domain_name in domain_names:
|
|
if domain_name["DomainName"] == opensearch_domain_name:
|
|
test_domain_names_list_exist = True
|
|
|
|
assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200
|
|
assert test_domain_names_list_exist
|
|
|
|
|
|
@mock_opensearch
|
|
def test_list_filtered_domain_names():
|
|
client = boto3.client("opensearch", region_name="ap-southeast-1")
|
|
|
|
test_domain_names_list_exist = False
|
|
|
|
opensearch_domain_name = "testdn"
|
|
opensearch_engine_version = "OpenSearch_1.0"
|
|
client.create_domain(
|
|
DomainName=opensearch_domain_name, EngineVersion=opensearch_engine_version
|
|
)
|
|
|
|
resp = client.list_domain_names(EngineType="OpenSearch")
|
|
domain_names = resp["DomainNames"]
|
|
|
|
for domain_name in domain_names:
|
|
if domain_name["DomainName"] == opensearch_domain_name:
|
|
if domain_name["EngineType"] == opensearch_engine_version.split("_")[0]:
|
|
test_domain_names_list_exist = True
|
|
|
|
assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200
|
|
assert test_domain_names_list_exist
|
|
|
|
|
|
@mock_opensearch
|
|
def test_list_unknown_domain_names_engine_type():
|
|
client = boto3.client("opensearch", region_name="ap-southeast-1")
|
|
|
|
opensearch_domain_name = "testdn"
|
|
opensearch_engine_version = "OpenSearch_1.0"
|
|
client.create_domain(
|
|
DomainName=opensearch_domain_name, EngineVersion=opensearch_engine_version
|
|
)
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
client.list_domain_names(EngineType="unknown")
|
|
err = exc.value.response["Error"]
|
|
assert err["Code"] == "EngineTypeNotFoundException"
|
|
assert err["Message"] == "Engine Type not found: testdn"
|