summaryrefslogtreecommitdiff
path: root/tests/check/elements/curlsmtpsink.c
blob: 450b721c188d207243a29fe22be7758f9f40308d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*
 * Unittest for curlsmtpsink
 */

#include <gst/check/gstcheck.h>
#include <glib/gstdio.h>
#include <curl/curl.h>

static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
    GST_PAD_SRC,
    GST_PAD_ALWAYS,
    GST_STATIC_CAPS_ANY);

static GstPad *srcpad;

static GstElement *sink;

static GstElement *
setup_curlsmtpsink (void)
{
  GST_DEBUG ("setup_curlsmtpsink");
  sink = gst_check_setup_element ("curlsmtpsink");
  srcpad = gst_check_setup_src_pad (sink, &srctemplate);
  fail_unless (gst_pad_set_active (srcpad, TRUE));

  return sink;
}

static void
cleanup_curlsmtpsink (GstElement * sink)
{
  GST_DEBUG ("cleanup_curlsmtpsink");

  gst_check_teardown_src_pad (sink);
  gst_check_teardown_element (sink);
}

GST_START_TEST (test_properties)
{
  GstElement *sink;
  gchar *res_location = NULL;
  gchar *res_file_name = NULL;
  gchar *res_mail_rcpt = NULL;
  gchar *res_mail_from = NULL;
  gchar *res_subj = NULL;
  gchar *res_msg = NULL;
  gchar *res_usr = NULL;
  gchar *res_passwd = NULL;
  gchar *res_pop_location = NULL;
  gchar *res_pop_usr = NULL;
  gchar *res_pop_passwd = NULL;
  guint res_nbr_attach;
  gboolean res_use_ssl;

  sink = setup_curlsmtpsink ();

  g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
  g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
  g_object_set (G_OBJECT (sink), "user", "usr", NULL);
  g_object_set (G_OBJECT (sink), "passwd", "passwd", NULL);
  g_object_set (G_OBJECT (sink), "mail-rcpt", "rcpt", NULL);
  g_object_set (G_OBJECT (sink), "mail-from", "sender", NULL);
  g_object_set (G_OBJECT (sink), "subject", "subject", NULL);
  g_object_set (G_OBJECT (sink), "message-body", "message", NULL);
  g_object_set (G_OBJECT (sink), "nbr-attachments", 5, NULL);
  g_object_set (G_OBJECT (sink), "use-ssl", TRUE, NULL);
  g_object_set (G_OBJECT (sink), "pop-location", "poploc", NULL);
  g_object_set (G_OBJECT (sink), "pop-user", "popusr", NULL);
  g_object_set (G_OBJECT (sink), "pop-passwd", "poppasswd", NULL);

  g_object_get (sink,
      "location", &res_location,
      "file-name", &res_file_name,
      "user", &res_usr,
      "passwd", &res_passwd,
      "mail-rcpt", &res_mail_rcpt,
      "mail-from", &res_mail_from,
      "subject", &res_subj,
      "message-body", &res_msg,
      "nbr-attachments", &res_nbr_attach,
      "use-ssl", &res_use_ssl,
      "pop-location", &res_pop_location,
      "pop_user", &res_pop_usr, "pop-passwd", &res_pop_passwd, NULL);

  fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
      == 0);
  fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
      == 0);
  fail_unless (strncmp (res_usr, "usr", strlen ("usr"))
      == 0);
  fail_unless (strncmp (res_passwd, "passwd", strlen ("passwd"))
      == 0);
  fail_unless (strncmp (res_mail_rcpt, "rcpt", strlen ("rcpt"))
      == 0);
  fail_unless (strncmp (res_mail_from, "sender", strlen ("sender"))
      == 0);
  fail_unless (strncmp (res_subj, "subject", strlen ("subject"))
      == 0);
  fail_unless (strncmp (res_msg, "message", strlen ("message"))
      == 0);
  fail_unless (strncmp (res_pop_location, "poploc", strlen ("poploc"))
      == 0);
  fail_unless (strncmp (res_pop_usr, "popusr", strlen ("popusr"))
      == 0);
  fail_unless (strncmp (res_pop_passwd, "poppasswd", strlen ("poppasswd"))
      == 0);
  fail_unless (res_nbr_attach == 5);
  fail_unless (res_use_ssl == TRUE);
  g_free (res_location);
  g_free (res_file_name);
  g_free (res_usr);
  g_free (res_passwd);
  g_free (res_mail_rcpt);
  g_free (res_mail_from);
  g_free (res_subj);
  g_free (res_msg);
  g_free (res_pop_location);
  g_free (res_pop_usr);
  g_free (res_pop_passwd);

  /* change properties */
  g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
  g_object_set (G_OBJECT (sink), "file-name", "newfilename", NULL);
  g_object_set (G_OBJECT (sink), "user", "newusr", NULL);
  g_object_set (G_OBJECT (sink), "passwd", "newpasswd", NULL);
  g_object_set (G_OBJECT (sink), "mail-rcpt", "rcpt1,rcpt2,rcpt3", NULL);
  g_object_set (G_OBJECT (sink), "mail-from", "newsender", NULL);
  g_object_set (G_OBJECT (sink), "subject", "newsubject", NULL);
  g_object_set (G_OBJECT (sink), "message-body", "newmessage", NULL);
  g_object_set (G_OBJECT (sink), "nbr-attachments", 1, NULL);
  g_object_set (G_OBJECT (sink), "use-ssl", FALSE, NULL);
  g_object_set (G_OBJECT (sink), "pop-location", "newpoploc", NULL);
  g_object_set (G_OBJECT (sink), "pop-user", "newpopusr", NULL);
  g_object_set (G_OBJECT (sink), "pop-passwd", "newpoppasswd", NULL);

  g_object_get (sink,
      "location", &res_location,
      "file-name", &res_file_name,
      "user", &res_usr,
      "passwd", &res_passwd,
      "pop_user", &res_pop_usr,
      "pop-passwd", &res_pop_passwd,
      "pop-location", &res_pop_location,
      "nbr-attachments", &res_nbr_attach,
      "subject", &res_subj,
      "use-ssl", &res_use_ssl,
      "message-body", &res_msg,
      "mail-from", &res_mail_from, "mail-rcpt", &res_mail_rcpt, NULL);

  fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
      == 0);
  fail_unless (strncmp (res_file_name, "newfilename", strlen ("newfilename"))
      == 0);
  fail_unless (strncmp (res_usr, "newusr", strlen ("newusr"))
      == 0);
  fail_unless (strncmp (res_passwd, "newpasswd", strlen ("newpasswd"))
      == 0);
  fail_unless (strncmp (res_mail_rcpt, "rcpt1,rcpt2,rcpt3",
          strlen ("rcpt1,rcpt2,rcpt3")) == 0);
  fail_unless (strncmp (res_mail_from, "newsender", strlen ("newsender"))
      == 0);
  fail_unless (strncmp (res_subj, "newsubject", strlen ("newsubject"))
      == 0);
  fail_unless (strncmp (res_msg, "newmessage", strlen ("newmessage"))
      == 0);
  fail_unless (strncmp (res_pop_location, "newpoploc", strlen ("newpoploc"))
      == 0);
  fail_unless (strncmp (res_pop_usr, "newpopusr", strlen ("newpopusr"))
      == 0);
  fail_unless (strncmp (res_pop_passwd, "newpoppasswd", strlen ("newpoppasswd"))
      == 0);

  fail_unless (res_nbr_attach == 1);
  fail_unless (res_use_ssl == FALSE);
  g_free (res_location);
  g_free (res_file_name);
  g_free (res_usr);
  g_free (res_passwd);
  g_free (res_mail_from);
  g_free (res_mail_rcpt);
  g_free (res_subj);
  g_free (res_msg);
  g_free (res_pop_location);
  g_free (res_pop_usr);
  g_free (res_pop_passwd);

  cleanup_curlsmtpsink (sink);
}

GST_END_TEST;

static Suite *
curlsink_suite (void)
{
  Suite *s = suite_create ("curlsmtpsink");
  TCase *tc_chain = tcase_create ("general");

  suite_add_tcase (s, tc_chain);
  tcase_set_timeout (tc_chain, 20);
  tcase_add_test (tc_chain, test_properties);

  return s;
}

GST_CHECK_MAIN (curlsink);