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) }) }) }