コード例 #1
0
def main(cfg):
    global api_path
    api_path = cfg.api_base + "/executes"
    logger.log("Testing Executes API, api path: %s", api_path)
    conn = db.connect(cfg)

    test_asset_name = "script-test-sp-echo"

    _delete(conn, test_asset_name)

    try:
        asset_id = create_asset(cfg, test_asset_name)
        add_role(cfg, asset_id, "script", json.dumps(script_role_value))
        add_role(cfg, asset_id, "script-executor-amc", {"os": "linux"})

        rsp_msg = execute(cfg, asset_id)
        rsp_msg_json = json.loads(rsp_msg)
        if rsp_msg_json["code"] != 200:
            return logger.failed("unexpected error: " + rsp_msg)

        actual_output = str(rsp_msg_json["message"]).rstrip()
        if actual_output != expected_output:
            return logger.failed("expected: '" + expected_output +
                                 "', actual: '" + actual_output + "'")

    except Exception, x:
        #traceback.print_exc()
        return logger.failed(x.message)
コード例 #2
0
def _testUpdate(conn, num, role):
    _update_data = {
        "modified_ts": str(role.modified_ts),
        "role_schema": _asset_schema2(num)
    }
    req = requests.post(api_path + "/" + role.name, json=_update_data)
    if not req.ok:
        return logger.failed("Update expected {200, OK}, got code:",
                             req.status_code, "response:", req.text)

    rsp_msg = json.loads(req.text)
    rsp_name = rsp_msg["pk"]["role_name"]
    rsp_modified_ts = datetime.strptime(rsp_msg["optLock"]["modified_ts"],
                                        ts_fmt)

    assert role.name == rsp_name
    assert role.modified_ts < rsp_modified_ts

    db_rec = Role(_read(conn, role.name)[0])
    assert db_rec.name == role.name
    assert db_rec.clazz == role.clazz
    assert _eq_json_str(db_rec.role_schema, role.role_schema)
    assert db_rec.description == role.description
    assert db_rec.created_by == role.created_by
    assert db_rec.modified_by == role.modified_by
    assert db_rec.created_ts == role.created_ts
    assert db_rec.modified_ts > role.modified_ts
    assert db_rec.modified_ts == rsp_modified_ts

    role.modified_ts = rsp_modified_ts
    return True
コード例 #3
0
def _testUpdate(conn, store):
    new_store_type = "GitHub"

    _update_data = {
        "script_store_id": str(store.script_store_id),
        "modified_ts": str(store.modified_ts),
        "store_type": new_store_type
    }
    req = requests.post(api_path, data = _update_data)
    if not req.ok:
        return logger.failed("Update expected {200, OK}, got code:", req.status_code, "response:", req.text)

    rsp_msg = json.loads(req.text)["message"]
    rsp_script_store_id = str(rsp_msg["pk"]["script_store_id"])
    rsp_modified_ts     = datetime.strptime(rsp_msg["optLock"]["modified_ts"], ts_fmt)

    assert rsp_script_store_id == str(store.script_store_id)
    assert store.modified_ts < rsp_modified_ts

    scriptStore = ScriptStore(_read(conn, store.script_store_id)[0])
    assert store.script_store_id == scriptStore.script_store_id
    assert store.store_name      == scriptStore.store_name
    assert new_store_type        == scriptStore.store_type
    assert store.description     == scriptStore.description
    assert store.created_by      == scriptStore.created_by
    assert store.modified_by     == scriptStore.modified_by
    assert store.created_ts      == scriptStore.created_ts
    assert store.modified_ts     <  scriptStore.modified_ts
    assert rsp_modified_ts       == scriptStore.modified_ts

    store.modified_ts = rsp_modified_ts
    return True
