blob: ab1a56e0b34a9211732ed1f84772bbb18cf5bb6b (
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
|
#!/bin/bash
# Edge case tests
this_dir="$(cd "$(dirname "$0")" && pwd)"
source "${this_dir}/common.sh"
test_special_characters_in_value() {
local secret_value='!@#$%^&*()_+-=[]{}|;:",.<>?/`~'"'"
echo "${secret_value}" | szecret put "special-chars"
local retrieved
retrieved="$(szecret get "special-chars")"
assert_equals "${secret_value}" "${retrieved}" "special characters"
pass "handles special characters in value"
}
test_whitespace_in_value() {
local secret_value=$' leading and trailing spaces '
echo "${secret_value}" | szecret put "whitespace"
local retrieved
retrieved="$(szecret get "whitespace")"
assert_equals "${secret_value}" "${retrieved}" "whitespace"
pass "preserves whitespace in value"
}
test_empty_value() {
echo -n "" | szecret put "empty-secret"
local retrieved
retrieved="$(szecret get "empty-secret")"
assert_equals "" "${retrieved}" "empty value"
pass "handles empty value"
}
test_multiline_value() {
# Note: trailing newlines are stripped by bash $() substitution
# This is bash behavior, not a szecret limitation
local secret_value=$'line1\nline2\n\nline4 with spaces'
echo "${secret_value}" | szecret put "multiline"
local retrieved
retrieved="$(szecret get "multiline")"
assert_equals "${secret_value}" "${retrieved}" "multiline value"
pass "handles multiline value with blank lines"
}
test_unicode_in_value() {
local secret_value='Hello 世界 🔐 émoji café'
echo "${secret_value}" | szecret put "unicode"
local retrieved
retrieved="$(szecret get "unicode")"
assert_equals "${secret_value}" "${retrieved}" "unicode value"
pass "handles unicode in value"
}
test_secret_name_with_dashes() {
echo "value" | szecret put "my-secret-with-dashes"
assert_success szecret get "my-secret-with-dashes" >/dev/null
pass "handles dashes in secret name"
}
test_secret_name_with_underscores() {
echo "value" | szecret put "my_secret_with_underscores"
assert_success szecret get "my_secret_with_underscores" >/dev/null
pass "handles underscores in secret name"
}
test_secret_name_with_dots() {
echo "value" | szecret put "my.secret.with.dots"
assert_success szecret get "my.secret.with.dots" >/dev/null
pass "handles dots in secret name"
}
test_long_value() {
# Generate a long value (10KB)
local secret_value
secret_value="$(head -c 10240 /dev/urandom | base64)"
echo "${secret_value}" | szecret put "long-secret"
local retrieved
retrieved="$(szecret get "long-secret")"
assert_equals "${secret_value}" "${retrieved}" "long value"
pass "handles long value (10KB)"
}
run_tests() {
test_special_characters_in_value
test_whitespace_in_value
test_empty_value
test_multiline_value
test_unicode_in_value
test_secret_name_with_dashes
test_secret_name_with_underscores
test_secret_name_with_dots
test_long_value
}
[[ "${BASH_SOURCE[0]}" == "${0}" ]] && run_tests
|