arimelody-web/service/validator/validator_test.go

40 lines
1.2 KiB
Go
Raw Permalink Normal View History

package validator_test
import (
"arimelody-web/service/validator"
"testing"
"gotest.tools/v3/assert"
)
func Test_ValidateID(t *testing.T) {
t.Run("accepts alphanumberic ID", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("abcDEF123"), true)
})
t.Run("accepts hyphens", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("a0-1b"), true)
})
t.Run("accepts underscores", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("a0_1b"), true)
})
t.Run("accepts periods", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("a0.1b"), true)
})
t.Run("rejects other characters", func(t *testing.T) {
t.Run("emoji", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("🗣️🔥‼️"), false)
})
t.Run("slashes", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("this/could/be/really/bad/for/the/router"), false)
})
t.Run("question marks", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("query?these=nuts"), false)
})
t.Run("hashes", func(t *testing.T) {
assert.Equal(t, validator.ValidateID("unnecessary#tagging"), false)
})
})
}