mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-21 01:42:18 +00:00
Change JSON response of GET HTTP /restful/keyring/...
Return "sid", "did" and "name" fields inside their own "identity" object
This commit is contained in:
parent
e956749727
commit
714ea63190
@ -89,25 +89,34 @@ static int http_request_keyring_response_identity(struct httpd_request *r, uint1
|
||||
keyring_identity_extract(id, &sidp, &did, &name);
|
||||
if (!sidp)
|
||||
return http_request_keyring_response(r, 501, "Identity has no SID");
|
||||
unsigned i = 0;
|
||||
if (sidp) {
|
||||
r->http.response.result_extra[i].label = "sid";
|
||||
r->http.response.result_extra[i].value.type = JSON_STRING_NULTERM;
|
||||
r->http.response.result_extra[i].value.u.string.content = alloca_tohex_sid_t(*sidp);
|
||||
++i;
|
||||
}
|
||||
struct json_atom json_id;
|
||||
struct json_key_value json_id_kv[3];
|
||||
struct json_atom json_sid;
|
||||
struct json_atom json_did;
|
||||
struct json_atom json_name;
|
||||
json_id.type = JSON_OBJECT;
|
||||
json_id.u.object.itemc = 1;
|
||||
json_id.u.object.itemv = json_id_kv;
|
||||
json_id_kv[0].key = "sid";
|
||||
json_id_kv[0].value = &json_sid;
|
||||
json_sid.type = JSON_STRING_NULTERM;
|
||||
json_sid.u.string.content = alloca_tohex_sid_t(*sidp);
|
||||
if (did) {
|
||||
r->http.response.result_extra[i].label = "did";
|
||||
r->http.response.result_extra[i].value.type = JSON_STRING_NULTERM;
|
||||
r->http.response.result_extra[i].value.u.string.content = did;
|
||||
++i;
|
||||
json_id_kv[json_id.u.object.itemc].key = "did";
|
||||
json_id_kv[json_id.u.object.itemc].value = &json_did;
|
||||
++json_id.u.object.itemc;
|
||||
json_did.type = JSON_STRING_NULTERM;
|
||||
json_did.u.string.content = did;
|
||||
}
|
||||
if (name) {
|
||||
r->http.response.result_extra[i].label = "name";
|
||||
r->http.response.result_extra[i].value.type = JSON_STRING_NULTERM;
|
||||
r->http.response.result_extra[i].value.u.string.content = name;
|
||||
++i;
|
||||
json_id_kv[json_id.u.object.itemc].key = "name";
|
||||
json_id_kv[json_id.u.object.itemc].value = &json_name;
|
||||
++json_id.u.object.itemc;
|
||||
json_name.type = JSON_STRING_NULTERM;
|
||||
json_name.u.string.content = name;
|
||||
}
|
||||
r->http.response.result_extra[0].label = "identity";
|
||||
r->http.response.result_extra[0].value = json_id;
|
||||
return http_request_keyring_response(r, result, message);
|
||||
}
|
||||
|
||||
|
@ -62,9 +62,6 @@ set_extra_config() {
|
||||
set_keyring_config() {
|
||||
executeOk_servald config \
|
||||
set debug.httpd on \
|
||||
set debug.rhizome_manifest on \
|
||||
set debug.rhizome_store on \
|
||||
set debug.rhizome on \
|
||||
set debug.keyring on \
|
||||
set debug.verbose on \
|
||||
set log.console.level debug
|
||||
@ -146,7 +143,7 @@ test_keyringAdd() {
|
||||
tfw_cat http.headers add.json
|
||||
tfw_preserve add.json
|
||||
assertStdoutIs '200'
|
||||
SID="$(jq -r '.sid' add.json)"
|
||||
SID="$(jq -r '.identity.sid' add.json)"
|
||||
assert matches_rexp "^${rexp_sid}$" "$SID"
|
||||
executeOk_servald keyring list
|
||||
assert_keyring_list 3
|
||||
@ -168,7 +165,7 @@ test_keyringAddPin() {
|
||||
tfw_cat http.headers add.json
|
||||
tfw_preserve add.json
|
||||
assertStdoutIs '200'
|
||||
SID="$(jq -r '.sid' add.json)"
|
||||
SID="$(jq -r '.identity.sid' add.json)"
|
||||
executeOk_servald keyring list
|
||||
assert_keyring_list 2
|
||||
assertStdoutGrep --stderr --matches=0 "^$SID::\$"
|
||||
@ -204,9 +201,7 @@ test_keyringSetDidName() {
|
||||
tfw_cat http.headers set.json
|
||||
tfw_preserve set.json
|
||||
assertStdoutIs '200'
|
||||
assertJq set.json 'contains({"sid": "'$SIDA1'"})'
|
||||
assertJq set.json 'contains({"did": "987654321"})'
|
||||
assertJq set.json 'contains({"name": "Joe Bloggs"})'
|
||||
assertJq set.json 'contains({"identity": {"sid": "'$SIDA1'", "did": "987654321", "name": "Joe Bloggs"}})'
|
||||
executeOk_servald keyring list
|
||||
assert_keyring_list 2
|
||||
assertStdoutGrep --stderr --matches=1 "^$SIDA1:987654321:Joe Bloggs\$"
|
||||
@ -249,9 +244,7 @@ test_keyringSetDidNamePin() {
|
||||
tfw_cat http.headers set3.json
|
||||
tfw_preserve set3.json
|
||||
assertStdoutIs '200'
|
||||
assertJq set3.json 'contains({"sid": "'$SIDA1'"})'
|
||||
assertJq set3.json 'contains({"did": "987654321"})'
|
||||
assertJq set3.json 'contains({"name": "Joe Bloggs"})'
|
||||
assertJq set3.json 'contains({"identity": {"sid": "'$SIDA1'", "did": "987654321", "name": "Joe Bloggs"}})'
|
||||
executeOk_servald keyring list --entry-pin=xyzabc
|
||||
assert_keyring_list 2
|
||||
assertStdoutGrep --stderr --matches=1 "^$SIDA1:987654321:Joe Bloggs\$"
|
||||
@ -266,9 +259,7 @@ test_keyringSetDidNamePin() {
|
||||
tfw_cat http.headers set4.json
|
||||
tfw_preserve set4.json
|
||||
assertStdoutIs '200'
|
||||
assertJq set4.json 'contains({"sid": "'$SIDA1'"})'
|
||||
assertJq set4.json 'contains({"did": "321321321"})'
|
||||
assertJq set4.json 'contains({"name": "Fred Nurks"})'
|
||||
assertJq set4.json 'contains({"identity": {"sid": "'$SIDA1'", "did": "321321321", "name": "Fred Nurks"}})'
|
||||
executeOk_servald keyring list --entry-pin=xyzabc
|
||||
assert_keyring_list 2
|
||||
assertStdoutGrep --stderr --matches=1 "^$SIDA1:321321321:Fred Nurks\$"
|
||||
|
Loading…
x
Reference in New Issue
Block a user