forked from enlightenment/efl
ecore_con: add tests case related to HTTP post and ftp upload.
Summary: Made http and ftp url configurable via configure and also added test cases for ftp upload and http post. Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com> Reviewers: Sergeant_Whitespace, cedric Subscribers: Sergeant_Whitespace, cedric Differential Revision: https://phab.enlightenment.org/D2226 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
7a6eb2ea42
commit
3f35bc341a
|
@ -136,6 +136,12 @@ case "${build_tests}" in
|
|||
;;
|
||||
esac
|
||||
|
||||
AC_ARG_WITH([ecore-con-http-test-url],
|
||||
[AS_HELP_STRING([--with-ecore-con-http-test-url=http://username:password@example.com],[Url of http server for testing with username and password])],[ECORE_CON_HTTP_TEST_URL=${withval}][AC_DEFINE_UNQUOTED([ECORE_CON_HTTP_TEST_URL],["$withval"],[Http url for testing])])
|
||||
|
||||
AC_ARG_WITH([ecore-con-ftp-test-url],
|
||||
[AS_HELP_STRING([--with-ecore-con-ftp-test-url=ftp://username:password@ftp.example.com?file=filename&directory=dir],[Url of ftp server for testing with username, password, complete filepath for upload with optional directory])],[ECORE_CON_FTP_TEST_URL=${withval}][AC_DEFINE_UNQUOTED([ECORE_CON_FTP_TEST_URL],["$withval"],[Ftp url for testing])])
|
||||
|
||||
dbusservicedir="${datadir}/dbus-1/services"
|
||||
AC_ARG_WITH([dbus-services],
|
||||
[AS_HELP_STRING([--with-dbus-services=DBUS_SERVICES],[specify a directory to store dbus service files.])],
|
||||
|
|
|
@ -67,12 +67,185 @@ _url_compl_cb(void *data, int type EINA_UNUSED, void *event_info)
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_parse_url(char *link, char *url, char **user, char **passwd, char **file, char **dir)
|
||||
{
|
||||
int is_http;
|
||||
char *temp, *temp1, *link_cpy;
|
||||
|
||||
if (!strncmp(link, "http://", 7))
|
||||
is_http = EINA_TRUE;
|
||||
#ifdef ECORE_CON_FTP_TEST_URL
|
||||
else if (!strncmp(link, "ftp://", 6))
|
||||
is_http = EINA_FALSE;
|
||||
#endif
|
||||
else
|
||||
return EINA_FALSE;
|
||||
|
||||
link_cpy = strdup(link);
|
||||
temp = link + 6;
|
||||
if (is_http)
|
||||
temp ++;
|
||||
|
||||
temp1 = strtok(temp, ":");
|
||||
if (temp1)
|
||||
*user = strdup(temp1);
|
||||
else
|
||||
goto error_user;
|
||||
|
||||
temp1 = strtok(NULL, "@");
|
||||
if (temp1)
|
||||
*passwd = strdup(temp1);
|
||||
else
|
||||
goto error_passwd;
|
||||
|
||||
if (is_http)
|
||||
{
|
||||
strcpy(url, "http://");
|
||||
temp1 = strrchr(link_cpy, '@') + 1;
|
||||
strcat(url, temp1);
|
||||
|
||||
free(link_cpy);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
strcpy(url, "ftp://");
|
||||
temp1 = strtok(NULL, "?");
|
||||
if (temp1)
|
||||
strcat(url, temp1);
|
||||
else
|
||||
goto error_passwd;
|
||||
|
||||
if (strchr (link_cpy, '&'))
|
||||
{
|
||||
temp1 = strtok(NULL, "=");
|
||||
if (temp1)
|
||||
*file = strdup(strtok(NULL, "&"));
|
||||
else
|
||||
goto error_passwd;
|
||||
|
||||
temp1 = strrchr(link_cpy, '=') + 1;
|
||||
if (temp1)
|
||||
*dir = strdup(temp1);
|
||||
else
|
||||
goto error_file;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp1 = strrchr(link_cpy,'=') + 1;
|
||||
if (temp1)
|
||||
*file = strdup(temp1);
|
||||
else
|
||||
goto error_passwd;
|
||||
}
|
||||
|
||||
free(link_cpy);
|
||||
return EINA_TRUE;
|
||||
|
||||
error_file:
|
||||
free(*file);
|
||||
|
||||
error_passwd:
|
||||
free(*user);
|
||||
|
||||
error_user:
|
||||
free(link_cpy);
|
||||
fprintf(stderr, "Wrong URL format\n");
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
#ifdef ECORE_CON_FTP_TEST_URL
|
||||
START_TEST(ecore_test_ecore_con_url_ftp_upload)
|
||||
{
|
||||
Ecore_Con_Url *ec_url;
|
||||
url_test *info;
|
||||
int ret;
|
||||
char link[] = ECORE_CON_FTP_TEST_URL;
|
||||
char url[4096], *username, *password, *file = NULL, *dir = NULL;
|
||||
|
||||
ret = eina_init();
|
||||
fail_if(ret != 1);
|
||||
ret = ecore_con_url_init();
|
||||
fail_if(ret != 1);
|
||||
|
||||
fail_unless(_parse_url(link, url, &username, &password, &file, &dir));
|
||||
|
||||
fprintf(stderr, "FTP: \n url = %s \n username = %s \n password = %s \n file = %s \n", url, username, password, file);
|
||||
if (dir)
|
||||
fprintf(stderr, "directory = %s\n", dir);
|
||||
|
||||
ec_url = ecore_con_url_new(link);
|
||||
fail_unless (ec_url);
|
||||
|
||||
ecore_con_url_verbose_set(ec_url, EINA_TRUE);
|
||||
ecore_con_url_ftp_use_epsv_set(ec_url, EINA_TRUE);
|
||||
|
||||
fail_unless(ecore_con_url_ftp_upload(ec_url, file, username, password, dir));
|
||||
|
||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE,
|
||||
_url_compl_cb, info);
|
||||
|
||||
ret = ecore_con_url_shutdown();
|
||||
fail_if(ret != 0);
|
||||
ret = eina_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
#endif
|
||||
|
||||
#ifdef ECORE_CON_HTTP_TEST_URL
|
||||
START_TEST(ecore_test_ecore_con_url_post)
|
||||
{
|
||||
Ecore_Con_Url *ec_url;
|
||||
url_test *info;
|
||||
int ret;
|
||||
char link[] = ECORE_CON_HTTP_TEST_URL;
|
||||
char url_data[] = "test";
|
||||
char *username = NULL, *password = NULL;
|
||||
char url[4096];
|
||||
|
||||
ret = eina_init();
|
||||
fail_if(ret != 1);
|
||||
ret = ecore_con_url_init();
|
||||
fail_if(ret != 1);
|
||||
|
||||
fail_unless(_parse_url(link, url, &username, &password, NULL, NULL));
|
||||
|
||||
fprintf (stderr, "HTTP: \n url = %s \n username = %s \n password = %s \n", url, username, password);
|
||||
|
||||
ecore_con_url_pipeline_set(EINA_TRUE);
|
||||
fail_unless (ecore_con_url_pipeline_get());
|
||||
|
||||
ec_url = ecore_con_url_custom_new(url, "POST");
|
||||
fail_unless (ec_url);
|
||||
|
||||
ecore_con_url_additional_header_add(ec_url, "User-Agent", "blablabla");
|
||||
ecore_con_url_verbose_set(ec_url, EINA_TRUE);
|
||||
|
||||
ecore_con_url_httpauth_set(ec_url, username, password, EINA_FALSE);
|
||||
ecore_con_url_time(ec_url, ECORE_CON_URL_TIME_IFMODSINCE, 0);
|
||||
|
||||
fail_unless(ecore_con_url_post(ec_url, url_data, 4, NULL));
|
||||
|
||||
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE,
|
||||
_url_compl_cb, info);
|
||||
|
||||
ret = ecore_con_url_shutdown();
|
||||
fail_if(ret != 0);
|
||||
ret = eina_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
#endif
|
||||
|
||||
START_TEST(ecore_test_ecore_con_url_download)
|
||||
{
|
||||
Ecore_Con_Url *url;
|
||||
url_test *info;
|
||||
int ret;
|
||||
#ifdef ECORE_CON_HTTP_TEST_URL
|
||||
const char link[] = ECORE_CON_HTTP_TEST_URL;
|
||||
#else
|
||||
const char link[] = "www.google.com";
|
||||
#endif
|
||||
char url_data[] = "test";
|
||||
|
||||
ret = eina_init();
|
||||
|
@ -150,4 +323,10 @@ void ecore_test_ecore_con_url(TCase *tc)
|
|||
tcase_add_test(tc, ecore_test_ecore_con_url_init);
|
||||
tcase_add_test(tc, ecore_test_ecore_con_url_create);
|
||||
tcase_add_test(tc, ecore_test_ecore_con_url_download);
|
||||
#ifdef ECORE_CON_HTTP_TEST_URL
|
||||
tcase_add_test(tc, ecore_test_ecore_con_url_post);
|
||||
#endif
|
||||
#ifdef ECORE_CON_FTP_TEST_URL
|
||||
tcase_add_test(tc, ecore_test_ecore_con_url_ftp_upload);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue