40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
|
|
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)
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|