2 * Copyright (C) 2013 Sebastian Rasmussen <sebras@hotmail.com>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
20 #include <gst/check/gstcheck.h>
22 #include <rtsp-permissions.h>
24 GST_START_TEST (test_permissions)
26 GstRTSPPermissions *perms;
27 GstRTSPPermissions *copy;
29 perms = gst_rtsp_permissions_new ();
30 fail_if (gst_rtsp_permissions_is_allowed (perms, "missing", "permission1"));
31 gst_rtsp_permissions_unref (perms);
33 perms = gst_rtsp_permissions_new ();
34 gst_rtsp_permissions_add_role (perms, "user",
35 "permission1", G_TYPE_BOOLEAN, TRUE,
36 "permission2", G_TYPE_BOOLEAN, FALSE, NULL);
37 fail_unless (gst_rtsp_permissions_is_allowed (perms, "user", "permission1"));
38 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission2"));
39 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "missing"));
40 fail_if (gst_rtsp_permissions_is_allowed (perms, "missing", "permission1"));
41 copy = GST_RTSP_PERMISSIONS (gst_mini_object_copy (GST_MINI_OBJECT (perms)));
42 gst_rtsp_permissions_unref (perms);
43 fail_unless (gst_rtsp_permissions_is_allowed (copy, "user", "permission1"));
44 fail_if (gst_rtsp_permissions_is_allowed (copy, "user", "permission2"));
45 gst_rtsp_permissions_unref (copy);
47 perms = gst_rtsp_permissions_new ();
48 gst_rtsp_permissions_add_role (perms, "admin",
49 "permission1", G_TYPE_BOOLEAN, TRUE,
50 "permission2", G_TYPE_BOOLEAN, TRUE, NULL);
51 gst_rtsp_permissions_add_role (perms, "user",
52 "permission1", G_TYPE_BOOLEAN, TRUE,
53 "permission2", G_TYPE_BOOLEAN, FALSE, NULL);
54 fail_unless (gst_rtsp_permissions_is_allowed (perms, "admin", "permission1"));
55 fail_unless (gst_rtsp_permissions_is_allowed (perms, "admin", "permission2"));
56 fail_unless (gst_rtsp_permissions_is_allowed (perms, "user", "permission1"));
57 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission2"));
58 gst_rtsp_permissions_unref (perms);
60 perms = gst_rtsp_permissions_new ();
61 gst_rtsp_permissions_add_role (perms, "user",
62 "permission1", G_TYPE_BOOLEAN, TRUE,
63 "permission2", G_TYPE_BOOLEAN, FALSE, NULL);
64 fail_unless (gst_rtsp_permissions_is_allowed (perms, "user", "permission1"));
65 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission2"));
66 gst_rtsp_permissions_add_role (perms, "user",
67 "permission1", G_TYPE_BOOLEAN, FALSE,
68 "permission2", G_TYPE_BOOLEAN, TRUE, NULL);
69 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission1"));
70 fail_unless (gst_rtsp_permissions_is_allowed (perms, "user", "permission2"));
71 gst_rtsp_permissions_unref (perms);
73 perms = gst_rtsp_permissions_new ();
74 gst_rtsp_permissions_add_role (perms, "admin",
75 "permission1", G_TYPE_BOOLEAN, TRUE,
76 "permission2", G_TYPE_BOOLEAN, TRUE, NULL);
77 gst_rtsp_permissions_add_role (perms, "user",
78 "permission1", G_TYPE_BOOLEAN, TRUE,
79 "permission2", G_TYPE_BOOLEAN, FALSE, NULL);
80 fail_unless (gst_rtsp_permissions_is_allowed (perms, "admin", "permission1"));
81 fail_unless (gst_rtsp_permissions_is_allowed (perms, "admin", "permission2"));
82 fail_unless (gst_rtsp_permissions_is_allowed (perms, "user", "permission1"));
83 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission2"));
84 gst_rtsp_permissions_remove_role (perms, "user");
85 fail_unless (gst_rtsp_permissions_is_allowed (perms, "admin", "permission1"));
86 fail_unless (gst_rtsp_permissions_is_allowed (perms, "admin", "permission2"));
87 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission1"));
88 fail_if (gst_rtsp_permissions_is_allowed (perms, "user", "permission2"));
89 gst_rtsp_permissions_unref (perms);
95 rtsppermissions_suite (void)
97 Suite *s = suite_create ("rtsppermissions");
98 TCase *tc = tcase_create ("general");
100 suite_add_tcase (s, tc);
101 tcase_set_timeout (tc, 20);
102 tcase_add_test (tc, test_permissions);
107 GST_CHECK_MAIN (rtsppermissions);