예제 #1
0
def test_add_acl_to_consumer(session, clean_kong):
    consumer = add("consumers",
                   session,
                   username="******",
                   custom_id="1234")
    consumers.add_group(session, consumer["id"], "some-nice-group")
    assert ["some-nice-group"] == consumers.groups(session, consumer["id"])
예제 #2
0
def test_list_two_filled(invoke, sample, session, full_keys):
    service, route, consumer1 = sample
    consumer2 = general.add("consumers",
                            session,
                            username="******",
                            custom_id="4321")
    parse_datetimes(consumer2)

    for idx, consumer in enumerate((consumer1, consumer2)):
        consumers.add_group(session, consumer["id"], "group2")
        consumers.add_group(session, consumer["id"], "group1")
        consumers.add_basic_auth(session, consumer["id"], f"username{idx}",
                                 "passwd")
        consumers.add_key_auth(session, consumer["id"], f"key-abcdefg{idx}")
        consumers.add_key_auth(session, consumer["id"], f"key-hijklmn{idx}")

    result = invoke(
        ["--font", "cyberlarge", "--tablefmt", "psql", "consumers", "list"] +
        full_keys)

    assert result.exit_code == 0
    lines = result.output.split("\n")
    assert len(lines) == 14
    assert [v.strip() for v in lines[6].split("|")] == [
        "",
        "id",
        "custom_id",
        "username",
        "acl_groups",
        "plugins",
        "basic_auth",
        "key_auth",
        "",
    ]
    for idx, consumer in enumerate((consumer1, consumer2)):
        assert [v.strip() for v in lines[8 + idx * 2].split("|")] == [
            "",
            consumer["id"],
            consumer["custom_id"],
            consumer["username"],
            "group1",
            "",
            f"username{idx}:xxx",
            f"key-abcdefg{idx}" if full_keys else "key-ab...",
            "",
        ]
        assert [v.strip() for v in lines[9 + idx * 2].split("|")] == [
            "",
            "",
            "",
            "",
            "group2",
            "",
            "",
            f"key-hijklmn{idx}" if full_keys else "key-hi...",
            "",
        ]
예제 #3
0
def test_add_acl_twice_to_consumer(session, clean_kong):
    consumer = add("consumers",
                   session,
                   username="******",
                   custom_id="1234")
    consumers.add_group(session, consumer["id"], "some-nice-group")
    with pytest.raises(Exception) as e:
        consumers.add_group(session, consumer["id"], "some-nice-group")
    assert (
        str(e.value).strip() ==
        '400 Bad Request: {"group":"ACL group already exist for this consumer"}'
    ) or (
        str(e.value).strip() ==
        f'409 Conflict: {{"message":"UNIQUE violation detected on \'{{consumer={{id=\\"{consumer["id"]}\\"}},group=\\"some-nice-group\\"}}\'","name":"unique constraint violation","fields":{{"consumer":{{"id":"{consumer["id"]}"}},"group":"some-nice-group"}},"code":5}}'
    )
예제 #4
0
def test_delete_non_exsiting_acl(session, clean_kong):
    consumer = add("consumers",
                   session,
                   username="******",
                   custom_id="1234")
    with pytest.raises(Exception) as e:
        consumers.delete_group(session, consumer["id"], "some-group")
    assert str(e.value).startswith("404 Not Found")
    assert '"message":"Not found"' in str(e.value)

    # also with other group we get an error
    consumers.add_group(session, consumer["id"], "some-nice-group1")
    with pytest.raises(Exception) as e:
        consumers.delete_group(session, consumer["id"], "some-group")
    assert str(e.value).startswith("404 Not Found")
    assert '"message":"Not found"' in str(e.value)
예제 #5
0
def test_delete_groups_multiple(invoke, sample, session):
    service, route, consumer = sample
    consumers.add_group(session, consumer["id"], "group2")
    consumers.add_group(session, consumer["id"], "group1")
    result = invoke([
        "--font",
        "cyberlarge",
        "--tablefmt",
        "psql",
        "consumers",
        "delete-groups",
        consumer["id"],
        "group2",
        "group1",
    ])
    assert result.exit_code == 0
    values = [[v.strip() for v in line.split("|")]
              for line in result.output.split("\n")]
    assert values[1] == [
        "",
        "created_at",
        "custom_id",
        "id",
        "tags",
        "username",
        "acls",
        "",
    ]
    assert values[3] == [
        "",
        consumer["created_at"].isoformat(),
        consumer["custom_id"],
        consumer["id"],
        "",
        consumer["username"],
        "",
        "",
    ]
예제 #6
0
def test_add_multiple_acl_to_consumer(session, clean_kong):
    consumer = add("consumers",
                   session,
                   username="******",
                   custom_id="1234")
    consumers.add_group(session, consumer["id"], "some-nice-group1")
    consumers.add_group(session, consumer["id"], "some-nice-group2")
    consumers.add_group(session, consumer["id"], "some-nice-group3")
    assert ["some-nice-group1", "some-nice-group2", "some-nice-group3"
            ] == sorted(consumers.groups(session, consumer["id"]))
예제 #7
0
def test_retrive(invoke, sample, session, acls, ba, ka, pl):
    service, route, consumer = sample
    consumers.add_group(session, consumer["id"], "group2")
    consumers.add_group(session, consumer["id"], "group1")
    consumers.add_basic_auth(session, consumer["id"], "username", "passwd")
    consumers.add_key_auth(session, consumer["id"], "key-abcdefg")
    consumers.add_key_auth(session, consumer["id"], "key-hijklmn")
    plugins.enable_on(session,
                      "consumers",
                      consumer["id"],
                      "rate-limiting",
                      config={"minute": 20})
    plugins.enable_on(session,
                      "routes",
                      route["id"],
                      "rate-limiting",
                      config={"minute": 25})

    extra = []
    if acls:
        extra += ["--acls"]
    if ba:
        extra += ["--basic-auths"]
    if ka:
        extra += ["--key-auths"]
    if pl:
        extra += ["--plugins"]

    result = invoke([
        "--font",
        "cyberlarge",
        "--tablefmt",
        "psql",
        "consumers",
        "retrieve",
        consumer["id"],
    ] + extra)
    assert result.exit_code == 0
    values = [[v.strip() for v in line.split("|")]
              for line in result.output.split("\n")]
    assert values[1][:6] == [
        "", "created_at", "custom_id", "id", "tags", "username"
    ]
    rest = values[1][6:]
    if acls:
        assert rest.pop(0) == "acls"
    if ba:
        assert rest.pop(0) == "basic_auth"
    if ka:
        assert rest.pop(0) == "key_auth"
    if pl:
        assert rest.pop(0) == "plugins"

    assert values[3][:6] == [
        "",
        consumer["created_at"].isoformat(),
        consumer["custom_id"],
        consumer["id"],
        "",
        consumer["username"],
    ]

    incr = 0
    if acls:
        values[3][6 + incr] == "group1"
        values[4][6 + incr] == "group2"
        incr += 1
    if ba:
        values[3][6 + incr] == "username:xxx"
        incr += 1
    if ka:
        values[3][6 + incr] == "key-abcdefg"
        values[4][6 + incr] == "key-hijklmn"
        incr += 1
    if pl:
        values[3][6 + incr] == "request-limit:"
        values[4][6 + incr] == "{"
        incr += 1