1 /*
2 * Unittest for curlhttpsink
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_curlhttpsink(void)19 setup_curlhttpsink (void)
20 {
21 GST_DEBUG ("setup_curlhttpsink");
22 sink = gst_check_setup_element ("curlhttpsink");
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_curlhttpsink(GstElement * sink)30 cleanup_curlhttpsink (GstElement * sink)
31 {
32 GST_DEBUG ("cleanup_curlhttpsink");
33
34 gst_check_teardown_src_pad (sink);
35 gst_check_teardown_element (sink);
36 }
37
38
GST_START_TEST(test_properties)39 GST_START_TEST (test_properties)
40 {
41 GstElement *sink;
42 gchar *res_location = NULL;
43 gchar *res_file_name = NULL;
44 gchar *res_user;
45 gchar *res_passwd;
46 gchar *res_proxy;
47 guint res_proxy_port;
48 gchar *res_proxy_user;
49 gchar *res_proxy_passwd;
50 gchar *res_content_type;
51 gboolean res_use_content_length;
52
53 sink = setup_curlhttpsink ();
54
55 g_object_set (G_OBJECT (sink),
56 "location", "mylocation",
57 "file-name", "myfile",
58 "user", "user",
59 "passwd", "passwd",
60 "proxy", "myproxy",
61 "proxy-port", 7777,
62 "proxy-user", "proxy_user",
63 "proxy-passwd", "proxy_passwd",
64 "content-type", "image/jpeg", "use-content-length", TRUE, NULL);
65
66 g_object_get (sink,
67 "location", &res_location,
68 "file-name", &res_file_name,
69 "user", &res_user,
70 "passwd", &res_passwd,
71 "proxy", &res_proxy,
72 "proxy-port", &res_proxy_port,
73 "proxy-user", &res_proxy_user,
74 "proxy-passwd", &res_proxy_passwd,
75 "content-type", &res_content_type,
76 "use-content-length", &res_use_content_length, NULL);
77
78 fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
79 == 0);
80 fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
81 == 0);
82 fail_unless (strncmp (res_user, "user", strlen ("user")) == 0);
83 fail_unless (strncmp (res_passwd, "passwd", strlen ("passwd")) == 0);
84 fail_unless (strncmp (res_proxy, "myproxy", strlen ("myproxy")) == 0);
85 fail_unless (res_proxy_port == 7777);
86 fail_unless (strncmp (res_proxy_user, "proxy_user", strlen ("proxy_user"))
87 == 0);
88 fail_unless (strncmp (res_proxy_passwd, "proxy_passwd",
89 strlen ("proxy_passwd")) == 0);
90 fail_unless (strncmp (res_content_type, "image/jpeg", strlen ("image/jpeg"))
91 == 0);
92 fail_unless (res_use_content_length == TRUE);
93
94 g_free (res_location);
95 g_free (res_file_name);
96 g_free (res_user);
97 g_free (res_passwd);
98 g_free (res_proxy);
99 g_free (res_proxy_user);
100 g_free (res_proxy_passwd);
101 g_free (res_content_type);
102
103 /* new properties */
104 g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
105 g_object_get (sink, "location", &res_location, NULL);
106 fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
107 == 0);
108 g_free (res_location);
109
110 g_object_set (G_OBJECT (sink), "file-name", "newfile", NULL);
111 g_object_get (sink, "file-name", &res_file_name, NULL);
112 fail_unless (strncmp (res_file_name, "newfile", strlen ("newfile"))
113 == 0);
114 g_free (res_file_name);
115
116 cleanup_curlhttpsink (sink);
117 }
118
119 GST_END_TEST;
120
121 static Suite *
curlsink_suite(void)122 curlsink_suite (void)
123 {
124 Suite *s = suite_create ("curlhttpsink");
125 TCase *tc_chain = tcase_create ("general");
126
127 suite_add_tcase (s, tc_chain);
128 tcase_set_timeout (tc_chain, 20);
129 tcase_add_test (tc_chain, test_properties);
130
131 return s;
132 }
133
134 GST_CHECK_MAIN (curlsink);
135