Files
Gumble-Backend/internal/util/string_test.go
Zane Walker 7e940c83a7
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
(Feat): Initial Commit
2026-07-03 19:41:31 +05:30

83 lines
2.7 KiB
Go

package util_test
import (
"encoding/base64"
"encoding/hex"
"testing"
"allaboutapps.dev/aw/go-starter/internal/util"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestGenerateRandom(t *testing.T) {
res, err := util.GenerateRandomBytes(13)
require.NoError(t, err)
assert.Len(t, res, 13)
randString, err := util.GenerateRandomBase64String(17)
require.NoError(t, err)
res, err = base64.StdEncoding.DecodeString(randString)
require.NoError(t, err)
assert.Len(t, res, 17)
randString, err = util.GenerateRandomHexString(19)
require.NoError(t, err)
res, err = hex.DecodeString(randString)
require.NoError(t, err)
assert.Len(t, res, 19)
randString, err = util.GenerateRandomString(19, []util.CharRange{util.CharRangeAlphaLowerCase}, "/%$")
require.NoError(t, err)
assert.Len(t, randString, 19)
for _, r := range randString {
assert.True(t, (r >= 'a' && r <= 'z') || r == '/' || r == '%' || r == '$')
}
randString, err = util.GenerateRandomString(19, []util.CharRange{util.CharRangeAlphaUpperCase}, "^\"")
require.NoError(t, err)
assert.Len(t, randString, 19)
for _, r := range randString {
assert.True(t, (r >= 'A' && r <= 'Z') || r == '^' || r == '"')
}
randString, err = util.GenerateRandomString(19, []util.CharRange{util.CharRangeNumeric}, "")
require.NoError(t, err)
assert.Len(t, randString, 19)
for _, r := range randString {
assert.True(t, (r >= '0' && r <= '9'))
}
_, err = util.GenerateRandomString(1, nil, "")
require.Error(t, err)
randString, err = util.GenerateRandomString(8, nil, "a")
require.NoError(t, err)
assert.Len(t, randString, 8)
assert.Equal(t, "aaaaaaaa", randString)
}
func TestNonEmptyOrNil(t *testing.T) {
assert.Equal(t, "test", *util.NonEmptyOrNil("test"))
assert.Equal(t, (*string)(nil), util.NonEmptyOrNil(""))
}
func TestContainsAll(t *testing.T) {
assert.True(t, util.ContainsAll("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "dolor"))
assert.False(t, util.ContainsAll("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "dolorx"))
assert.True(t, util.ContainsAll("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", ".", "sit", "elit", "ipsum", "Lorem ipsum"))
assert.False(t, util.ContainsAll("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", ".", "sit", "elit", "ipsum", " Lorem"))
assert.True(t, util.ContainsAll("Lorem ipsum dolor sit amet, ÄÜiö consectetur adipiscing elit.", "ÄÜiö c"))
assert.False(t, util.ContainsAll("", "ÄÜiö c"))
assert.True(t, util.ContainsAll("Lorem ipsum dolor sit amet, ÄÜiö consectetur adipiscing elit.", ""))
}
func TestEmptyIfNil(t *testing.T) {
s := "Lorem ipsum"
assert.Equal(t, s, util.EmptyIfNil(&s))
assert.Empty(t, util.EmptyIfNil(nil))
}