HEAVY: finish music service migration, tidy up services, more tests

This commit is contained in:
ari melody 2026-08-01 00:29:31 +01:00
parent 9e311df462
commit 90a671982c
Signed by: ari
GPG key ID: CF99829C92678188
47 changed files with 2698 additions and 902 deletions

View file

@ -0,0 +1,8 @@
package validator
import "regexp"
var idRegexp = regexp.MustCompile(`^[a-zA-Z0-9\-_\.]+$`)
func ValidateID(id string) bool {
return idRegexp.MatchString(id)
}

View file

@ -0,0 +1,39 @@
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)
})
})
}