summaryrefslogtreecommitdiff
path: root/secrets/test/edge-cases.sh
diff options
context:
space:
mode:
Diffstat (limited to 'secrets/test/edge-cases.sh')
-rwxr-xr-xsecrets/test/edge-cases.sh100
1 files changed, 100 insertions, 0 deletions
diff --git a/secrets/test/edge-cases.sh b/secrets/test/edge-cases.sh
new file mode 100755
index 0000000..ab1a56e
--- /dev/null
+++ b/secrets/test/edge-cases.sh
@@ -0,0 +1,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