1 #include <stdio.h>
2 #include "tx_api.h"
3 #include "nx_api.h"
4 #include "fx_api.h"
5 #include "nx_ip.h"
6
7 #ifdef NX_WEB_HTTPS_ENABLE
8 #include "nx_secure_tls.h"
9 #endif
10
11 #include "nx_web_http_client.h"
12 #include "nx_web_http_server.h"
13
14 #define TEST(prefix, name) void prefix ## _ ##name()
15 #define EXPECT_EQ(expected, actual) \
16 if(expected != actual) \
17 { \
18 printf("\nERROR! File: %s Line: %d\n", __FILE__, __LINE__); \
19 printf("Expected: 0x%x, (%d) Got: 0x%x (%d)\n", (int)expected, (int)expected, (int)actual, (int)actual); \
20 error_counter++; \
21 }
22
23 #define EXPECT_TRUE(statement) \
24 if(!statement) \
25 { \
26 printf("\nERROR! File: %s Line: %d\n", __FILE__, __LINE__); \
27 printf("Expected statement to be true!\n"); \
28 error_counter++; \
29 }
30
31
32 //typedef void VOID;
33
34 extern void test_control_return(UINT status);
35
36 UINT nx_web_http_client_create_test(void);
37 UINT nx_web_http_client_delete_test(void);
38 UINT nx_web_http_client_get_start_test(void);
39 UINT nx_web_http_client_put_start_test(void);
40 UINT nx_web_http_client_post_start_test(void);
41 UINT nx_web_http_client_head_start_test(void);
42 UINT nx_web_http_client_delete_start_test(void);
43 #ifdef NX_WEB_HTTPS_ENABLE
44 UINT nx_web_http_client_get_secure_start_test(void);
45 UINT nx_web_http_client_put_secure_start_test(void);
46 UINT nx_web_http_client_post_secure_start_test(void);
47 UINT nx_web_http_client_head_secure_start_test(void);
48 UINT nx_web_http_client_delete_secure_start_test(void);
49 #endif
50 UINT nx_web_http_client_response_body_get_test(void);
51 UINT nx_web_http_client_put_packet_test(void);
52 UINT nx_web_http_client_response_header_callback_set_test(void);
53 UINT nx_web_http_client_request_initialize_test(void);
54 UINT nx_web_http_client_request_send_test(void);
55 UINT nx_web_http_client_request_header_add_test(void);
56 UINT nx_web_http_client_connect_test(void);
57 #ifdef NX_WEB_HTTPS_ENABLE
58 UINT nx_web_http_client_secure_connect_test(void);
59 #endif
60 UINT nx_web_http_server_callback_data_send_test(VOID *stack_memory, UINT stack_size);
61 UINT nx_web_http_server_callback_response_send_test(VOID *stack_memory, UINT stack_size);
62 UINT nx_web_http_server_content_get_test(VOID *stack_memory, UINT stack_size);
63 UINT nx_web_http_server_create_test(VOID *stack_memory, UINT stack_size);
64 UINT nx_web_http_server_delete_test(VOID *stack_memory, UINT stack_size);
65 UINT nx_web_http_server_param_get_test(VOID *stack_memory, UINT stack_size);
66 UINT nx_web_http_server_query_get_test(VOID *stack_memory, UINT stack_size);
67 UINT nx_web_http_server_start_test(VOID *stack_memory, UINT stack_size);
68 #ifdef NX_WEB_HTTPS_ENABLE
69 UINT nx_web_http_server_secure_configure_test(VOID *stack_memory, UINT stack_size);
70 #endif
71 UINT nx_web_http_server_stop_test(VOID *stack_memory, UINT stack_size);
72 UINT nx_web_http_server_content_get_extended_test(VOID *stack_memory, UINT stack_size);
73 UINT nx_web_http_server_content_length_get_test(VOID *stack_memory, UINT stack_size);
74 #ifdef NX_WEB_HTTP_MULTIPART_ENABLE
75 UINT nx_web_http_server_get_entity_header_test(VOID *stack_memory, UINT stack_size);
76 UINT nx_web_http_server_get_entity_content_test(VOID *stack_memory, UINT stack_size);
77 #endif
78 UINT nx_web_http_server_callback_generate_response_header_test(VOID *stack_memory, UINT stack_size);
79 UINT nx_web_http_server_callback_packet_send_test(VOID *stack_memory, UINT stack_size);
80 UINT nx_web_http_server_gmt_callback_set_test(VOID *stack_memory, UINT stack_size);
81 UINT nx_web_http_server_cache_info_callback_set_test(VOID *stack_memory, UINT stack_size);
82 UINT nx_web_http_server_mime_maps_additional_set_test(VOID *stack_memory, UINT stack_size);
83 UINT nx_web_http_server_type_get_test(VOID *stack_memory, UINT stack_size);
84 UINT nx_web_http_server_packet_content_find_test(VOID *stack_memory, UINT stack_size);
85 UINT nx_web_http_server_packet_get_test(VOID *stack_memory, UINT stack_size);
86 UINT nx_web_http_server_invalid_userpassword_notify_set_test(VOID *stack_memory, UINT stack_size);
87
88 #define DEMO_STACK_SIZE 4096
89 #define TEST_WINDOW_SIZE 2000
90 static UCHAR stack_memory[4096];
91
92 static UCHAR ip_data[4096];
93 static UCHAR pool_data[4096];
94
95 #define SERVER_PACKET_SIZE (NX_WEB_HTTP_SERVER_MIN_PACKET_SIZE * 2)
96
97 #define HTTP_SERVER_ADDRESS IP_ADDRESS(1,2,3,4)
98
99 static TX_THREAD test_thread;
100 static NX_PACKET_POOL pool_0;
101 static NX_IP ip_0;
102
103 void test_thread_entry(ULONG thread_input);
104
105 /* Define device drivers. */
106 extern void _fx_ram_driver(FX_MEDIA *media_ptr);
107 extern void _nx_ram_network_driver_1024(NX_IP_DRIVER *driver_req_ptr);
108
109
110
111 #ifdef CTEST
test_application_define(void * first_unused_memory)112 void test_application_define(void* first_unused_memory)
113 #else /* CTEST */
114 void netx_https_api_test(void* first_unused_memory)
115 #endif /* CTEST */
116 {
117 UINT status;
118 UINT error_counter = 0;
119 CHAR *pointer;
120
121 printf("NetX Test: HTTPS API Test............................................");
122
123 /* Initialize the NetX system. */
124 nx_system_initialize();
125
126
127 /* Setup the working pointer. */
128 pointer = (CHAR *) first_unused_memory;
129
130 /* Create the test thread. */
131 status = tx_thread_create(&test_thread, "HTTPS API Test Thread", test_thread_entry, 0,
132 pointer, DEMO_STACK_SIZE,
133 6, 6, TX_NO_TIME_SLICE, TX_AUTO_START);
134 pointer = pointer + DEMO_STACK_SIZE;
135 if (status)
136 error_counter++;
137
138 /* Create the server packet pool. */
139 status = nx_packet_pool_create(&pool_0, "HTTP Server Packet Pool", SERVER_PACKET_SIZE,
140 pointer, SERVER_PACKET_SIZE*8);
141 pointer = pointer + SERVER_PACKET_SIZE * 8;
142 if (status)
143 error_counter++;
144
145 /* Create an IP instance. */
146 status = nx_ip_create(&ip_0, "HTTP Client IP", HTTP_SERVER_ADDRESS,
147 0xFFFFFF00UL, &pool_0, _nx_ram_network_driver_1024,
148 pointer, 4096, 1);
149 pointer = pointer + 4096;
150 if (status)
151 error_counter++;
152
153 /* Enable ARP and supply ARP cache memory for the server IP instance. */
154 status = nx_arp_enable(&ip_0, (void *) pointer, 1024);
155 pointer = pointer + 1024;
156 if (status)
157 error_counter++;
158
159 /* Enable TCP traffic. */
160 status = nx_tcp_enable(&ip_0);
161 if (status)
162 error_counter++;
163
164
165 }
166
test_thread_entry(ULONG thread_input)167 void test_thread_entry(ULONG thread_input)
168 {
169 UINT status;
170 UINT error_counter = 0;
171
172 /* Give IP task and driver a chance to initialize the system. */
173 tx_thread_sleep(NX_IP_PERIODIC_RATE);
174
175
176 status = nx_web_http_client_create_test();
177 if(status != NX_SUCCESS)
178 {
179 error_counter++;
180 }
181
182 status = nx_web_http_client_delete_test();
183 if(status != NX_SUCCESS)
184 {
185 error_counter++;
186 }
187
188 status = nx_web_http_client_get_start_test();
189 if(status != NX_SUCCESS)
190 {
191 error_counter++;
192 }
193
194 status = nx_web_http_client_put_start_test();
195 if(status != NX_SUCCESS)
196 {
197 error_counter++;
198 }
199
200 status = nx_web_http_client_post_start_test();
201 if(status != NX_SUCCESS)
202 {
203 error_counter++;
204 }
205
206 status = nx_web_http_client_head_start_test();
207 if(status != NX_SUCCESS)
208 {
209 error_counter++;
210 }
211
212 status = nx_web_http_client_delete_start_test();
213 if(status != NX_SUCCESS)
214 {
215 error_counter++;
216 }
217
218 #ifdef NX_WEB_HTTPS_ENABLE
219 status = nx_web_http_client_get_secure_start_test();
220 if(status != NX_SUCCESS)
221 {
222 error_counter++;
223 }
224
225 status = nx_web_http_client_put_secure_start_test();
226 if(status != NX_SUCCESS)
227 {
228 error_counter++;
229 }
230
231 status = nx_web_http_client_post_secure_start_test();
232 if(status != NX_SUCCESS)
233 {
234 error_counter++;
235 }
236
237 status = nx_web_http_client_head_secure_start_test();
238 if(status != NX_SUCCESS)
239 {
240 error_counter++;
241 }
242
243 status = nx_web_http_client_delete_secure_start_test();
244 if(status != NX_SUCCESS)
245 {
246 error_counter++;
247 }
248 #endif
249
250 status = nx_web_http_client_response_body_get_test();
251 if(status != NX_SUCCESS)
252 {
253 error_counter++;
254 }
255
256 status = nx_web_http_client_put_packet_test();
257 if(status != NX_SUCCESS)
258 {
259 error_counter++;
260 }
261
262 status = nx_web_http_client_response_header_callback_set_test();
263 if(status != NX_SUCCESS)
264 {
265 error_counter++;
266 }
267
268 status = nx_web_http_client_request_initialize_test();
269 if(status != NX_SUCCESS)
270 {
271 error_counter++;
272 }
273
274 status = nx_web_http_client_request_send_test();
275 if(status != NX_SUCCESS)
276 {
277 error_counter++;
278 }
279
280 status = nx_web_http_client_request_header_add_test();
281 if(status != NX_SUCCESS)
282 {
283 error_counter++;
284 }
285
286 status = nx_web_http_client_connect_test();
287 if(status != NX_SUCCESS)
288 {
289 error_counter++;
290 }
291 #ifdef NX_WEB_HTTPS_ENABLE
292 status = nx_web_http_client_secure_connect_test();
293 if(status != NX_SUCCESS)
294 {
295 error_counter++;
296 }
297 #endif
298
299
300 status = nx_web_http_server_callback_data_send_test(stack_memory, sizeof(stack_memory));
301 if(status != NX_SUCCESS)
302 {
303 error_counter++;
304 }
305
306 status = nx_web_http_server_callback_response_send_test(stack_memory, sizeof(stack_memory));
307 if(status != NX_SUCCESS)
308 {
309 error_counter++;
310 }
311
312 status = nx_web_http_server_content_get_test(stack_memory, sizeof(stack_memory));
313 if(status != NX_SUCCESS)
314 {
315 error_counter++;
316 }
317
318 status = nx_web_http_server_create_test(stack_memory, sizeof(stack_memory));
319 if(status != NX_SUCCESS)
320 {
321 error_counter++;
322 }
323
324 status = nx_web_http_server_delete_test(stack_memory, sizeof(stack_memory));
325 if(status != NX_SUCCESS)
326 {
327 error_counter++;
328 }
329
330 status = nx_web_http_server_param_get_test(stack_memory, sizeof(stack_memory));
331 if(status != NX_SUCCESS)
332 {
333 error_counter++;
334 }
335
336 status = nx_web_http_server_query_get_test(stack_memory, sizeof(stack_memory));
337 if(status != NX_SUCCESS)
338 {
339 error_counter++;
340 }
341
342 status = nx_web_http_server_start_test(stack_memory, sizeof(stack_memory));
343 if(status != NX_SUCCESS)
344 {
345 error_counter++;
346 }
347
348 #ifdef NX_WEB_HTTPS_ENABLE
349 status = nx_web_http_server_secure_configure_test(stack_memory, sizeof(stack_memory));
350 if(status != NX_SUCCESS)
351 {
352 error_counter++;
353 }
354 #endif
355
356 status = nx_web_http_server_stop_test(stack_memory, sizeof(stack_memory));
357 if(status != NX_SUCCESS)
358 {
359 error_counter++;
360 }
361
362 status = nx_web_http_server_content_get_extended_test(stack_memory, sizeof(stack_memory));
363 if(status != NX_SUCCESS)
364 {
365 error_counter++;
366 }
367
368 status = nx_web_http_server_content_length_get_test(stack_memory, sizeof(stack_memory));
369 if(status != NX_SUCCESS)
370 {
371 error_counter++;
372 }
373
374 #ifdef NX_WEB_HTTP_MULTIPART_ENABLE
375 status = nx_web_http_server_get_entity_header_test(stack_memory, sizeof(stack_memory));
376 if(status != NX_SUCCESS)
377 {
378 error_counter++;
379 }
380
381 status = nx_web_http_server_get_entity_content_test(stack_memory, sizeof(stack_memory));
382 if(status != NX_SUCCESS)
383 {
384 error_counter++;
385 }
386 #endif
387
388 status = nx_web_http_server_callback_generate_response_header_test(stack_memory, sizeof(stack_memory));
389 if(status != NX_SUCCESS)
390 {
391 error_counter++;
392 }
393
394 status = nx_web_http_server_callback_packet_send_test(stack_memory, sizeof(stack_memory));
395 if(status != NX_SUCCESS)
396 {
397 error_counter++;
398 }
399
400 status = nx_web_http_server_gmt_callback_set_test(stack_memory, sizeof(stack_memory));
401 if(status != NX_SUCCESS)
402 {
403 error_counter++;
404 }
405
406 status = nx_web_http_server_cache_info_callback_set_test(stack_memory, sizeof(stack_memory));
407 if(status != NX_SUCCESS)
408 {
409 error_counter++;
410 }
411
412 status = nx_web_http_server_mime_maps_additional_set_test(stack_memory, sizeof(stack_memory));
413 if(status != NX_SUCCESS)
414 {
415 error_counter++;
416 }
417
418 status = nx_web_http_server_type_get_test(stack_memory, sizeof(stack_memory));
419 if(status != NX_SUCCESS)
420 {
421 error_counter++;
422 }
423
424 status = nx_web_http_server_packet_content_find_test(stack_memory, sizeof(stack_memory));
425 if(status != NX_SUCCESS)
426 {
427 error_counter++;
428 }
429
430 status = nx_web_http_server_packet_get_test(stack_memory, sizeof(stack_memory));
431 if(status != NX_SUCCESS)
432 {
433 error_counter++;
434 }
435
436 status = nx_web_http_server_invalid_userpassword_notify_set_test(stack_memory, sizeof(stack_memory));
437 if(status != NX_SUCCESS)
438 {
439 error_counter++;
440 }
441
442 nx_ip_delete(&ip_0);
443 nx_packet_pool_delete(&pool_0);
444 tx_thread_delete(&test_thread);
445
446 if(error_counter > 0)
447 {
448 printf("FAILURE!!\n");
449 test_control_return(1);
450 }
451 else
452 {
453 printf("SUCCESS!\n");
454 test_control_return(0);
455 }
456 }
457
458 /************************ Utility functions. **************************/
459 #ifdef NX_WEB_HTTPS_ENABLE
460 /* Define the TLS setup callback function. */
tls_callback(NX_WEB_HTTP_CLIENT * client_ptr,NX_SECURE_TLS_SESSION * tls_session)461 static UINT tls_callback(NX_WEB_HTTP_CLIENT *client_ptr, NX_SECURE_TLS_SESSION *tls_session)
462 {
463
464 return(NX_SUCCESS);
465 }
466 #endif /* NX_WEB_HTTPS_ENABLE */
467
468
server_auth_check(NX_WEB_HTTP_SERVER * server_ptr,UINT request_type,CHAR * resource,CHAR ** name,CHAR ** password,CHAR ** realm)469 UINT server_auth_check(NX_WEB_HTTP_SERVER *server_ptr, UINT request_type, CHAR *resource, CHAR **name, CHAR **password, CHAR **realm)
470 {
471 return(NX_SUCCESS);
472 }
473
server_req_notify(NX_WEB_HTTP_SERVER * server_ptr,UINT request_type,CHAR * resource,NX_PACKET * packet_ptr)474 UINT server_req_notify(NX_WEB_HTTP_SERVER *server_ptr, UINT request_type, CHAR *resource, NX_PACKET *packet_ptr)
475 {
476 return(NX_SUCCESS);
477 }
478
479
480 /************************ Begin test cases. **************************/
481
nx_web_http_client_create_test(void)482 UINT nx_web_http_client_create_test(void)
483 {
484 NX_WEB_HTTP_CLIENT http_client;
485 UINT status;
486 UINT error_counter = 0;
487
488 /* Setup the IP instance so tests will pass. */
489 ip_0.nx_ip_id = NX_IP_ID;
490
491 memset(&http_client, 0, sizeof(NX_WEB_HTTP_CLIENT));
492 status = nx_web_http_client_create(NX_NULL, "Name", &ip_0, &pool_0, TEST_WINDOW_SIZE);
493 EXPECT_EQ(NX_PTR_ERROR, status);
494
495 memset(&http_client, 0, sizeof(NX_WEB_HTTP_CLIENT));
496 status = nx_web_http_client_create(&http_client, "Name", NX_NULL, &pool_0, TEST_WINDOW_SIZE);
497 EXPECT_EQ(NX_PTR_ERROR, status);
498
499 memset(&http_client, 0, sizeof(NX_WEB_HTTP_CLIENT));
500 status = nx_web_http_client_create(&http_client, "Name", &ip_0, NX_NULL, TEST_WINDOW_SIZE);
501 EXPECT_EQ(NX_PTR_ERROR, status);
502
503 /* Name can be NULL. */
504 memset(&http_client, 0, sizeof(NX_WEB_HTTP_CLIENT));
505 status = nx_web_http_client_create(&http_client, NX_NULL, &ip_0, &pool_0, TEST_WINDOW_SIZE);
506 EXPECT_EQ(NX_SUCCESS, status);
507
508 /* Proper usage test for cases below. */
509 status = nx_web_http_client_delete(&http_client);
510 EXPECT_EQ(NX_SUCCESS, status);
511 status = nx_web_http_client_create(&http_client, "Name", &ip_0, &pool_0, TEST_WINDOW_SIZE);
512 EXPECT_EQ(NX_SUCCESS, status);
513
514 EXPECT_EQ(http_client.nx_web_http_client_ip_ptr, &ip_0);
515
516 EXPECT_EQ(http_client.nx_web_http_client_packet_pool_ptr, &pool_0);
517
518 EXPECT_EQ(http_client.nx_web_http_client_state, NX_WEB_HTTP_CLIENT_STATE_READY);
519
520 EXPECT_EQ(http_client.nx_web_http_client_method, NX_WEB_HTTP_METHOD_NONE);
521
522 EXPECT_EQ(http_client.nx_web_http_client_id, NX_WEB_HTTP_CLIENT_ID);
523 status = nx_web_http_client_delete(&http_client);
524 EXPECT_EQ(NX_SUCCESS, status);
525
526 if(error_counter > 0)
527 {
528 return(1);
529 }
530
531 return(NX_SUCCESS);
532 }
533
nx_web_http_client_delete_test(void)534 UINT nx_web_http_client_delete_test(void)
535 {
536 NX_WEB_HTTP_CLIENT http_client;
537 UINT status;
538 UINT error_counter = 0;
539
540 /* Create web server instance for test. */
541 status = nx_web_http_client_create(&http_client, "nx_web_http_client_delete",
542 &ip_0, &pool_0, TEST_WINDOW_SIZE);
543
544 status = nx_web_http_client_delete(NX_NULL);
545 EXPECT_EQ(NX_PTR_ERROR, status);
546
547 status = nx_web_http_client_delete(&http_client);
548 EXPECT_EQ(NX_SUCCESS, status);
549
550 if(error_counter > 0)
551 {
552 return(1);
553 }
554
555 return(NX_SUCCESS);
556 }
557
558
nx_web_http_client_get_start_test(void)559 UINT nx_web_http_client_get_start_test(void)
560 {
561 NX_WEB_HTTP_CLIENT http_client;
562 NXD_ADDRESS ip_addr;
563 CHAR *resource = "test";
564 UINT status;
565 UINT error_counter = 0;
566
567 /*NX_WEB_HTTP_CLIENT *client_ptr, NXD_ADDRESS *ip_address, UINT server_port,
568 CHAR *resource, CHAR *username, CHAR *password,
569 ULONG wait_option)*/
570 http_client.nx_web_http_client_id = NX_WEB_HTTP_CLIENT_ID;
571
572 status = nx_web_http_client_get_start(NX_NULL, &ip_addr, 0, resource, "www.abc.com", NX_NULL, NX_NULL, NX_WAIT_FOREVER);
573 EXPECT_EQ(NX_PTR_ERROR, status);
574
575 /* Create instance for test. */
576 status = nx_web_http_client_create(&http_client, "nx_web_http_client_get_start",
577 &ip_0, &pool_0, TEST_WINDOW_SIZE);
578
579 status = nx_web_http_client_get_start(&http_client, NX_NULL, 0, resource, "www.abc.com", NX_NULL, NX_NULL, NX_WAIT_FOREVER);
580 EXPECT_EQ(NX_PTR_ERROR, status);
581
582 status = nx_web_http_client_get_start(&http_client, &ip_addr, 0, NX_NULL, "www.abc.com", NX_NULL, NX_NULL, NX_WAIT_FOREVER);
583 EXPECT_EQ(NX_PTR_ERROR, status);
584
585 http_client.nx_web_http_client_id = 0;
586 status = nx_web_http_client_get_start(&http_client, &ip_addr, 0, resource, "www.abc.com", NX_NULL, NX_NULL, NX_WAIT_FOREVER);
587 EXPECT_EQ(NX_PTR_ERROR, status);
588
589 nx_web_http_client_delete(&http_client);
590
591 if(error_counter > 0)
592 {
593 return(1);
594 }
595
596 return(NX_SUCCESS);
597 }
598
599
nx_web_http_client_put_start_test(void)600 UINT nx_web_http_client_put_start_test(void)
601 {
602 NX_WEB_HTTP_CLIENT http_client;
603 NXD_ADDRESS ip_addr;
604 CHAR *resource = "test";
605 UINT status;
606 UINT error_counter = 0;
607
608 /* Control block not initialized. */
609 status = nx_web_http_client_put_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
610 EXPECT_EQ(NX_PTR_ERROR, status);
611
612 /* Create web server instance for test. */
613 status = nx_web_http_client_create(&http_client, "nx_web_http_client_put_start",
614 &ip_0, &pool_0, TEST_WINDOW_SIZE);
615
616 status = nx_web_http_client_put_start(NX_NULL, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
617 EXPECT_EQ(NX_PTR_ERROR, status);
618
619 status = nx_web_http_client_put_start(&http_client, NX_NULL, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
620 EXPECT_EQ(NX_PTR_ERROR, status);
621
622 status = nx_web_http_client_put_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
623 EXPECT_EQ(NX_PTR_ERROR, status);
624
625 nx_web_http_client_delete(&http_client);
626
627 if(error_counter > 0)
628 {
629 return(1);
630 }
631
632 return(NX_SUCCESS);
633 }
634
nx_web_http_client_post_start_test(void)635 UINT nx_web_http_client_post_start_test(void)
636 {
637 NX_WEB_HTTP_CLIENT http_client;
638 NXD_ADDRESS ip_addr;
639 CHAR *resource = "test";
640 UINT status;
641 UINT error_counter = 0;
642
643 nx_web_http_client_delete(&http_client);
644
645 /* Control block not initialized. */
646 status = nx_web_http_client_post_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
647 EXPECT_EQ(NX_PTR_ERROR, status);
648
649 /* Create web server instance for test. */
650 status = nx_web_http_client_create(&http_client, "nx_web_http_client_post_start",
651 &ip_0, &pool_0, TEST_WINDOW_SIZE);
652
653 status = nx_web_http_client_post_start(NX_NULL, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
654 EXPECT_EQ(NX_PTR_ERROR, status);
655
656 status = nx_web_http_client_post_start(&http_client, NX_NULL, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
657 EXPECT_EQ(NX_PTR_ERROR, status);
658
659 status = nx_web_http_client_post_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", 100, NX_WAIT_FOREVER);
660 EXPECT_EQ(NX_PTR_ERROR, status);
661
662 nx_web_http_client_delete(&http_client);
663
664 if(error_counter > 0)
665 {
666 return(1);
667 }
668
669 return(NX_SUCCESS);
670 }
671
nx_web_http_client_head_start_test(void)672 UINT nx_web_http_client_head_start_test(void)
673 {
674 NX_WEB_HTTP_CLIENT http_client;
675 NXD_ADDRESS ip_addr;
676 CHAR *resource = "test";
677 UINT status;
678 UINT error_counter = 0;
679
680 nx_web_http_client_delete(&http_client);
681
682 /* Control block not initialized. */
683 status = nx_web_http_client_head_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
684 EXPECT_EQ(NX_PTR_ERROR, status);
685
686 /* Create web server instance for test. */
687 status = nx_web_http_client_create(&http_client, "nx_web_http_client_head_start",
688 &ip_0, &pool_0, TEST_WINDOW_SIZE);
689
690 status = nx_web_http_client_head_start(NX_NULL, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
691 EXPECT_EQ(NX_PTR_ERROR, status);
692
693 status = nx_web_http_client_head_start(&http_client, NX_NULL, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
694 EXPECT_EQ(NX_PTR_ERROR, status);
695
696 status = nx_web_http_client_head_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
697 EXPECT_EQ(NX_PTR_ERROR, status);
698
699 nx_web_http_client_delete(&http_client);
700
701 if(error_counter > 0)
702 {
703 return(1);
704 }
705
706 return(NX_SUCCESS);
707 }
708
nx_web_http_client_delete_start_test(void)709 UINT nx_web_http_client_delete_start_test(void)
710 {
711 NX_WEB_HTTP_CLIENT http_client;
712 NXD_ADDRESS ip_addr;
713 CHAR *resource = "test";
714 UINT status;
715 UINT error_counter = 0;
716
717 nx_web_http_client_delete(&http_client);
718
719 /* Control block not initialized. */
720 status = nx_web_http_client_delete_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
721 EXPECT_EQ(NX_PTR_ERROR, status);
722
723
724 /* Create web server instance for test. */
725 status = nx_web_http_client_create(&http_client, "nx_web_http_client_delete_start",
726 &ip_0, &pool_0, TEST_WINDOW_SIZE);
727
728 status = nx_web_http_client_delete_start(NX_NULL, &ip_addr, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
729 EXPECT_EQ(NX_PTR_ERROR, status);
730
731 status = nx_web_http_client_delete_start(&http_client, NX_NULL, NX_WEB_HTTP_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
732 EXPECT_EQ(NX_PTR_ERROR, status);
733
734 status = nx_web_http_client_delete_start(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", NX_WAIT_FOREVER);
735 EXPECT_EQ(NX_PTR_ERROR, status);
736
737 status = nx_web_http_client_delete(&http_client);
738 EXPECT_EQ(NX_SUCCESS, status);
739
740 if(error_counter > 0)
741 {
742 return(1);
743 }
744
745 return(NX_SUCCESS);
746 }
747
748 #ifdef NX_WEB_HTTPS_ENABLE
nx_web_http_client_get_secure_start_test(void)749 UINT nx_web_http_client_get_secure_start_test(void)
750 {
751 NX_WEB_HTTP_CLIENT http_client;
752 NXD_ADDRESS ip_addr;
753 CHAR *resource = "test";
754 UINT status;
755 UINT error_counter = 0;
756
757 nx_web_http_client_delete(&http_client);
758
759 /* Control block not initialized. */
760 status = nx_web_http_client_get_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
761 EXPECT_EQ(NX_PTR_ERROR, status);
762
763 /* Create web server instance for test. */
764 status = nx_web_http_client_create(&http_client, "nx_web_http_client_get_secure_start",
765 &ip_0, &pool_0, TEST_WINDOW_SIZE);
766
767 status = nx_web_http_client_get_secure_start(NX_NULL, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
768 EXPECT_EQ(NX_PTR_ERROR, status);
769
770 status = nx_web_http_client_get_secure_start(&http_client, NX_NULL, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
771 EXPECT_EQ(NX_PTR_ERROR, status);
772
773 status = nx_web_http_client_get_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
774 EXPECT_EQ(NX_PTR_ERROR, status);
775
776 status = nx_web_http_client_get_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_NULL, NX_WAIT_FOREVER);
777 EXPECT_EQ(NX_PTR_ERROR, status);
778
779 status = nx_web_http_client_delete(&http_client);
780 EXPECT_EQ(NX_SUCCESS, status);
781
782 if(error_counter > 0)
783 {
784 return(1);
785 }
786
787 return(NX_SUCCESS);
788 }
789
nx_web_http_client_put_secure_start_test(void)790 UINT nx_web_http_client_put_secure_start_test(void)
791 {
792 NX_WEB_HTTP_CLIENT http_client;
793 NXD_ADDRESS ip_addr;
794 CHAR *resource = "test";
795 UINT status;
796 UINT error_counter = 0;
797
798 nx_web_http_client_delete(&http_client);
799
800 /* Control block not initialized. */
801 status = nx_web_http_client_put_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
802 EXPECT_EQ(NX_PTR_ERROR, status);
803
804 /* Create web server instance for test. */
805 status = nx_web_http_client_create(&http_client, "nx_web_http_client_put_secure_start",
806 &ip_0, &pool_0, TEST_WINDOW_SIZE);
807
808 status = nx_web_http_client_put_secure_start(NX_NULL, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
809 EXPECT_EQ(NX_PTR_ERROR, status);
810
811 status = nx_web_http_client_put_secure_start(&http_client, NX_NULL, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
812 EXPECT_EQ(NX_PTR_ERROR, status);
813
814 status = nx_web_http_client_put_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
815 EXPECT_EQ(NX_PTR_ERROR, status);
816
817 status = nx_web_http_client_put_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_NULL, NX_WAIT_FOREVER);
818 EXPECT_EQ(NX_PTR_ERROR, status);
819
820 nx_web_http_client_delete(&http_client);
821
822 if(error_counter > 0)
823 {
824 return(1);
825 }
826
827 return(NX_SUCCESS);
828 }
829
nx_web_http_client_post_secure_start_test(void)830 UINT nx_web_http_client_post_secure_start_test(void)
831 {
832 NX_WEB_HTTP_CLIENT http_client;
833 NXD_ADDRESS ip_addr;
834 CHAR *resource = "test";
835 UINT status;
836 UINT error_counter = 0;
837
838 nx_web_http_client_delete(&http_client);
839
840 /* Control block not initialized. */
841 status = nx_web_http_client_post_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
842 EXPECT_EQ(NX_PTR_ERROR, status);
843
844 /* Create web server instance for test. */
845 status = nx_web_http_client_create(&http_client, "nx_web_http_client_post_secure_start",
846 &ip_0, &pool_0, TEST_WINDOW_SIZE);
847
848 status = nx_web_http_client_post_secure_start(NX_NULL, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
849 EXPECT_EQ(NX_PTR_ERROR, status);
850
851 status = nx_web_http_client_post_secure_start(&http_client, NX_NULL, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
852 EXPECT_EQ(NX_PTR_ERROR, status);
853
854 status = nx_web_http_client_post_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", 100, tls_callback, NX_WAIT_FOREVER);
855 EXPECT_EQ(NX_PTR_ERROR, status);
856
857 status = nx_web_http_client_post_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", 100, NX_NULL, NX_WAIT_FOREVER);
858 EXPECT_EQ(NX_PTR_ERROR, status);
859
860 nx_web_http_client_delete(&http_client);
861
862 if(error_counter > 0)
863 {
864 return(1);
865 }
866
867 return(NX_SUCCESS);
868 }
869
nx_web_http_client_head_secure_start_test(void)870 UINT nx_web_http_client_head_secure_start_test(void)
871 {
872 NX_WEB_HTTP_CLIENT http_client;
873 NXD_ADDRESS ip_addr;
874 CHAR *resource = "test";
875 UINT status;
876 UINT error_counter = 0;
877
878 nx_web_http_client_delete(&http_client);
879
880 /* Control block not initialized. */
881 status = nx_web_http_client_head_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
882 EXPECT_EQ(NX_PTR_ERROR, status);
883
884 /* Create web server instance for test. */
885 status = nx_web_http_client_create(&http_client, "nx_web_http_client_head_secure_start",
886 &ip_0, &pool_0, TEST_WINDOW_SIZE);
887
888 status = nx_web_http_client_head_secure_start(NX_NULL, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
889 EXPECT_EQ(NX_PTR_ERROR, status);
890
891 status = nx_web_http_client_head_secure_start(&http_client, NX_NULL, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
892 EXPECT_EQ(NX_PTR_ERROR, status);
893
894 status = nx_web_http_client_head_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
895 EXPECT_EQ(NX_PTR_ERROR, status);
896
897 status = nx_web_http_client_head_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_NULL, NX_WAIT_FOREVER);
898 EXPECT_EQ(NX_PTR_ERROR, status);
899
900 nx_web_http_client_delete(&http_client);
901
902 if(error_counter > 0)
903 {
904 return(1);
905 }
906
907 return(NX_SUCCESS);
908 }
909
nx_web_http_client_delete_secure_start_test(void)910 UINT nx_web_http_client_delete_secure_start_test(void)
911 {
912 NX_WEB_HTTP_CLIENT http_client;
913 NXD_ADDRESS ip_addr;
914 CHAR *resource = "test";
915 UINT status;
916 UINT error_counter = 0;
917
918 nx_web_http_client_delete(&http_client);
919
920 /* Control block not initialized. */
921 status = nx_web_http_client_delete_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
922 EXPECT_EQ(NX_PTR_ERROR, status);
923
924 /* Create web server instance for test. */
925 status = nx_web_http_client_create(&http_client, "nx_web_http_client_delete_secure_start",
926 &ip_0, &pool_0, TEST_WINDOW_SIZE);
927
928 status = nx_web_http_client_delete_secure_start(NX_NULL, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
929 EXPECT_EQ(NX_PTR_ERROR, status);
930
931 status = nx_web_http_client_delete_secure_start(&http_client, NX_NULL, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
932 EXPECT_EQ(NX_PTR_ERROR, status);
933
934 status = nx_web_http_client_delete_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, NX_NULL, "www.abc.com", "name", "password", tls_callback, NX_WAIT_FOREVER);
935 EXPECT_EQ(NX_PTR_ERROR, status);
936
937 status = nx_web_http_client_delete_secure_start(&http_client, &ip_addr, NX_WEB_HTTPS_SERVER_PORT, resource, "www.abc.com", "name", "password", NX_NULL, NX_WAIT_FOREVER);
938 EXPECT_EQ(NX_PTR_ERROR, status);
939
940 nx_web_http_client_delete(&http_client);
941
942 if(error_counter > 0)
943 {
944 return(1);
945 }
946
947 return(NX_SUCCESS);
948 }
949 #endif /* NX_WEB_HTTPS_ENABLE */
950
nx_web_http_client_response_body_get_test(void)951 UINT nx_web_http_client_response_body_get_test(void)
952 {
953 NX_WEB_HTTP_CLIENT http_client;
954 NX_PACKET *packet_ptr;
955 UINT status;
956 UINT error_counter = 0;
957
958 nx_web_http_client_delete(&http_client);
959
960 /* Control block not initialized. */
961 status = nx_web_http_client_response_body_get(&http_client, &packet_ptr, NX_WAIT_FOREVER);
962 EXPECT_EQ(NX_PTR_ERROR, status);
963
964 /* Create web server instance for test. */
965 status = nx_web_http_client_create(&http_client, "nx_web_http_client_response_body_get",
966 &ip_0, &pool_0, TEST_WINDOW_SIZE);
967
968 status = nx_web_http_client_response_body_get(NX_NULL, &packet_ptr, NX_WAIT_FOREVER);
969 EXPECT_EQ(NX_PTR_ERROR, status);
970
971 status = nx_web_http_client_response_body_get(&http_client, NX_NULL, NX_WAIT_FOREVER);
972 EXPECT_EQ(NX_PTR_ERROR, status);
973
974 nx_web_http_client_delete(&http_client);
975
976 if(error_counter > 0)
977 {
978 return(1);
979 }
980
981 return(NX_SUCCESS);
982 }
983
nx_web_http_client_put_packet_test(void)984 UINT nx_web_http_client_put_packet_test(void)
985 {
986 NX_WEB_HTTP_CLIENT http_client;
987 NX_PACKET packet;
988 UINT status;
989 UINT error_counter = 0;
990
991 nx_web_http_client_delete(&http_client);
992
993 /* Control block not initialized. */
994 status = nx_web_http_client_put_packet(&http_client, &packet, NX_WAIT_FOREVER);
995 EXPECT_EQ(NX_PTR_ERROR, status);
996
997 /* Create web server instance for test. */
998 status = nx_web_http_client_create(&http_client, "nx_web_http_client_put_packet",
999 &ip_0, &pool_0, TEST_WINDOW_SIZE);
1000
1001 status = nx_web_http_client_put_packet(NX_NULL, &packet, NX_WAIT_FOREVER);
1002 EXPECT_EQ(NX_PTR_ERROR, status);
1003
1004 status = nx_web_http_client_put_packet(&http_client, NX_NULL, NX_WAIT_FOREVER);
1005 EXPECT_EQ(NX_PTR_ERROR, status);
1006
1007 nx_web_http_client_delete(&http_client);
1008
1009 if(error_counter > 0)
1010 {
1011 return(1);
1012 }
1013
1014 return(NX_SUCCESS);
1015 }
1016
1017
response_header_callback(NX_WEB_HTTP_CLIENT * client_ptr,CHAR * field_name,UINT field_name_length,CHAR * field_value,UINT field_value_length)1018 static VOID response_header_callback(NX_WEB_HTTP_CLIENT *client_ptr, CHAR *field_name, UINT field_name_length,
1019 CHAR *field_value, UINT field_value_length)
1020 {
1021
1022 }
1023
nx_web_http_client_response_header_callback_set_test(void)1024 UINT nx_web_http_client_response_header_callback_set_test(void)
1025 {
1026 NX_WEB_HTTP_CLIENT http_client;
1027 UINT status;
1028 UINT error_counter = 0;
1029
1030 /* Create web server instance for test. */
1031 status = nx_web_http_client_create(&http_client, "nx_web_http_client_response_header_callback_set",
1032 &ip_0, &pool_0, TEST_WINDOW_SIZE);
1033
1034 status = nx_web_http_client_response_header_callback_set(NX_NULL, response_header_callback);
1035 EXPECT_EQ(NX_PTR_ERROR, status);
1036
1037 status = nx_web_http_client_response_header_callback_set(&http_client, NX_NULL);
1038 EXPECT_EQ(NX_PTR_ERROR, status);
1039
1040 nx_web_http_client_delete(&http_client);
1041
1042 if(error_counter > 0)
1043 {
1044 return(1);
1045 }
1046
1047 return(NX_SUCCESS);
1048 }
1049
nx_web_http_client_request_initialize_test(void)1050 UINT nx_web_http_client_request_initialize_test(void)
1051 {
1052 NX_WEB_HTTP_CLIENT http_client;
1053 CHAR *resource = "resource";
1054 UINT status;
1055 UINT error_counter = 0;
1056
1057 /* Create web server instance for test. */
1058 status = nx_web_http_client_create(&http_client, "nx_web_http_client_request_initialize",
1059 &ip_0, &pool_0, TEST_WINDOW_SIZE);
1060
1061 status = nx_web_http_client_request_initialize(NX_NULL, NX_WEB_HTTP_METHOD_GET, resource, "www.abc.com", 0, NX_FALSE,
1062 "name", "password", NX_WAIT_FOREVER);
1063 EXPECT_EQ(NX_PTR_ERROR, status);
1064
1065 status = nx_web_http_client_request_initialize(&http_client, NX_WEB_HTTP_METHOD_GET, NX_NULL, "www.abc.com", 0, NX_FALSE,
1066 "name", "password", NX_WAIT_FOREVER);
1067 EXPECT_EQ(NX_PTR_ERROR, status);
1068
1069 status = nx_web_http_client_request_initialize(&http_client, NX_WEB_HTTP_METHOD_NONE, resource, "www.abc.com", 0, NX_FALSE,
1070 "name", "password", NX_WAIT_FOREVER);
1071 EXPECT_EQ(NX_WEB_HTTP_METHOD_ERROR, status);
1072
1073 /* Test method parameters. */
1074 status = nx_web_http_client_request_initialize(&http_client, NX_WEB_HTTP_METHOD_PUT, resource, "www.abc.com", 0, NX_FALSE,
1075 "name", "password", NX_WAIT_FOREVER);
1076 EXPECT_EQ(NX_WEB_HTTP_METHOD_ERROR, status);
1077
1078 status = nx_web_http_client_request_initialize(&http_client, NX_WEB_HTTP_METHOD_POST, resource, "www.abc.com", 0, NX_FALSE,
1079 "name", "password", NX_WAIT_FOREVER);
1080 EXPECT_EQ(NX_WEB_HTTP_METHOD_ERROR, status);
1081
1082 nx_web_http_client_delete(&http_client);
1083
1084 if(error_counter > 0)
1085 {
1086 return(1);
1087 }
1088
1089 return(NX_SUCCESS);
1090 }
1091
nx_web_http_client_request_send_test(void)1092 UINT nx_web_http_client_request_send_test(void)
1093 {
1094 NX_WEB_HTTP_CLIENT http_client;
1095 UINT status;
1096 UINT error_counter = 0;
1097
1098 /* Create web server instance for test. */
1099 status = nx_web_http_client_create(&http_client, "nx_web_http_client_request_send",
1100 &ip_0, &pool_0, TEST_WINDOW_SIZE);
1101
1102 status = nx_web_http_client_request_send(NX_NULL, NX_WAIT_FOREVER);
1103 EXPECT_EQ(NX_PTR_ERROR, status);
1104
1105 nx_web_http_client_delete(&http_client);
1106
1107 if(error_counter > 0)
1108 {
1109 return(1);
1110 }
1111
1112 return(NX_SUCCESS);
1113 }
1114
nx_web_http_client_request_header_add_test(void)1115 UINT nx_web_http_client_request_header_add_test(void)
1116 {
1117 NX_WEB_HTTP_CLIENT http_client;
1118 UINT status;
1119 UINT error_counter = 0;
1120
1121 /* Create web server instance for test. */
1122 status = nx_web_http_client_create(&http_client, "nx_web_http_client_request_header_add",
1123 &ip_0, &pool_0, TEST_WINDOW_SIZE);
1124
1125 status = nx_web_http_client_request_header_add(NX_NULL, "field_name", sizeof("field_name"),
1126 "field_value", sizeof("field_value"), NX_WAIT_FOREVER);
1127 EXPECT_EQ(NX_PTR_ERROR, status);
1128
1129 status = nx_web_http_client_request_header_add(&http_client, NX_NULL, sizeof("field_name"),
1130 "field_value", sizeof("field_value"), NX_WAIT_FOREVER);
1131 EXPECT_EQ(NX_PTR_ERROR, status);
1132
1133 status = nx_web_http_client_request_header_add(&http_client, "field_name", sizeof("field_name"),
1134 NX_NULL, sizeof("field_value"), NX_WAIT_FOREVER);
1135 EXPECT_EQ(NX_PTR_ERROR, status);
1136
1137 nx_web_http_client_delete(&http_client);
1138
1139 if(error_counter > 0)
1140 {
1141 return(1);
1142 }
1143
1144 return(NX_SUCCESS);
1145 }
1146
nx_web_http_client_connect_test(void)1147 UINT nx_web_http_client_connect_test(void)
1148 {
1149 NX_WEB_HTTP_CLIENT http_client;
1150 UINT status;
1151 NXD_ADDRESS ip_addr;
1152 UINT error_counter = 0;
1153
1154 status = nx_web_http_client_connect(NX_NULL, &ip_addr, NX_WEB_HTTP_SERVER_PORT, NX_WAIT_FOREVER);
1155 EXPECT_EQ(NX_PTR_ERROR, status);
1156
1157 status = nx_web_http_client_connect(&http_client, NX_NULL, NX_WEB_HTTP_SERVER_PORT, NX_WAIT_FOREVER);
1158 EXPECT_EQ(NX_PTR_ERROR, status);
1159
1160 if(error_counter > 0)
1161 {
1162 return(1);
1163 }
1164
1165 return(NX_SUCCESS);
1166 }
1167
1168 #ifdef NX_WEB_HTTPS_ENABLE
nx_web_http_client_secure_connect_test(void)1169 UINT nx_web_http_client_secure_connect_test(void)
1170 {
1171 NX_WEB_HTTP_CLIENT http_client;
1172 UINT status;
1173 NXD_ADDRESS ip_addr;
1174 UINT error_counter = 0;
1175
1176 status = nx_web_http_client_secure_connect(NX_NULL, &ip_addr, NX_WEB_HTTP_SERVER_PORT, tls_callback, NX_WAIT_FOREVER);
1177 EXPECT_EQ(NX_PTR_ERROR, status);
1178
1179 status = nx_web_http_client_secure_connect(&http_client, NX_NULL, NX_WEB_HTTP_SERVER_PORT, tls_callback, NX_WAIT_FOREVER);
1180 EXPECT_EQ(NX_PTR_ERROR, status);
1181
1182 status = nx_web_http_client_secure_connect(&http_client, &ip_addr, NX_WEB_HTTP_SERVER_PORT, NX_NULL, NX_WAIT_FOREVER);
1183 EXPECT_EQ(NX_PTR_ERROR, status);
1184
1185 if(error_counter > 0)
1186 {
1187 return(1);
1188 }
1189
1190 return(NX_SUCCESS);
1191 }
1192 #endif
1193
nx_web_http_server_callback_data_send_test(VOID * stack_memory,UINT stack_size)1194 UINT nx_web_http_server_callback_data_send_test(VOID *stack_memory, UINT stack_size)
1195 {
1196 NX_WEB_HTTP_SERVER http_server;
1197 UCHAR *data_ptr = "data to send";
1198 UINT data_length = sizeof("data to send");
1199 UINT status;
1200 UINT error_counter = 0;
1201
1202 /* Control block not initialized. */
1203 status = nx_web_http_server_callback_data_send(&http_server, data_ptr, data_length);
1204 EXPECT_EQ(NX_PTR_ERROR, status);
1205
1206 /* Create web server instance for test. */
1207
1208 status = nx_web_http_server_create(&http_server, "nx_web_http_server_callback_data_send",
1209 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1210 stack_memory, stack_size, &pool_0,
1211 server_auth_check, server_req_notify);
1212
1213 status = nx_web_http_server_callback_data_send(NX_NULL, data_ptr, data_length);
1214 EXPECT_EQ(NX_PTR_ERROR, status);
1215
1216 status = nx_web_http_server_callback_data_send(&http_server, NX_NULL, data_length);
1217 EXPECT_EQ(NX_PTR_ERROR, status);
1218
1219 nx_web_http_server_delete(&http_server);
1220
1221 if(error_counter > 0)
1222 {
1223 return(1);
1224 }
1225
1226 return(NX_SUCCESS);
1227 }
1228
nx_web_http_server_callback_response_send_test(VOID * stack_memory,UINT stack_size)1229 UINT nx_web_http_server_callback_response_send_test(VOID *stack_memory, UINT stack_size)
1230 {
1231 NX_WEB_HTTP_SERVER http_server;
1232 CHAR *header = "header";
1233 CHAR *information = "info";
1234 CHAR *additional_info = "additional info";
1235 UINT status;
1236 UINT error_counter = 0;
1237
1238
1239 status = nx_web_http_server_callback_response_send(NX_NULL, header, information, additional_info);
1240 EXPECT_EQ(NX_PTR_ERROR, status);
1241
1242 status = nx_web_http_server_callback_response_send(&http_server, NX_NULL, information, additional_info);
1243 EXPECT_EQ(NX_PTR_ERROR, status);
1244
1245 if(error_counter > 0)
1246 {
1247 return(1);
1248 }
1249
1250 return(NX_SUCCESS);
1251 }
1252
nx_web_http_server_content_get_test(VOID * stack_memory,UINT stack_size)1253 UINT nx_web_http_server_content_get_test(VOID *stack_memory, UINT stack_size)
1254 {
1255 NX_WEB_HTTP_SERVER http_server;
1256 UINT status;
1257 NX_PACKET packet;
1258 CHAR dest_buffer[100];
1259 CHAR dest_size = sizeof(dest_buffer);
1260 UINT actual_size;
1261 UINT error_counter = 0;
1262
1263 /* Control block not initialized. */
1264 status = nx_web_http_server_content_get(&http_server, &packet, 0, dest_buffer, dest_size, &actual_size);
1265 EXPECT_EQ(NX_PTR_ERROR, status);
1266
1267 nx_web_http_server_delete(&http_server);
1268
1269 /* Create web server instance for test. */
1270 status = nx_web_http_server_create(&http_server, "nx_web_http_server_content_get",
1271 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1272 stack_memory, stack_size, &pool_0,
1273 server_auth_check, server_req_notify);
1274
1275 status = nx_web_http_server_content_get(NX_NULL, &packet, 0, dest_buffer, dest_size, &actual_size);
1276 EXPECT_EQ(NX_PTR_ERROR, status);
1277
1278 status = nx_web_http_server_content_get(&http_server, NX_NULL, 0, dest_buffer, dest_size, &actual_size);
1279 EXPECT_EQ(NX_PTR_ERROR, status);
1280
1281 status = nx_web_http_server_content_get(&http_server, &packet, 0, NX_NULL, dest_size, &actual_size);
1282 EXPECT_EQ(NX_PTR_ERROR, status);
1283
1284 status = nx_web_http_server_content_get(&http_server, &packet, 0, dest_buffer, dest_size, NX_NULL);
1285 EXPECT_EQ(NX_PTR_ERROR, status);
1286
1287 nx_web_http_server_delete(&http_server);
1288
1289 if(error_counter > 0)
1290 {
1291 return(1);
1292 }
1293
1294 return(NX_SUCCESS);
1295 }
1296
nx_web_http_server_create_test(VOID * stack_memory,UINT stack_size)1297 UINT nx_web_http_server_create_test(VOID *stack_memory, UINT stack_size)
1298 {
1299 NX_WEB_HTTP_SERVER http_server;
1300 UINT status;
1301 UINT error_counter = 0;
1302
1303
1304 status = nx_web_http_server_create(NX_NULL, "nx_web_http_server_create",
1305 NX_NULL, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1306 stack_memory, stack_size, &pool_0,
1307 server_auth_check, server_req_notify);
1308 EXPECT_EQ(NX_PTR_ERROR, status);
1309
1310 nx_web_http_server_delete(&http_server);
1311
1312 status = nx_web_http_server_create(&http_server, "nx_web_http_server_create",
1313 NX_NULL, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1314 stack_memory, stack_size, &pool_0,
1315 server_auth_check, server_req_notify);
1316 EXPECT_EQ(NX_PTR_ERROR, status);
1317
1318 nx_web_http_server_delete(&http_server);
1319
1320 status = nx_web_http_server_create(&http_server, "nx_web_http_server_create",
1321 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1322 NX_NULL, stack_size, &pool_0,
1323 server_auth_check, server_req_notify);
1324 EXPECT_EQ(NX_PTR_ERROR, status);
1325
1326 nx_web_http_server_delete(&http_server);
1327
1328 status = nx_web_http_server_create(&http_server, "nx_web_http_server_create",
1329 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1330 stack_memory, stack_size, NX_NULL,
1331 server_auth_check, server_req_notify);
1332 EXPECT_EQ(NX_PTR_ERROR, status);
1333
1334 nx_web_http_server_delete(&http_server);
1335
1336 /* Create server - expect successful return for following checks. */
1337 status = nx_web_http_server_create(&http_server, "nx_web_http_server_create",
1338 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1339 stack_memory, stack_size, &pool_0,
1340 server_auth_check, server_req_notify);
1341 EXPECT_EQ(NX_SUCCESS, status);
1342
1343 EXPECT_EQ((ULONG)(&http_server), http_server.nx_web_http_server_tcpserver.nx_tcpserver_reserved);
1344 EXPECT_EQ(&ip_0, http_server.nx_web_http_server_ip_ptr);
1345 EXPECT_EQ(&pool_0, http_server.nx_web_http_server_packet_pool_ptr);
1346 EXPECT_EQ(server_auth_check, http_server.nx_web_http_server_authentication_check);
1347 EXPECT_EQ(server_req_notify, http_server.nx_web_http_server_request_notify);
1348 EXPECT_EQ(NX_WEB_HTTP_SERVER_ID, http_server.nx_web_http_server_id);
1349 EXPECT_EQ(NX_WEB_HTTP_SERVER_PORT, http_server.nx_web_http_server_listen_port);
1350
1351 nx_web_http_server_delete(&http_server);
1352
1353 if(error_counter > 0)
1354 {
1355 return(1);
1356 }
1357
1358 return(NX_SUCCESS);
1359 }
1360
nx_web_http_server_delete_test(VOID * stack_memory,UINT stack_size)1361 UINT nx_web_http_server_delete_test(VOID *stack_memory, UINT stack_size)
1362 {
1363 NX_WEB_HTTP_SERVER http_server;
1364 UINT status;
1365 UINT error_counter = 0;
1366
1367 /* Create web server instance for test. */
1368 status = nx_web_http_server_create(&http_server, "nx_web_http_server_delete",
1369 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1370 stack_memory, stack_size, &pool_0,
1371 server_auth_check, server_req_notify);
1372
1373 status = nx_web_http_server_delete(NX_NULL);
1374 EXPECT_EQ(NX_PTR_ERROR, status);
1375
1376 status = nx_web_http_server_delete(&http_server);
1377
1378 EXPECT_EQ(NX_SUCCESS, status);
1379
1380 if(error_counter > 0)
1381 {
1382 return(1);
1383 }
1384
1385 return(NX_SUCCESS);
1386 }
1387
1388
nx_web_http_server_param_get_test(VOID * stack_memory,UINT stack_size)1389 UINT nx_web_http_server_param_get_test(VOID *stack_memory, UINT stack_size)
1390 {
1391 NX_PACKET packet;
1392 CHAR param_buf[100];
1393 UINT param_size;
1394 UINT status;
1395 UINT error_counter = 0;
1396
1397 status = nx_web_http_server_param_get(NX_NULL, 1, param_buf, ¶m_size, sizeof(param_buf));
1398 EXPECT_EQ(NX_PTR_ERROR, status);
1399
1400 status = nx_web_http_server_param_get(&packet, 1, NX_NULL, ¶m_size, sizeof(param_buf));
1401 EXPECT_EQ(NX_PTR_ERROR, status);
1402
1403 status = nx_web_http_server_param_get(&packet, 1, param_buf, NX_NULL, sizeof(param_buf));
1404 EXPECT_EQ(NX_PTR_ERROR, status);
1405
1406 if(error_counter > 0)
1407 {
1408 return(1);
1409 }
1410
1411 return(NX_SUCCESS);
1412 }
1413
nx_web_http_server_query_get_test(VOID * stack_memory,UINT stack_size)1414 UINT nx_web_http_server_query_get_test(VOID *stack_memory, UINT stack_size)
1415 {
1416 NX_PACKET packet;
1417 CHAR param_buf[100];
1418 UINT param_size;
1419 UINT status;
1420 UINT error_counter = 0;
1421
1422 status = nx_web_http_server_query_get(NX_NULL, 1, param_buf, ¶m_size, sizeof(param_buf));
1423 EXPECT_EQ(NX_PTR_ERROR, status);
1424
1425 status = nx_web_http_server_query_get(&packet, 1, NX_NULL, ¶m_size, sizeof(param_buf));
1426 EXPECT_EQ(NX_PTR_ERROR, status);
1427
1428 status = nx_web_http_server_query_get(&packet, 1, param_buf, NX_NULL, sizeof(param_buf));
1429 EXPECT_EQ(NX_PTR_ERROR, status);
1430
1431 if(error_counter > 0)
1432 {
1433 return(1);
1434 }
1435
1436 return(NX_SUCCESS);
1437 }
1438
nx_web_http_server_start_test(VOID * stack_memory,UINT stack_size)1439 UINT nx_web_http_server_start_test(VOID *stack_memory, UINT stack_size)
1440 {
1441 NX_WEB_HTTP_SERVER http_server;
1442 UINT status;
1443 UINT error_counter = 0;
1444
1445 status = nx_web_http_server_start(&http_server);
1446 EXPECT_EQ(NX_PTR_ERROR, status);
1447
1448 status = nx_web_http_server_start(NX_NULL);
1449 EXPECT_EQ(NX_PTR_ERROR, status);
1450
1451 if(error_counter > 0)
1452 {
1453 return(1);
1454 }
1455
1456 return(NX_SUCCESS);
1457 }
1458
1459 #ifdef NX_WEB_HTTPS_ENABLE
nx_web_http_server_secure_configure_test(VOID * stack_memory,UINT stack_size)1460 UINT nx_web_http_server_secure_configure_test(VOID *stack_memory, UINT stack_size)
1461 {
1462 NX_WEB_HTTP_SERVER http_server;
1463
1464 const NX_SECURE_TLS_CRYPTO crypto_table;
1465 UCHAR metadata_buffer[100];
1466 UCHAR packet_buffer[100];
1467 NX_SECURE_X509_CERT identity_certificate;
1468 NX_SECURE_X509_CERT *trusted_certificates[1];
1469 NX_SECURE_X509_CERT *remote_certificates[1];
1470 UCHAR remote_certificate_buffer[100];
1471 UINT status;
1472 UINT error_counter = 0;
1473
1474 /* Create web server instance for test. */
1475 status = nx_web_http_server_create(&http_server, "nx_web_http_server_secure_configure",
1476 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1477 stack_memory, stack_size, &pool_0,
1478 server_auth_check, server_req_notify);
1479
1480 status = nx_web_http_server_secure_configure(NX_NULL, &crypto_table, metadata_buffer, sizeof(metadata_buffer),
1481 packet_buffer, sizeof(packet_buffer), &identity_certificate,
1482 trusted_certificates, 1, remote_certificates, 1,
1483 remote_certificate_buffer, sizeof(remote_certificate_buffer));
1484 EXPECT_EQ(NX_PTR_ERROR, status);
1485
1486 status = nx_web_http_server_secure_configure(&http_server, NX_NULL, metadata_buffer, sizeof(metadata_buffer),
1487 packet_buffer, sizeof(packet_buffer), &identity_certificate,
1488 trusted_certificates, 1, remote_certificates, 1,
1489 remote_certificate_buffer, sizeof(remote_certificate_buffer));
1490 EXPECT_EQ(NX_PTR_ERROR, status);
1491
1492 status = nx_web_http_server_secure_configure(&http_server, &crypto_table, NX_NULL, sizeof(metadata_buffer),
1493 packet_buffer, sizeof(packet_buffer), &identity_certificate,
1494 trusted_certificates, 1, remote_certificates, 1,
1495 remote_certificate_buffer, sizeof(remote_certificate_buffer));
1496 EXPECT_EQ(NX_PTR_ERROR, status);
1497
1498 status = nx_web_http_server_secure_configure(&http_server, &crypto_table, metadata_buffer, sizeof(metadata_buffer),
1499 NX_NULL, sizeof(packet_buffer), &identity_certificate,
1500 trusted_certificates, 1, remote_certificates, 1,
1501 remote_certificate_buffer, sizeof(remote_certificate_buffer));
1502 EXPECT_EQ(NX_PTR_ERROR, status);
1503
1504 status = nx_web_http_server_secure_configure(&http_server, &crypto_table, metadata_buffer, sizeof(metadata_buffer),
1505 packet_buffer, sizeof(packet_buffer), NX_NULL,
1506 trusted_certificates, 1, remote_certificates, 1,
1507 remote_certificate_buffer, sizeof(remote_certificate_buffer));
1508 EXPECT_EQ(NX_PTR_ERROR, status);
1509
1510 status = nx_web_http_server_delete(&http_server);
1511 EXPECT_EQ(NX_SUCCESS, status);
1512
1513 if(error_counter > 0)
1514 {
1515 return(1);
1516 }
1517
1518 return(NX_SUCCESS);
1519 }
1520 #endif
1521
nx_web_http_server_stop_test(VOID * stack_memory,UINT stack_size)1522 UINT nx_web_http_server_stop_test(VOID *stack_memory, UINT stack_size)
1523 {
1524 NX_WEB_HTTP_SERVER http_server;
1525 UINT status;
1526 UINT error_counter = 0;
1527
1528 status = nx_web_http_server_stop(&http_server);
1529 EXPECT_EQ(NX_PTR_ERROR, status);
1530
1531 status = nx_web_http_server_stop(NX_NULL);
1532 EXPECT_EQ(NX_PTR_ERROR, status);
1533
1534 if(error_counter > 0)
1535 {
1536 return(1);
1537 }
1538
1539 return(NX_SUCCESS);
1540 }
1541
nx_web_http_server_content_get_extended_test(VOID * stack_memory,UINT stack_size)1542 UINT nx_web_http_server_content_get_extended_test(VOID *stack_memory, UINT stack_size)
1543 {
1544 NX_WEB_HTTP_SERVER http_server;
1545 NX_PACKET packet;
1546 CHAR buffer[100];
1547 UINT content_size;
1548 UINT status;
1549 UINT error_counter = 0;
1550
1551 /* Control block not initialized. */
1552 status = nx_web_http_server_content_get_extended(&http_server, &packet, 0, buffer, sizeof(buffer), &content_size);
1553 EXPECT_EQ(NX_PTR_ERROR, status);
1554
1555 /* Create web server instance for test. */
1556 status = nx_web_http_server_create(&http_server, "nx_web_http_server_content_get_extended",
1557 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1558 stack_memory, stack_size, &pool_0,
1559 server_auth_check, server_req_notify);
1560
1561 status = nx_web_http_server_content_get_extended(NX_NULL, &packet, 0, buffer, sizeof(buffer), &content_size);
1562 EXPECT_EQ(NX_PTR_ERROR, status);
1563
1564 status = nx_web_http_server_content_get_extended(&http_server, NX_NULL, 0, buffer, sizeof(buffer), &content_size);
1565 EXPECT_EQ(NX_PTR_ERROR, status);
1566
1567 status = nx_web_http_server_content_get_extended(&http_server, &packet, 0, NX_NULL, sizeof(buffer), &content_size);
1568 EXPECT_EQ(NX_PTR_ERROR, status);
1569
1570 status = nx_web_http_server_content_get_extended(&http_server, &packet, 0, buffer, sizeof(buffer), NX_NULL);
1571 EXPECT_EQ(NX_PTR_ERROR, status);
1572
1573 status = nx_web_http_server_delete(&http_server);
1574 EXPECT_EQ(NX_SUCCESS, status);
1575
1576 if(error_counter > 0)
1577 {
1578 return(1);
1579 }
1580
1581 return(NX_SUCCESS);
1582 }
1583
nx_web_http_server_content_length_get_test(VOID * stack_memory,UINT stack_size)1584 UINT nx_web_http_server_content_length_get_test(VOID *stack_memory, UINT stack_size)
1585 {
1586 NX_PACKET packet;
1587 ULONG length;
1588 UINT status;
1589 UINT error_counter = 0;
1590
1591 status = nx_web_http_server_content_length_get(NX_NULL, &length);
1592 EXPECT_EQ(NX_PTR_ERROR, status);
1593
1594 status = nx_web_http_server_content_length_get(&packet, NX_NULL);
1595 EXPECT_EQ(NX_PTR_ERROR, status);
1596
1597 if(error_counter > 0)
1598 {
1599 return(1);
1600 }
1601
1602 return(NX_SUCCESS);
1603 }
1604
1605 #ifdef NX_WEB_HTTP_MULTIPART_ENABLE
nx_web_http_server_get_entity_header_test(VOID * stack_memory,UINT stack_size)1606 UINT nx_web_http_server_get_entity_header_test(VOID *stack_memory, UINT stack_size)
1607 {
1608 NX_WEB_HTTP_SERVER http_server;
1609 NX_PACKET *packet_ptr;
1610 UCHAR buffer[100];
1611 UINT status;
1612 UINT error_counter = 0;
1613
1614 status = nx_web_http_server_get_entity_header(&http_server, &packet_ptr, buffer, sizeof(buffer));
1615 EXPECT_EQ(NX_PTR_ERROR, status);
1616
1617 /* Create web server instance for test. */
1618 status = nx_web_http_server_create(&http_server, "nx_web_http_server_get_entity_header",
1619 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1620 stack_memory, stack_size, &pool_0,
1621 server_auth_check, server_req_notify);
1622
1623 status = nx_web_http_server_get_entity_header(NX_NULL, &packet_ptr, buffer, sizeof(buffer));
1624 EXPECT_EQ(NX_PTR_ERROR, status);
1625
1626 status = nx_web_http_server_get_entity_header(&http_server, NX_NULL, buffer, sizeof(buffer));
1627 EXPECT_EQ(NX_PTR_ERROR, status);
1628
1629 status = nx_web_http_server_get_entity_header(&http_server, &packet_ptr, NX_NULL, sizeof(buffer));
1630 EXPECT_EQ(NX_PTR_ERROR, status);
1631
1632 status = nx_web_http_server_delete(&http_server);
1633 EXPECT_EQ(NX_SUCCESS, status);
1634
1635 if(error_counter > 0)
1636 {
1637 return(1);
1638 }
1639
1640 return(NX_SUCCESS);
1641 }
1642
nx_web_http_server_get_entity_content_test(VOID * stack_memory,UINT stack_size)1643 UINT nx_web_http_server_get_entity_content_test(VOID *stack_memory, UINT stack_size)
1644 {
1645 NX_WEB_HTTP_SERVER http_server;
1646 NX_PACKET *packet_ptr;
1647 ULONG offset;
1648 ULONG length;
1649 UINT status;
1650 UINT error_counter = 0;
1651
1652 status = nx_web_http_server_get_entity_content(&http_server, &packet_ptr, &offset, &length);
1653 EXPECT_EQ(NX_PTR_ERROR, status);
1654
1655 /* Create web server instance for test. */
1656 status = nx_web_http_server_create(&http_server, "nx_web_http_server_get_entity_content",
1657 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1658 stack_memory, stack_size, &pool_0,
1659 server_auth_check, server_req_notify);
1660
1661 status = nx_web_http_server_get_entity_content(NX_NULL, &packet_ptr, &offset, &length);
1662 EXPECT_EQ(NX_PTR_ERROR, status);
1663
1664 status = nx_web_http_server_get_entity_content(&http_server, NX_NULL, &offset, &length);
1665 EXPECT_EQ(NX_PTR_ERROR, status);
1666
1667 status = nx_web_http_server_get_entity_content(&http_server, &packet_ptr, NX_NULL, &length);
1668 EXPECT_EQ(NX_PTR_ERROR, status);
1669
1670 status = nx_web_http_server_get_entity_content(&http_server, &packet_ptr, &offset, NX_NULL);
1671 EXPECT_EQ(NX_PTR_ERROR, status);
1672
1673 status = nx_web_http_server_delete(&http_server);
1674 EXPECT_EQ(NX_SUCCESS, status);
1675
1676 if(error_counter > 0)
1677 {
1678 return(1);
1679 }
1680
1681 return(NX_SUCCESS);
1682 }
1683 #endif
1684
nx_web_http_server_callback_generate_response_header_test(VOID * stack_memory,UINT stack_size)1685 UINT nx_web_http_server_callback_generate_response_header_test(VOID *stack_memory, UINT stack_size)
1686 {
1687 NX_WEB_HTTP_SERVER http_server;
1688 NX_PACKET *packet_ptr;
1689 CHAR *status_code = "404";
1690 CHAR *content_type = "text";
1691 CHAR *header = "header";
1692 UINT status;
1693 UINT error_counter = 0;
1694
1695 status = nx_web_http_server_callback_generate_response_header(&http_server, &packet_ptr, status_code, 100, content_type, header);
1696 EXPECT_EQ(NX_PTR_ERROR, status);
1697
1698 /* Create web server instance for test. */
1699 status = nx_web_http_server_create(&http_server, "nx_web_http_server_callback_generate_response_header",
1700 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1701 stack_memory, stack_size, &pool_0,
1702 server_auth_check, server_req_notify);
1703
1704 status = nx_web_http_server_callback_generate_response_header(NX_NULL, &packet_ptr, status_code, 100, content_type, header);
1705 EXPECT_EQ(NX_PTR_ERROR, status);
1706
1707 status = nx_web_http_server_callback_generate_response_header(&http_server, NX_NULL, status_code, 100, content_type, header);
1708 EXPECT_EQ(NX_PTR_ERROR, status);
1709
1710 status = nx_web_http_server_callback_generate_response_header(&http_server, &packet_ptr, NX_NULL, 100, content_type, header);
1711 EXPECT_EQ(NX_PTR_ERROR, status);
1712
1713 status = nx_web_http_server_delete(&http_server);
1714 EXPECT_EQ(NX_SUCCESS, status);
1715
1716 if(error_counter > 0)
1717 {
1718 return(1);
1719 }
1720
1721 return(NX_SUCCESS);
1722 }
1723
nx_web_http_server_callback_packet_send_test(VOID * stack_memory,UINT stack_size)1724 UINT nx_web_http_server_callback_packet_send_test(VOID *stack_memory, UINT stack_size)
1725 {
1726 NX_WEB_HTTP_SERVER http_server;
1727 NX_PACKET packet;
1728 UINT status;
1729 UINT error_counter = 0;
1730
1731 status = nx_web_http_server_callback_packet_send(&http_server, &packet);
1732 EXPECT_EQ(NX_PTR_ERROR, status);
1733
1734 /* Create web server instance for test. */
1735 status = nx_web_http_server_create(&http_server, "nx_web_http_server_callback_packet_send",
1736 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1737 stack_memory, stack_size, &pool_0,
1738 server_auth_check, server_req_notify);
1739
1740 status = nx_web_http_server_callback_packet_send(NX_NULL, &packet);
1741 EXPECT_EQ(NX_PTR_ERROR, status);
1742
1743 status = nx_web_http_server_callback_packet_send(&http_server, NX_NULL);
1744 EXPECT_EQ(NX_PTR_ERROR, status);
1745
1746 status = nx_web_http_server_delete(&http_server);
1747 EXPECT_EQ(NX_SUCCESS, status);
1748
1749 if(error_counter > 0)
1750 {
1751 return(1);
1752 }
1753
1754 return(NX_SUCCESS);
1755 }
1756
gmt_callback(NX_WEB_HTTP_SERVER_DATE * date)1757 static VOID gmt_callback(NX_WEB_HTTP_SERVER_DATE *date)
1758 {
1759
1760 }
1761
nx_web_http_server_gmt_callback_set_test(VOID * stack_memory,UINT stack_size)1762 UINT nx_web_http_server_gmt_callback_set_test(VOID *stack_memory, UINT stack_size)
1763 {
1764 NX_WEB_HTTP_SERVER http_server;
1765 UINT status;
1766 UINT error_counter = 0;
1767
1768 status = nx_web_http_server_gmt_callback_set(&http_server, gmt_callback);
1769 EXPECT_EQ(NX_PTR_ERROR, status);
1770
1771 /* Create web server instance for test. */
1772 status = nx_web_http_server_create(&http_server, "nx_web_http_server_gmt_callback_set",
1773 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1774 stack_memory, stack_size, &pool_0,
1775 server_auth_check, server_req_notify);
1776
1777 status = nx_web_http_server_gmt_callback_set(NX_NULL, gmt_callback);
1778 EXPECT_EQ(NX_PTR_ERROR, status);
1779
1780 status = nx_web_http_server_gmt_callback_set(&http_server, NX_NULL);
1781 EXPECT_EQ(NX_PTR_ERROR, status);
1782
1783 status = nx_web_http_server_delete(&http_server);
1784 EXPECT_EQ(NX_SUCCESS, status);
1785
1786 if(error_counter > 0)
1787 {
1788 return(1);
1789 }
1790
1791 return(NX_SUCCESS);
1792 }
1793
1794
1795
cache_info_callback(CHAR * resource,UINT * age,NX_WEB_HTTP_SERVER_DATE * date)1796 UINT cache_info_callback(CHAR *resource, UINT *age, NX_WEB_HTTP_SERVER_DATE *date)
1797 {
1798 return(NX_SUCCESS);
1799 }
1800
1801
nx_web_http_server_cache_info_callback_set_test(VOID * stack_memory,UINT stack_size)1802 UINT nx_web_http_server_cache_info_callback_set_test(VOID *stack_memory, UINT stack_size)
1803 {
1804 NX_WEB_HTTP_SERVER http_server;
1805 UINT status;
1806 UINT error_counter = 0;
1807
1808 status = nx_web_http_server_cache_info_callback_set (&http_server, cache_info_callback);
1809 EXPECT_EQ(NX_PTR_ERROR, status);
1810
1811 /* Create web server instance for test. */
1812 status = nx_web_http_server_create(&http_server, "nx_web_http_server_cache_info_callback_set ",
1813 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1814 stack_memory, stack_size, &pool_0,
1815 server_auth_check, server_req_notify);
1816
1817 status = nx_web_http_server_cache_info_callback_set (NX_NULL, cache_info_callback);
1818 EXPECT_EQ(NX_PTR_ERROR, status);
1819
1820 status = nx_web_http_server_cache_info_callback_set (&http_server, NX_NULL);
1821 EXPECT_EQ(NX_PTR_ERROR, status);
1822
1823 status = nx_web_http_server_delete(&http_server);
1824 EXPECT_EQ(NX_SUCCESS, status);
1825
1826 if(error_counter > 0)
1827 {
1828 return(1);
1829 }
1830
1831 return(NX_SUCCESS);
1832 }
1833
nx_web_http_server_mime_maps_additional_set_test(VOID * stack_memory,UINT stack_size)1834 UINT nx_web_http_server_mime_maps_additional_set_test(VOID *stack_memory, UINT stack_size)
1835 {
1836 NX_WEB_HTTP_SERVER http_server;
1837 NX_WEB_HTTP_SERVER_MIME_MAP mime_map;
1838 UINT status;
1839 UINT error_counter = 0;
1840
1841 status = nx_web_http_server_mime_maps_additional_set(&http_server, &mime_map, 1);
1842 EXPECT_EQ(NX_PTR_ERROR, status);
1843
1844 /* Create web server instance for test. */
1845 status = nx_web_http_server_create(&http_server, "nx_web_http_server_mime_maps_additional_set",
1846 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1847 stack_memory, stack_size, &pool_0,
1848 server_auth_check, server_req_notify);
1849
1850 status = nx_web_http_server_mime_maps_additional_set(NX_NULL, &mime_map, 1);
1851 EXPECT_EQ(NX_PTR_ERROR, status);
1852
1853 status = nx_web_http_server_mime_maps_additional_set(&http_server, NX_NULL, 1);
1854 EXPECT_EQ(NX_PTR_ERROR, status);
1855
1856 status = nx_web_http_server_delete(&http_server);
1857 EXPECT_EQ(NX_SUCCESS, status);
1858
1859 if(error_counter > 0)
1860 {
1861 return(1);
1862 }
1863
1864 return(NX_SUCCESS);
1865 }
1866
nx_web_http_server_type_get_test(VOID * stack_memory,UINT stack_size)1867 UINT nx_web_http_server_type_get_test(VOID *stack_memory, UINT stack_size)
1868 {
1869 NX_WEB_HTTP_SERVER http_server;
1870 CHAR name[100];
1871 CHAR type_string[100];
1872 UINT string_size;
1873 UINT status;
1874 UINT error_counter = 0;
1875
1876 status = nx_web_http_server_type_get(&http_server, name, type_string, &string_size);
1877 EXPECT_EQ(NX_PTR_ERROR, status);
1878
1879 /* Create web server instance for test. */
1880 status = nx_web_http_server_create(&http_server, "nx_web_http_server_type_get",
1881 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1882 stack_memory, stack_size, &pool_0,
1883 server_auth_check, server_req_notify);
1884
1885 status = nx_web_http_server_type_get(NX_NULL, name, type_string, &string_size);
1886 EXPECT_EQ(NX_PTR_ERROR, status);
1887
1888 status = nx_web_http_server_type_get(&http_server, NX_NULL, type_string, &string_size);
1889 EXPECT_EQ(NX_PTR_ERROR, status);
1890
1891 status = nx_web_http_server_type_get(&http_server, name, NX_NULL, &string_size);
1892 EXPECT_EQ(NX_PTR_ERROR, status);
1893
1894 status = nx_web_http_server_type_get(&http_server, name, type_string, NX_NULL);
1895 EXPECT_EQ(NX_PTR_ERROR, status);
1896
1897 status = nx_web_http_server_delete(&http_server);
1898 EXPECT_EQ(NX_SUCCESS, status);
1899
1900 if(error_counter > 0)
1901 {
1902 return(1);
1903 }
1904
1905 return(NX_SUCCESS);
1906 }
1907
nx_web_http_server_packet_content_find_test(VOID * stack_memory,UINT stack_size)1908 UINT nx_web_http_server_packet_content_find_test(VOID *stack_memory, UINT stack_size)
1909 {
1910 NX_WEB_HTTP_SERVER http_server;
1911 NX_PACKET *packet_ptr;
1912 ULONG length;
1913 UINT status;
1914 UINT error_counter = 0;
1915
1916 status = nx_web_http_server_packet_content_find(&http_server, &packet_ptr, &length);
1917 EXPECT_EQ(NX_PTR_ERROR, status);
1918
1919 /* Create web server instance for test. */
1920 status = nx_web_http_server_create(&http_server, "nx_web_http_server_packet_content_find",
1921 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1922 stack_memory, stack_size, &pool_0,
1923 server_auth_check, server_req_notify);
1924
1925 status = nx_web_http_server_packet_content_find(NX_NULL, &packet_ptr, &length);
1926 EXPECT_EQ(NX_PTR_ERROR, status);
1927
1928 status = nx_web_http_server_packet_content_find(&http_server, NX_NULL, &length);
1929 EXPECT_EQ(NX_PTR_ERROR, status);
1930
1931 status = nx_web_http_server_packet_content_find(&http_server, &packet_ptr, NX_NULL);
1932 EXPECT_EQ(NX_PTR_ERROR, status);
1933
1934 status = nx_web_http_server_delete(&http_server);
1935 EXPECT_EQ(NX_SUCCESS, status);
1936
1937 if(error_counter > 0)
1938 {
1939 return(1);
1940 }
1941
1942 return(NX_SUCCESS);
1943 }
1944
nx_web_http_server_packet_get_test(VOID * stack_memory,UINT stack_size)1945 UINT nx_web_http_server_packet_get_test(VOID *stack_memory, UINT stack_size)
1946 {
1947 NX_WEB_HTTP_SERVER http_server;
1948 NX_PACKET *packet_ptr;
1949 UINT status;
1950 UINT error_counter = 0;
1951
1952 status = nx_web_http_server_packet_get(&http_server, &packet_ptr);
1953 EXPECT_EQ(NX_PTR_ERROR, status);
1954
1955 /* Create web server instance for test. */
1956 status = nx_web_http_server_create(&http_server, "nx_web_http_server_packet_get",
1957 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1958 stack_memory, stack_size, &pool_0,
1959 server_auth_check, server_req_notify);
1960
1961 status = nx_web_http_server_packet_get(NX_NULL, &packet_ptr);
1962 EXPECT_EQ(NX_PTR_ERROR, status);
1963
1964 status = nx_web_http_server_packet_get(&http_server, NX_NULL);
1965 EXPECT_EQ(NX_PTR_ERROR, status);
1966
1967 status = nx_web_http_server_delete(&http_server);
1968 EXPECT_EQ(NX_SUCCESS, status);
1969
1970 if(error_counter > 0)
1971 {
1972 return(1);
1973 }
1974
1975 return(NX_SUCCESS);
1976 }
1977
invalid_username_password_callback(CHAR * resource,NXD_ADDRESS * client_nxd_address,UINT request_type)1978 static UINT invalid_username_password_callback(CHAR *resource, NXD_ADDRESS *client_nxd_address, UINT request_type)
1979 {
1980 return(NX_SUCCESS);
1981 }
1982
nx_web_http_server_invalid_userpassword_notify_set_test(VOID * stack_memory,UINT stack_size)1983 UINT nx_web_http_server_invalid_userpassword_notify_set_test(VOID *stack_memory, UINT stack_size)
1984 {
1985 NX_WEB_HTTP_SERVER http_server;
1986 UINT status;
1987 UINT error_counter = 0;
1988
1989 /* Create web server instance for test. */
1990 status = nx_web_http_server_create(&http_server, "nx_web_http_server_invalid_userpassword_notify_set",
1991 &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,
1992 stack_memory, stack_size, &pool_0,
1993 server_auth_check, server_req_notify);
1994
1995 status = nx_web_http_server_invalid_userpassword_notify_set(NX_NULL, invalid_username_password_callback);
1996 EXPECT_EQ(NX_PTR_ERROR, status);
1997
1998 status = nx_web_http_server_invalid_userpassword_notify_set(&http_server, NX_NULL);
1999 EXPECT_EQ(NX_PTR_ERROR, status);
2000
2001 status = nx_web_http_server_delete(&http_server);
2002 EXPECT_EQ(NX_SUCCESS, status);
2003
2004 if(error_counter > 0)
2005 {
2006 return(1);
2007 }
2008
2009 return(NX_SUCCESS);
2010 }
2011
2012 /********************************************************************************
2013 * Python used to generate skeleton test cases:
2014 #!/bin/python
2015
2016 def gen_client_tests(input_list):
2017 ret_str = ""
2018 for name in input_list:
2019 ret_str += "\nUINT " + name + "(void)\n{"
2020 ret_str += "\nNX_WEB_HTTP_CLIENT http_client;"
2021 ret_str += "\nUINT status;"
2022 ret_str += "\n "
2023 ret_str += "\n / * Create web server instance for test. * /"
2024 ret_str += "\n status = nx_web_http_client_create(&http_client, \"" + name + "\","
2025 ret_str += "\n &ip_0, &pool_0, TEST_WINDOW_SIZE);"
2026 ret_str += "\n "
2027 ret_str += "\n status = " + name + "(&http_client, );"
2028 ret_str += "\n EXPECT_EQ(NX_PTR_ERROR, status);"
2029 ret_str += "\n "
2030 ret_str += "\n return(NX_SUCCESS);\n}\n"
2031 return ret_str
2032
2033 def gen_server_tests(input_list):
2034 ret_str = ""
2035 for name in input_list:
2036 ret_str += "\nUINT " + name + "_test(VOID *stack_memory, UINT stack_size)\n{"
2037 ret_str += "\nNX_WEB_HTTP_SERVER http_server;"
2038 ret_str += "\nUINT status;"
2039 ret_str += "\n / * Create web server instance for test. * /"
2040 ret_str += "\n status = nx_web_http_server_create(&http_server, \"" + name + "\","
2041 ret_str += "\n &ip_0, NX_WEB_HTTP_SERVER_PORT, NX_NULL,"
2042 ret_str += "\n stack_memory, stack_size, &pool_0,"
2043 ret_str += "\n server_auth_check, server_req_notify);"
2044 ret_str += "\n "
2045 ret_str += "\n status = " + name + "(&http_server, );"
2046 ret_str += "\n EXPECT_EQ(NX_PTR_ERROR, status);"
2047 ret_str += "\n "
2048 ret_str += "\n return(NX_SUCCESS);\n}\n"
2049 return ret_str
2050
2051 def gen_server_prototypes(input_list):
2052 ret_str = ""
2053 for name in input_list:
2054 ret_str += "\nUINT " + name + "_test(VOID *stack_memory, UINT stack_size);"
2055 return ret_str
2056
2057
2058 def gen_client_prototypes(input_list):
2059 ret_str = ""
2060 for name in input_list:
2061 ret_str += "\nUINT " + name + "_test(void);"
2062 return ret_str
2063
2064 def gen_server_calls(input_list):
2065 ret_str = ""
2066 for name in input_list:
2067 ret_str += "\n status = " + name + "_test(stack_memory, sizeof(stack_memory));"
2068 ret_str += "\n if(status != NX_SUCCESS)"
2069 ret_str += "\n {"
2070 ret_str += "\n test_control_return(1);"
2071 ret_str += "\n }"
2072 ret_str += "\n "
2073 return ret_str
2074
2075 def gen_client_calls(input_list):
2076 ret_str = ""
2077 for name in input_list:
2078 ret_str += "\n status = " + name + "_test();"
2079 ret_str += "\n if(status != NX_SUCCESS)"
2080 ret_str += "\n {"
2081 ret_str += "\n test_control_return(1);"
2082 ret_str += "\n }"
2083 ret_str += "\n"
2084 return ret_str
2085
2086 def gen_all_tests():
2087 ret_str = ""
2088 ret_str += gen_client_prototypes(client_api_list)
2089 ret_str += gen_server_prototypes(server_api_list)
2090 ret_str += gen_client_calls(client_api_list)
2091 ret_str += gen_server_calls(server_api_list)
2092 ret_str += gen_client_tests(client_api_list)
2093 ret_str += gen_server_tests(server_api_list)
2094 return ret_str
2095
2096 def write_tests():
2097 f = open("./test.c", "w")
2098 tests = gen_all_tests()
2099 f.write(tests)
2100 f.close()
2101
2102 client_api_list = [ "nx_web_http_client_create",
2103 "nx_web_http_client_delete",
2104 "nx_web_http_client_get_start",
2105 "nx_web_http_client_put_start",
2106 "nx_web_http_client_post_start",
2107 "nx_web_http_client_head_start",
2108 "nx_web_http_client_delete_start",
2109 "nx_web_http_client_get_secure_start",
2110 "nx_web_http_client_put_secure_start",
2111 "nx_web_http_client_post_secure_start",
2112 "nx_web_http_client_head_secure_start",
2113 "nx_web_http_client_delete_secure_start",
2114 "nx_web_http_client_response_body_get",
2115 "nx_web_http_client_put_packet",
2116 "nx_web_http_client_response_header_callback_set",
2117 "nx_web_http_client_request_initialize",
2118 "nx_web_http_client_request_send",
2119 "nx_web_http_client_request_header_add",
2120 "nx_web_http_client_connect",
2121 "nx_web_http_client_secure_connect" ]
2122
2123 server_api_list = [ "nx_web_http_server_callback_data_send",
2124 "nx_web_http_server_callback_response_send",
2125 "nx_web_http_server_content_get",
2126 "nx_web_http_server_create",
2127 "nx_web_http_server_delete",
2128 "nx_web_http_server_param_get",
2129 "nx_web_http_server_query_get",
2130 "nx_web_http_server_start",
2131 "nx_web_http_server_secure_configure",
2132 "nx_web_http_server_stop",
2133 "nx_web_http_server_content_get_extended",
2134 "nx_web_http_server_content_length_get",
2135 "nx_web_http_server_get_entity_header",
2136 "nx_web_http_server_get_entity_content",
2137 "nx_web_http_server_callback_generate_response_header",
2138 "nx_web_http_server_callback_packet_send",
2139 "nx_web_http_server_gmt_callback_set",
2140 "nx_web_http_server_cache_info_callback_set ",
2141 "nx_web_http_server_mime_maps_additional_set",
2142 "nx_web_http_server_type_get",
2143 "nx_web_http_server_packet_content_find",
2144 "nx_web_http_server_packet_get",
2145 "nx_web_http_server_invalid_userpassword_notify_set" ]
2146
2147 */
2148
2149
2150