aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhil <phil.buschmann@tum.de>2018-06-04 23:50:00 +0200
committerPhil <phil.buschmann@tum.de>2018-06-04 23:50:00 +0200
commit4ab30f893f22c75d1aafcc9584cd7eac6c4d82a0 (patch)
tree91884385bc421f43ef3cb27d3b98493bee4bc9d1 /src
parent320c62a4f5b7dac08394cd6f6b82666df4d499e9 (diff)
downloadgnunet-4ab30f893f22c75d1aafcc9584cd7eac6c4d82a0.tar.gz
gnunet-4ab30f893f22c75d1aafcc9584cd7eac6c4d82a0.zip
identity rest api - finished and added test_script
Diffstat (limited to 'src')
-rw-r--r--src/identity/plugin_rest_identity.c34
-rwxr-xr-xsrc/identity/test_plugin_identity_rest.sh252
2 files changed, 282 insertions, 4 deletions
diff --git a/src/identity/plugin_rest_identity.c b/src/identity/plugin_rest_identity.c
index 3fe749a52..49d7b58af 100644
--- a/src/identity/plugin_rest_identity.c
+++ b/src/identity/plugin_rest_identity.c
@@ -492,7 +492,7 @@ do_finished (void *cls, const char *emsg)
492 return; 492 return;
493 } 493 }
494 resp = GNUNET_REST_create_response (NULL); 494 resp = GNUNET_REST_create_response (NULL);
495 handle->proc (handle->proc_cls, resp, MHD_HTTP_CREATED); 495 handle->proc (handle->proc_cls, resp, handle->response_code);
496 cleanup_handle (handle); 496 cleanup_handle (handle);
497} 497}
498 498
@@ -616,15 +616,16 @@ ego_create_cont (struct GNUNET_REST_RequestHandle *con,
616 //instead of parse 616 //instead of parse
617 if (!json_is_object(data_js)) 617 if (!json_is_object(data_js))
618 { 618 {
619 json_decref(data_js);
619 handle->emsg = GNUNET_strdup (GNUNET_REST_ERROR_DATA_INVALID); 620 handle->emsg = GNUNET_strdup (GNUNET_REST_ERROR_DATA_INVALID);
620 GNUNET_SCHEDULER_add_now (&do_error, handle); 621 GNUNET_SCHEDULER_add_now (&do_error, handle);
621 return; 622 return;
622 } 623 }
623 624
624 if (1 != json_object_size(data_js)) 625 if (1 != json_object_size (data_js))
625 { 626 {
626 json_decref (data_js); 627 json_decref (data_js);
627 handle->emsg = GNUNET_strdup ("Provided resource count invalid"); 628 handle->emsg = GNUNET_strdup("Provided resource count invalid");
628 GNUNET_SCHEDULER_add_now (&do_error, handle); 629 GNUNET_SCHEDULER_add_now (&do_error, handle);
629 return; 630 return;
630 } 631 }
@@ -638,6 +639,13 @@ ego_create_cont (struct GNUNET_REST_RequestHandle *con,
638 return; 639 return;
639 } 640 }
640 egoname = json_string_value (egoname_json); 641 egoname = json_string_value (egoname_json);
642 if(0 >= strlen(egoname))
643 {
644 json_decref (data_js);
645 handle->emsg = GNUNET_strdup ("No name provided");
646 GNUNET_SCHEDULER_add_now (&do_error, handle);
647 return;
648 }
641 for (ego_entry = handle->ego_head; 649 for (ego_entry = handle->ego_head;
642 NULL != ego_entry; 650 NULL != ego_entry;
643 ego_entry = ego_entry->next) 651 ego_entry = ego_entry->next)
@@ -653,6 +661,7 @@ ego_create_cont (struct GNUNET_REST_RequestHandle *con,
653 } 661 }
654 GNUNET_asprintf (&handle->name, "%s", egoname); 662 GNUNET_asprintf (&handle->name, "%s", egoname);
655 json_decref (data_js); 663 json_decref (data_js);
664 handle->response_code = MHD_HTTP_CREATED;
656 handle->op = GNUNET_IDENTITY_create (handle->identity_handle, 665 handle->op = GNUNET_IDENTITY_create (handle->identity_handle,
657 handle->name, 666 handle->name,
658 &do_finished, 667 &do_finished,
@@ -752,6 +761,13 @@ ego_edit_cont (struct GNUNET_REST_RequestHandle *con,
752 if ((NULL != name_json) && json_is_string (name_json)) 761 if ((NULL != name_json) && json_is_string (name_json))
753 { 762 {
754 newname = json_string_value (name_json); 763 newname = json_string_value (name_json);
764 if(0 >= strlen(newname))
765 {
766 json_decref (data_js);
767 handle->emsg = GNUNET_strdup ("No name provided");
768 GNUNET_SCHEDULER_add_now (&do_error, handle);
769 return;
770 }
755 for (ego_entry_tmp = handle->ego_head; 771 for (ego_entry_tmp = handle->ego_head;
756 NULL != ego_entry_tmp; 772 NULL != ego_entry_tmp;
757 ego_entry_tmp = ego_entry_tmp->next) 773 ego_entry_tmp = ego_entry_tmp->next)
@@ -767,6 +783,7 @@ ego_edit_cont (struct GNUNET_REST_RequestHandle *con,
767 return; 783 return;
768 } 784 }
769 } 785 }
786 handle->response_code = MHD_HTTP_NO_CONTENT;
770 handle->op = GNUNET_IDENTITY_rename (handle->identity_handle, 787 handle->op = GNUNET_IDENTITY_rename (handle->identity_handle,
771 ego_entry->identifier, 788 ego_entry->identifier,
772 newname, 789 newname,
@@ -781,8 +798,16 @@ ego_edit_cont (struct GNUNET_REST_RequestHandle *con,
781 if ( (NULL != subsys_json) && json_is_string (subsys_json)) 798 if ( (NULL != subsys_json) && json_is_string (subsys_json))
782 { 799 {
783 subsys = json_string_value (subsys_json); 800 subsys = json_string_value (subsys_json);
801 if(0 >= strlen(subsys))
802 {
803 json_decref (data_js);
804 handle->emsg = GNUNET_strdup ("No name provided");
805 GNUNET_SCHEDULER_add_now (&do_error, handle);
806 return;
807 }
784 GNUNET_asprintf (&handle->subsys, "%s", subsys); 808 GNUNET_asprintf (&handle->subsys, "%s", subsys);
785 json_decref (data_js); 809 json_decref (data_js);
810 handle->response_code = MHD_HTTP_NO_CONTENT;
786 handle->op = GNUNET_IDENTITY_set (handle->identity_handle, 811 handle->op = GNUNET_IDENTITY_set (handle->identity_handle,
787 handle->subsys, 812 handle->subsys,
788 ego_entry->ego, 813 ego_entry->ego,
@@ -837,6 +862,7 @@ ego_delete_cont (struct GNUNET_REST_RequestHandle *con_handle,
837 cleanup_handle (handle); 862 cleanup_handle (handle);
838 return; 863 return;
839 } 864 }
865 handle->response_code = MHD_HTTP_NO_CONTENT;
840 handle->op = GNUNET_IDENTITY_delete (handle->identity_handle, 866 handle->op = GNUNET_IDENTITY_delete (handle->identity_handle,
841 ego_entry->identifier, 867 ego_entry->identifier,
842 &do_finished, 868 &do_finished,
@@ -980,7 +1006,7 @@ rest_identity_process_request(struct GNUNET_REST_RequestHandle *conndata_handle,
980 1006
981 1007
982 handle->timeout = GNUNET_TIME_UNIT_FOREVER_REL; 1008 handle->timeout = GNUNET_TIME_UNIT_FOREVER_REL;
983 1009 handle->response_code = MHD_HTTP_OK;
984 handle->proc_cls = proc_cls; 1010 handle->proc_cls = proc_cls;
985 handle->proc = proc; 1011 handle->proc = proc;
986 handle->state = ID_REST_STATE_INIT; 1012 handle->state = ID_REST_STATE_INIT;
diff --git a/src/identity/test_plugin_identity_rest.sh b/src/identity/test_plugin_identity_rest.sh
new file mode 100755
index 000000000..d43f4206b
--- /dev/null
+++ b/src/identity/test_plugin_identity_rest.sh
@@ -0,0 +1,252 @@
1#!/usr/bin/bash
2
3#First, start gnunet-arm and the rest-service. Make sure, no identity exists
4
5link_to_api="http://localhost:7776/identity"
6wrong_link="http://localhost:7776/idenmmmy"
7
8#Test GET (multiple identities) for error when no identity exists
9
10echo "No test for subsystem available"
11echo "The next test case can be ignored if you have already added identities"
12cache="$(curl --silent "$link_to_api" | grep "error")"
13if [ "" == "$cache" ]
14then
15 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for GET request when missing identity\n"
16else
17 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for GET request when missing identity\n"
18fi
19
20#Test POST success code, error response code and error json
21echo "The next test case can be ignored if you have already added an identity with the name Test"
22cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":\"Test\"}" 2>&1 | grep "HTTP/1.1 201")"
23if [ "" == "$cache" ]
24then
25 echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good POST request\n"
26else
27 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good POST request\n"
28fi
29
30cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":\"Test\"}" 2>&1 | grep "HTTP/1.1 409")"
31if [ "" == "$cache" ]
32then
33 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for duplicate name POST request\n"
34else
35 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for duplicate name POST request\n"
36fi
37
38cache="$(curl -v -X "POST" "$link_to_api" 2>&1 | grep "error")"
39if [ "" == "$cache" ]
40then
41 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no data POST request\n"
42else
43 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no data POST request\n"
44fi
45
46cache="$(curl -v -X "POST" "$link_to_api" --data "wrong" 2>&1 | grep "error")"
47if [ "" == "$cache" ]
48then
49 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong data POST request\n"
50else
51 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong data POST request\n"
52fi
53
54cache="$(curl -v -X "POST" "$link_to_api" --data "[{}]" 2>&1 | grep "error")"
55if [ "" == "$cache" ]
56then
57 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for json array input POST request\n"
58else
59 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for json array input POST request\n"
60fi
61
62cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":\"Test\",\"other\":\"Test\"}" 2>&1 | grep "error")"
63if [ "" == "$cache" ]
64then
65 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for multi element json POST request\n"
66else
67 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for multi element json POST request\n"
68fi
69
70cache="$(curl -v -X "POST" "$link_to_api" --data "{\"nam\":\"Test\"}" 2>&1 | grep "error")"
71if [ "" == "$cache" ]
72then
73 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json POST request\n"
74else
75 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json POST request\n"
76fi
77
78cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":123}" 2>&1 | grep "error")"
79if [ "" == "$cache" ]
80then
81 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json type POST request\n"
82else
83 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json type POST request\n"
84fi
85
86cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":""}" 2>&1 | grep "error")"
87if [ "" == "$cache" ]
88then
89 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no name POST request\n"
90else
91 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no name POST request\n"
92fi
93
94
95#Test GET (multiple identities) for success and error json
96cache="$(curl --silent "$link_to_api" | grep "error")"
97if [ "" == "$cache" ]
98then
99 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good GET request (multiple identities)\n"
100else
101 echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good GET request (multiple identities)\n"
102fi
103
104
105id="$(gnunet-identity -d | grep "Test - " | sed "s/Test - //g")"
106#Test GET (one identity) for success and error json
107cache="$(curl --silent "${link_to_api}/$id" | grep "error")"
108if [ "" == "$cache" ]
109then
110 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good GET request (one identity)\n"
111else
112 echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good GET request (one identity)\n"
113fi
114
115
116#Test DELETE success code, error response code and error json
117echo "Next tests for DELETE will probably fail when POST fails"
118cache="$(curl -v -X "DELETE" "${link_to_api}/$id" 2>&1 | grep "HTTP/1.1 404")"
119if [ "" == "$cache" ]
120then
121 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good DELETE request\n"
122else
123 echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good DELETE request\n"
124fi
125
126curl --silent -X "POST" "$link_to_api" --data "{\"name\":\"Test\"}"
127id="$(gnunet-identity -d | grep "Test - " | sed "s/Test - //g")"
128
129cache="$(curl -v -X "DELETE" "${link_to_api}/df1" 2>&1 | grep "HTTP/1.1 404")"
130if [ "" == "$cache" ]
131then
132 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong DELETE request\n"
133else
134 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong DELETE request\n"
135fi
136
137#Test PUT success code, error response codes and error json
138cache="$(curl -v -X "PUT" "${link_to_api}/$id" --data "{\"newname\":\"NewTest\"}" 2>&1 | grep "HTTP/1.1 204")"
139if [ "" == "$cache" ]
140then
141 echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good PUT request\n"
142else
143 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good PUT request\n"
144fi
145
146cache="$(curl -v -X "PUT" "${link_to_api}/${id}1" --data "{\"newname\":\"NewNewTest\"}" 2>&1 | grep "HTTP/1.1 404")"
147if [ "" == "$cache" ]
148then
149 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong identity PUT request\n"
150else
151 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong identity PUT request\n"
152fi
153
154cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":\"NewTest\"}" 2>&1 | grep "error")"
155if [ "" == "$cache" ]
156then
157 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for duplicate name PUT request\n"
158else
159 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for duplicate name PUT request\n"
160fi
161
162cache="$(curl -v -X "PUT" "$link_to_api/$id" 2>&1 | grep "error")"
163if [ "" == "$cache" ]
164then
165 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no data PUT request\n"
166else
167 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no data PUT request\n"
168fi
169
170cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "wrong" 2>&1 | grep "error")"
171if [ "" == "$cache" ]
172then
173 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong data PUT request\n"
174else
175 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong data PUT request\n"
176fi
177
178cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "[{}]" 2>&1 | grep "error")"
179if [ "" == "$cache" ]
180then
181 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for json array input PUT request\n"
182else
183 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for json array input PUT request\n"
184fi
185
186cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":\"Test\",\"other\":\"Test\"}" 2>&1 | grep "error")"
187if [ "" == "$cache" ]
188then
189 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for multi element json PUT request\n"
190else
191 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for multi element json PUT request\n"
192fi
193
194cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newnam\":\"Test\"}" 2>&1 | grep "error")"
195if [ "" == "$cache" ]
196then
197 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json PUT request\n"
198else
199 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json PUT request\n"
200fi
201
202cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":123}" 2>&1 | grep "error")"
203if [ "" == "$cache" ]
204then
205 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json type PUT request\n"
206else
207 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json type PUT request\n"
208fi
209
210cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":""}" 2>&1 | grep "error")"
211if [ "" == "$cache" ]
212then
213 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no name PUT request\n"
214else
215 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no name PUT request\n"
216fi
217#TODO Missing subsystem test
218
219#Missing OPTIONS success - nothing can really go wrong here
220
221#Test wrong url
222cache="$(curl -v "$wrong_link" 2>&1 | grep "HTTP/1.1 404")"
223if [ "" == "$cache" ]
224then
225 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url GET request \n"
226else
227 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url GET request \n"
228fi
229
230cache="$(curl -X "PUT" -v "$wrong_link/$id" --data "{\"newname\":\"Testing\"}" 2>&1 | grep "HTTP/1.1 404")"
231if [ "" == "$cache" ]
232then
233 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url GET request \n"
234else
235 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url GET request \n"
236fi
237
238cache="$(curl -X "POST" -v "$wrong_link/$id" --data "{\"name\":\"Test\"}" 2>&1 | grep "HTTP/1.1 404")"
239if [ "" == "$cache" ]
240then
241 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url POST request \n"
242else
243 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url POST request \n"
244fi
245
246cache="$(curl -X "DELETE" -v "${wrong_link}/$id" 2>&1 | grep "HTTP/1.1 404")"
247if [ "" == "$cache" ]
248then
249 echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url DELETE request \n"
250else
251 echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url DELETE request \n"
252fi