def test_remove_extension(): exp = experiments.Experiment.copy() set_extension(exp, {"name": "myext", "somekey": "blah"}) assert get_extension(exp, "myext") is not None remove_extension(exp, "myext") assert get_extension(exp, "myext") is None
def test_get_extension(): exp = experiments.Experiment.copy() set_extension(exp, {"name": "myext", "somekey": "blah"}) ext = get_extension(exp, "myext") assert ext is not None assert ext["somekey"] == "blah"
def test_merge_extension(): exp = experiments.Experiment.copy() set_extension(exp, {"name": "myext", "somekey": "blah"}) ext = get_extension(exp, "myext") assert ext is not None assert ext["somekey"] == "blah" merge_extension(exp, { "name": "myext", "somekey": "burp", "otherkey": "oneday" }) ext = get_extension(exp, "myext") assert ext is not None assert ext["somekey"] == "burp" assert ext["otherkey"] == "oneday"
def get_context(experiment: Experiment, source: str, org: str, workspace: str, settings: Settings) -> Context: """ Load the current Chaos Hub context from the given parameters, in the following order (higher has more precedence): * as passed to the command line * from the "chaoshub" extension block (if any) in the experiment * from the settings under the chaoshub vendor section in the settings We may parse the URL from the source some day but for now, this sounds a little flaky. Additionaly, load the hub_url and token from the extension plugin settings. """ token = hub_url = None extension = get_extension(experiment, "chaoshub") if extension: if not org: org = extension.get("organization") if not workspace: workspace = extension.get("workspace") if settings: plugin = settings.get('vendor', {}).get('chaoshub', {}) if not org: org = plugin.get('organization') if not workspace: workspace = plugin.get('workspace') hub_url = plugin.get('hub_url') token = plugin.get('token') context = Context( org=org, workspace=workspace, experiment=extension.get("experiment") if extension else None, hub_url=hub_url, token=token ) return context
def wrapped(*args, **kwargs): payload = kwargs.get("payload") if required and not payload: m = "Please, provide an extension block in " \ "the payload you sent." r = jsonify({"message": m}) r.status_code = 400 raise abort(r) if payload: extension = get_extension(payload, "chaoshub") if required and not extension: m = "The Chaos Hub extension entry is missing " \ "from the payload. You must provide one for " \ "this request." r = jsonify({"message": m}) r.status_code = 400 raise abort(r) kwargs["extension"] = extension return f(*args, **kwargs)
def test_get_extension_returns_nothing_when_missing(): ext = experiments.Experiment.copy() set_extension(ext, {"name": "myotherext", "somekey": "blah"}) assert get_extension(ext, "myext") is None
def test_get_extension_returns_nothing_when_not_extensions_block(): assert get_extension(experiments.Experiment, "myext") is None