1 /*
2  * Unittest for curlftpsink
3  */
4 
5 #include <gst/check/gstcheck.h>
6 #include <glib/gstdio.h>
7 #include <curl/curl.h>
8 
9 static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
10     GST_PAD_SRC,
11     GST_PAD_ALWAYS,
12     GST_STATIC_CAPS_ANY);
13 
14 static GstPad *srcpad;
15 
16 static GstElement *sink;
17 
18 static GstElement *
setup_curlftpsink(void)19 setup_curlftpsink (void)
20 {
21   GST_DEBUG ("setup_curlftpsink");
22   sink = gst_check_setup_element ("curlftpsink");
23   srcpad = gst_check_setup_src_pad (sink, &srctemplate);
24   fail_unless (gst_pad_set_active (srcpad, TRUE));
25 
26   return sink;
27 }
28 
29 static void
cleanup_curlftpsink(GstElement * sink)30 cleanup_curlftpsink (GstElement * sink)
31 {
32   GST_DEBUG ("cleanup_curlftpsink");
33 
34   gst_check_teardown_src_pad (sink);
35   gst_check_teardown_element (sink);
36 }
37 
GST_START_TEST(test_properties)38 GST_START_TEST (test_properties)
39 {
40   GstElement *sink;
41   gchar *res_location = NULL;
42   gchar *res_file_name = NULL;
43   gchar *res_ftp_port = NULL;
44   gchar *res_tmp_file_name = NULL;
45   gboolean res_create_tmpfile;
46   gboolean res_epsv_mode;
47   gboolean res_create_dirs;
48 
49   sink = setup_curlftpsink ();
50 
51   g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
52   g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
53   g_object_set (G_OBJECT (sink), "ftp-port", "1.2.3.4:0", NULL);
54   g_object_set (G_OBJECT (sink), "epsv-mode", FALSE, NULL);
55   g_object_set (G_OBJECT (sink), "create-dirs", FALSE, NULL);
56   g_object_set (G_OBJECT (sink), "create-tmp-file", FALSE, NULL);
57   g_object_set (G_OBJECT (sink), "temp-file-name", "test_tmp_file_", NULL);
58 
59   g_object_get (sink,
60       "location", &res_location,
61       "file-name", &res_file_name,
62       "ftp-port", &res_ftp_port,
63       "epsv-mode", &res_epsv_mode,
64       "create-dirs", &res_create_dirs,
65       "create-tmp-file", &res_create_tmpfile,
66       "temp-file-name", &res_tmp_file_name, NULL);
67 
68   fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
69       == 0);
70   fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
71       == 0);
72   fail_unless (strncmp (res_ftp_port, "1.2.3.4:0", strlen ("1.2.3.4:0"))
73       == 0);
74   fail_unless (strncmp (res_tmp_file_name, "test_tmp_file_",
75           strlen ("test_tmp_file_"))
76       == 0);
77   fail_unless (res_epsv_mode == FALSE);
78   fail_unless (res_create_dirs == FALSE);
79   fail_unless (res_create_tmpfile == FALSE);
80 
81   g_free (res_location);
82   g_free (res_file_name);
83   g_free (res_ftp_port);
84   g_free (res_tmp_file_name);
85 
86   /* change properties */
87   g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
88   g_object_set (G_OBJECT (sink), "file-name", "newfilename", NULL);
89   g_object_set (G_OBJECT (sink), "ftp-port", "", NULL);
90   g_object_set (G_OBJECT (sink), "epsv-mode", TRUE, NULL);
91   g_object_set (G_OBJECT (sink), "create-dirs", TRUE, NULL);
92   g_object_set (G_OBJECT (sink), "create-tmp-file", TRUE, NULL);
93   g_object_set (G_OBJECT (sink), "temp-file-name", "test_tmp_file_", NULL);
94 
95   g_object_get (sink,
96       "location", &res_location,
97       "file-name", &res_file_name,
98       "ftp-port", &res_ftp_port,
99       "epsv-mode", &res_epsv_mode,
100       "create-dirs", &res_create_dirs,
101       "create-tmp-file", &res_create_tmpfile,
102       "temp-file-name", &res_tmp_file_name, NULL);
103 
104   fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
105       == 0);
106   fail_unless (strncmp (res_file_name, "newfilename", strlen ("newfilename"))
107       == 0);
108   fail_unless (strncmp (res_ftp_port, "", strlen (""))
109       == 0);
110   fail_unless (strncmp (res_tmp_file_name, "test_tmp_file_",
111           strlen ("test_tmp_file_"))
112       == 0);
113   fail_unless (res_epsv_mode == TRUE);
114   fail_unless (res_create_dirs == TRUE);
115   fail_unless (res_create_dirs == TRUE);
116   fail_unless (res_create_tmpfile == TRUE);
117 
118   g_free (res_location);
119   g_free (res_file_name);
120   g_free (res_ftp_port);
121   g_free (res_tmp_file_name);
122 
123   cleanup_curlftpsink (sink);
124 }
125 
126 GST_END_TEST;
127 
128 static Suite *
curlsink_suite(void)129 curlsink_suite (void)
130 {
131   Suite *s = suite_create ("curlftpsink");
132   TCase *tc_chain = tcase_create ("general");
133 
134   suite_add_tcase (s, tc_chain);
135   tcase_set_timeout (tc_chain, 20);
136   tcase_add_test (tc_chain, test_properties);
137 
138   return s;
139 }
140 
141 GST_CHECK_MAIN (curlsink);
142