コード例 #4
0
def _testDeleteNonExisted(conn, role):
    logger.log("running DeleteNonExisted")
    _delete_data = {"modified_ts": str(role.modified_ts)}
    rsp = requests.delete(api_path + "/" + role.name, params=_delete_data)
    if not rsp.status_code == 410:
        return logger.failed("DeleteNonExisted expected {410, ...}, got code:",
                             rsp.status_code, "response:", rsp.text)
    return True
コード例 #5
0
def main(cfg):
    api_path = cfg.api_base + "/admin/data"
    logger.log("Testing Data Admin MetaData, API path: %s", api_path)
    rsp = requests.get(api_path)
    if not rsp.ok:
        return logger.failed("expected {200, OK}, got code: %s, message %s" %
                             (rsp.status_code, rsp.text))
    entry_point_names = json.loads(rsp.text)

    if len(entry_point_names) < 1:
        return logger.failed("no entry points were returned")

    if not "script_stores" in entry_point_names:
        return logger.failed(
            "expected entry point 'script_stores' is not in the list")

    return True
コード例 #6
0
def _testCreateDupName(conn):
    logger.log("running CreateDupName")
    _insert_data = { "store_name": "store 1", "store_type": "GitHub", "description": "test data -1"}
    req = requests.post(api_path, data = _insert_data)
    rsp_msg = json.loads(req.text)["message"]
    if not rsp_msg.startswith("Duplicate entry"):
        return logger.failed("CreateDupName expected dup failure, got code:", req.status_code, "message:", req.text)
    db.sql(conn, "rollback")
    return True
コード例 #7
0
def _testDeleteNonExisted(conn, store):
    logger.log("running DeleteNonExisted")
    _delete_data = {
        "script_store_id": str(uuid.uuid4()),   # new UUID
        "modified_ts":     str(store.modified_ts)
    }
    rsp = requests.delete(api_path, params = _delete_data)
    if not rsp.status_code == 410:
        return logger.failed("DeleteNonExisted expected {410, ...}, got code:", rsp.status_code, "response:", rsp.text)
    return True
コード例 #8
0
def _testDelete(conn, role):
    _delete_data = {"modified_ts": str(role.modified_ts)}
    rsp = requests.delete(api_path + "/" + role.name, params=_delete_data)
    if not rsp.ok:
        return logger.failed("Delete expected {200, OK}, got code:",
                             rsp.status_code, "response:", rsp.text)

    asset_record = _read(conn, role.name)
    assert asset_record is None

    return True
コード例 #9
0
def _testUpdateNonExisted(conn, role):
    logger.log("running UpdateNonExisted")
    _update_data = {
        "modified_ts": str(role.modified_ts),
        "role_schema": _asset_schema2(0)
    }
    rsp = requests.post(api_path + "/" + _asset_name(0), json=_update_data)
    if not rsp.status_code == 410:
        return logger.failed("UpdateNonExisted expected {410, ...}, got code:",
                             rsp.status_code, "response:", rsp.text)
    return True
コード例 #10
0
def _testUpdateNonExisted(conn, store):
    logger.log("running UpdateNonExisted")
    _update_data = {
        "script_store_id": str(uuid.uuid4()),   # new UUID
        "modified_ts":     str(store.modified_ts),
        "store_type":      "GitHub"
    }
    rsp = requests.post(api_path, data = _update_data)
    if not rsp.status_code == 410:
        return logger.failed("UpdateNonExisted expected {410, ...}, got code:", rsp.status_code, "response:", rsp.text)
    return True
コード例 #11
0
def _testCreateDupAsset(conn):
    logger.log("running CreateDupName")
    _insert_data = {
        "role_name": _asset_name(1),
        "class": "test",
        "role_schema": _asset_schema(1)
    }
    req = requests.post(api_path, json=_insert_data)
    if req.status_code != 409:
        return logger.failed("CreateDupName expected dup failure, got code:",
                             req.status_code, "message:", req.text)
    db.sql(conn, "rollback")
    return True
コード例 #12
0
def _testDelete(conn, store):
    _delete_data = {
        "script_store_id": str(store.script_store_id),
        "modified_ts":     str(store.modified_ts)
    }
    rsp = requests.delete(api_path, params = _delete_data)
    if not rsp.ok:
        return logger.failed("Delete expected {200, OK}, got code:", rsp.status_code, "response:", rsp.text)

    recs = _read(conn, store.script_store_id)
    assert len(recs) == 0

    return True
コード例 #13
0
    def test(prms):
        req = requests.get(api_path, params = prms)
        if not req.ok:
            return logger.failed(
                "for %s: Read expected {200, OK}, got code: %s, message %s" % (prms, req.status_code, req.text))
        apiObjs = json.loads(req.text)
        assert apiObjs and len(apiObjs) == 1
        apiObj = apiObjs[0]

        assert apiObj["script_store_id"] == str(scriptStore.script_store_id)
        assert apiObj["store_name" ] == scriptStore.store_name
        assert apiObj["store_type" ] == scriptStore.store_type
        assert apiObj["description"] == scriptStore.description
        assert apiObj["created_by"] == scriptStore.created_by
        assert apiObj["modified_by"] == scriptStore.modified_by
        assert datetime.strptime(apiObj["created_ts"],  ts_fmt) == scriptStore.created_ts
        assert datetime.strptime(apiObj["modified_ts"], ts_fmt) == scriptStore.modified_ts
コード例 #14
0
    def test(role_name):
        req = requests.get(api_path + "/" + role_name)
        if not req.ok:
            return logger.failed(
                "for role %s: Read expected {200, OK}, got code: %s, message %s"
                % (role_name, req.status_code, req.text))
        apiObj = json.loads(req.text)
        assert apiObj

        assert apiObj["role_name"] == role.name
        assert apiObj["class"] == role.clazz
        assert _eq_json(apiObj["role_schema"], json.loads(role.role_schema))
        assert apiObj["description"] == role.description
        assert apiObj.get("created_by") == role.created_by
        assert apiObj.get("modified_by") == role.modified_by
        assert datetime.strptime(apiObj["created_ts"],
                                 ts_fmt) == role.created_ts
        assert datetime.strptime(apiObj["modified_ts"],
                                 ts_fmt) == role.modified_ts
コード例 #15
0
def _testCreateNew(conn, how_many):
    logger.log("running CreateNew for %d entities", how_many)
    identities = []
    for k in xrange(how_many):
        ks = str(k+1)
        _insert_data = { "store_name": "store "+ks, "store_type": "LocalFile", "description": "test data "+ks}
        req = requests.post(api_path, data = _insert_data)
        if not req.ok:
            return logger.failed("CreateNew expected {200, OK}, got code:", req.status_code, "response:", req.text)
        rsp_msg = json.loads(req.text)["message"]
        id_obj = {
            "script_store_id": str(rsp_msg["pk"]["script_store_id"]),
            "modified_ts":     str(rsp_msg["optLock"]["modified_ts"]),
            "uuid_pk":         uuid.UUID(str(rsp_msg["pk"]["script_store_id"]))
        }
        identities.append(id_obj)

    db.sql(conn, "commit")
    return identities
コード例 #16
0
def _testCreateAsset(conn, how_many):
    logger.log("running CreateAsset for %d entities", how_many)
    identities = []
    for k in xrange(how_many):
        role_name = _asset_name(k + 1)
        _insert_data = {
            "role_name": role_name,
            "class": "test",
            "role_schema": _asset_schema(k + 1),
            "description": "test role " + str(k + 1)
        }
        req = requests.post(api_path, json=_insert_data)
        if not req.ok:
            return logger.failed("CreateNew expected {200, OK}, got code:",
                                 req.status_code, "response:", req.text)
        rsp_msg = json.loads(req.text)
        id_obj = {
            "name": str(rsp_msg["pk"]["role_name"]),
            "modified_ts": str(rsp_msg["optLock"]["modified_ts"])
        }
        identities.append(id_obj)

    db.sql(conn, "commit")
    return identities