예제 #1
0
def test_get_overrides_good_path(base):
    overrides = empty_override()
    overrides["CREATE"]["/foo/bar"] = {}

    path = base / "overrides.json"
    with path.open("w", encoding="utf-8") as f:
        json.dump(overrides, f)
    assert get_overrides(base) == {"CREATE": {("foo", "bar"): {}}}
예제 #2
0
def test_get_overrides_invalid_pointer_skipped(base):
    overrides = empty_override()
    overrides["CREATE"]["#/foo/bar"] = None

    path = base / "overrides.json"
    with path.open("w", encoding="utf-8") as f:
        json.dump(overrides, f)
    assert get_overrides(base) == EMPTY_OVERRIDE
예제 #3
0
def test_submit_dry_run(project):
    project.type_name = TYPE_NAME
    project.runtime = RUNTIME
    project.language = LANGUAGE
    zip_path = project.root / "test.zip"

    with project.schema_path.open("w", encoding="utf-8") as f:
        f.write(CONTENTS_UTF8)

    with project.overrides_path.open("w", encoding="utf-8") as f:
        f.write(json.dumps(empty_override()))

    project.write_settings()

    patch_plugin = patch.object(project, "_plugin", spec=LanguagePlugin)
    patch_upload = patch.object(project, "_upload", autospec=True)
    patch_path = patch("rpdk.core.project.Path", return_value=zip_path)
    patch_temp = patch("rpdk.core.project.TemporaryFile", autospec=True)

    # fmt: off
    # these context managers can't be wrapped by black, but it removes the \
    with patch_plugin as mock_plugin, patch_path as mock_path, \
            patch_temp as mock_temp, patch_upload as mock_upload:
        project.submit(True,
                       endpoint_url=ENDPOINT,
                       region_name=REGION,
                       role_arn=None,
                       use_role=True,
                       set_default=False)
    # fmt: on

    mock_temp.assert_not_called()
    mock_path.assert_called_once_with("{}.zip".format(project.hypenated_name))
    mock_plugin.package.assert_called_once_with(project, ANY)
    mock_upload.assert_not_called()

    with zipfile.ZipFile(zip_path, mode="r") as zip_file:
        assert set(zip_file.namelist()) == {
            SCHEMA_UPLOAD_FILENAME,
            SETTINGS_FILENAME,
            OVERRIDES_FILENAME,
        }
        schema_contents = zip_file.read(SCHEMA_UPLOAD_FILENAME).decode("utf-8")
        assert schema_contents == CONTENTS_UTF8
        settings = json.loads(zip_file.read(SETTINGS_FILENAME).decode("utf-8"))
        assert settings["runtime"] == RUNTIME
        overrides = json.loads(
            zip_file.read(OVERRIDES_FILENAME).decode("utf-8"))
        assert "CREATE" in overrides
        # https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.testzip
        assert zip_file.testzip() is None
예제 #4
0
from rpdk.core.contract.resource_client import (
    ResourceClient,
    override_properties,
    prune_properties,
    prune_properties_from_model,
    prune_properties_if_not_exist_in_path,
)
from rpdk.core.exceptions import InvalidProjectError
from rpdk.core.test import (
    DEFAULT_ENDPOINT,
    DEFAULT_FUNCTION,
    DEFAULT_REGION,
    empty_override,
)

EMPTY_OVERRIDE = empty_override()
ACCOUNT = "11111111"
LOG = logging.getLogger(__name__)

SCHEMA = {
    "properties": {
        "a": {
            "type": "number",
            "const": 1
        },
        "b": {
            "type": "number",
            "const": 2
        },
        "c": {
            "type": "number",
    DEFAULT_ENDPOINT,
    DEFAULT_FUNCTION,
    DEFAULT_REGION,
    _validate_sam_args,
    empty_hook_override,
    empty_override,
    get_hook_overrides,
    get_inputs,
    get_marker_options,
    get_overrides,
    temporary_ini_file,
)
from rpdk.core.utils.handler_utils import generate_handler_name

RANDOM_INI = "pytest_SOYPKR.ini"
EMPTY_RESOURCE_OVERRIDE = empty_override()
EMPTY_HOOK_OVERRIDE = empty_hook_override()
ROLE_ARN = "role_arn"
CREDENTIALS = {
    "AccessKeyId": object(),
    "SecretAccessKey": object(),
    "SessionToken": object(),
}

RESOURCE_SCHEMA = {
    "handlers": {generate_handler_name(action): []
                 for action in Action}
}
HOOK_SCHEMA = {
    "handlers": {
        generate_handler_name(invoke_point): []