From 310f1479112ab8db5def8ba9fc928fbe873c82bd Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 8 Oct 2024 01:47:24 -0400 Subject: [PATCH] feat: allow single letter user id (#3991) * Allow single letter user id. They do work - I use one and login using Authelia, but then I am not able to update the profile to update avatar or add comment because "Invalid username: r" errors * Add test for the util with uid matcher * Move the test to separate directory * Use goimports on the test file * Rename the test for a mroe matching name, add failing test * Update the regexp so that two letter work --------- Co-authored-by: Roman Kamyk --- internal/util/resource_name.go | 2 +- test/util/resource_name_test.go | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 test/util/resource_name_test.go diff --git a/internal/util/resource_name.go b/internal/util/resource_name.go index f7a1124a9e708..ea40eb8456806 100644 --- a/internal/util/resource_name.go +++ b/internal/util/resource_name.go @@ -3,5 +3,5 @@ package util import "regexp" var ( - UIDMatcher = regexp.MustCompile("^[a-zA-Z0-9]([a-zA-Z0-9-]{1,30}[a-zA-Z0-9])$") + UIDMatcher = regexp.MustCompile("^[a-zA-Z0-9]([a-zA-Z0-9-]{0,30}[a-zA-Z0-9])?$") ) diff --git a/test/util/resource_name_test.go b/test/util/resource_name_test.go new file mode 100644 index 0000000000000..fecd335470c01 --- /dev/null +++ b/test/util/resource_name_test.go @@ -0,0 +1,37 @@ +package util_test + +import ( + "testing" + + "github.com/usememos/memos/internal/util" +) + +func TestUIDMatcher(t *testing.T) { + tests := []struct { + input string + expected bool + }{ + {"", false}, + {"-abc123", false}, + {"012345678901234567890123456789", true}, + {"1abc-123", true}, + {"A123B456C789", true}, + {"a", true}, + {"ab", true}, + {"a*b&c", false}, + {"a--b", true}, + {"a-1b-2c", true}, + {"a1234567890123456789012345678901", true}, + {"abc123", true}, + {"abc123-", false}, + } + + for _, test := range tests { + t.Run(test.input, func(t *testing.T) { + result := util.UIDMatcher.MatchString(test.input) + if result != test.expected { + t.Errorf("For input '%s', expected %v but got %v", test.input, test.expected, result) + } + }) + } +}