1 /* check-sources:disable-copyright-check */
2 #include <unistd.h>
3 #include <check.h>
4 #include <droplet.h>
5 #include <droplet/utils.h>
6 #include <droplet/uks/uks.h>
7 #include "utest_main.h"
8
START_TEST(strrstr_test)9 START_TEST(strrstr_test)
10 {
11 dpl_assert_str_eq(dpl_strrstr("lev1DIRlev2DIRlev3", "DIR"), "DIRlev3");
12 dpl_assert_str_eq(dpl_strrstr("foo/bar/", "/"), "/");
13 }
14 END_TEST
15
START_TEST(xattrs_test)16 START_TEST(xattrs_test)
17 {
18 char path[] = "/tmp/test_droplet_util_XXXXXX";
19 dpl_dict_t* dict = NULL;
20 int ret;
21 char* value = NULL;
22
23 int fd = mkstemp(path);
24 dpl_assert_int_ne(-1, fd);
25 ret = close(fd);
26 dpl_assert_int_eq(0, ret);
27
28 char command[1000];
29 sprintf(command, "sh " SRCDIR "/tools/util_utest.sh prepare %s", path);
30 ret = system(command);
31 dpl_assert_int_eq(0, ret);
32
33 /* No encoding, with prefix filter */
34 dict = dpl_dict_new(13);
35 dpl_assert_ptr_not_null(dict);
36 ret = dpl_get_xattrs(path, dict, "user.", XATTRS_NO_ENCODING);
37 dpl_assert_int_eq(DPL_SUCCESS, ret);
38
39 ret = dpl_dict_count(dict);
40 dpl_assert_int_eq(100, ret);
41 value = dpl_dict_get_value(dict, "key042");
42 dpl_assert_ptr_not_null(value);
43 dpl_assert_str_eq("value042", value);
44 dpl_dict_free(dict);
45
46 /* No encoding, without prefix filter */
47 dict = dpl_dict_new(13);
48 dpl_assert_ptr_not_null(dict);
49 ret = dpl_get_xattrs(path, dict, NULL, XATTRS_NO_ENCODING);
50 dpl_assert_int_eq(DPL_SUCCESS, ret);
51
52 ret = dpl_dict_count(dict);
53 dpl_assert_int_eq(101, ret); /* 100 user attributes + 1 acl */
54 value = dpl_dict_get_value(dict, "user.key042");
55 dpl_assert_ptr_not_null(value);
56 dpl_assert_str_eq("value042", value);
57 dpl_dict_free(dict);
58
59 /* Base64 encoding, without prefix filter */
60 dict = dpl_dict_new(13);
61 dpl_assert_ptr_not_null(dict);
62 ret = dpl_get_xattrs(path, dict, NULL, XATTRS_ENCODE_BASE64);
63 dpl_assert_int_eq(DPL_SUCCESS, ret);
64
65 ret = dpl_dict_count(dict);
66 dpl_assert_int_eq(101, ret); /* 100 user attributes + 1 acl */
67 value = dpl_dict_get_value(dict, "user.key042");
68 dpl_assert_ptr_not_null(value);
69 dpl_assert_str_eq("dmFsdWUwNDI=", value);
70 dpl_dict_free(dict);
71
72 sprintf(command, "sh " SRCDIR "/tools/util_utest.sh clean %s", path);
73 ret = system(command);
74 dpl_assert_int_eq(0, ret);
75 }
76 END_TEST
77
START_TEST(uks_hash_setget_test)78 START_TEST(uks_hash_setget_test)
79 {
80 int hash_set = 0xcabefe;
81 int hash_rd = 0;
82 int ret;
83 BIGNUM* bn = BN_new();
84 dpl_assert_ptr_not_null(bn);
85
86 BN_set_bit(bn, DPL_UKS_NBITS - 1);
87 BN_clear_bit(bn, DPL_UKS_NBITS - 1);
88
89 ret = dpl_uks_hash_set(bn, hash_set);
90 dpl_assert_int_eq(ret, DPL_SUCCESS);
91
92 hash_rd = dpl_uks_hash_get(bn);
93 dpl_assert_int_eq(hash_set, hash_rd);
94
95 BN_free(bn);
96 }
97 END_TEST
98
util_suite(void)99 Suite* util_suite(void)
100 {
101 Suite* s = suite_create("util");
102 TCase* t = tcase_create("base");
103 tcase_add_test(t, strrstr_test);
104 tcase_add_test(t, xattrs_test);
105 tcase_add_test(t, uks_hash_setget_test);
106 suite_add_tcase(s, t);
107 return s;
108 }
109