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"])
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...", "", ]
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}}' )
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)
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"], "", "", ]
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"]))
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