verify the username, email and nickname are valid when registering via OAuth 2.0

This commit is contained in:
MaysWind
2025-10-23 22:46:31 +08:00
parent b21fff5b15
commit d3ab2b94b7
24 changed files with 189 additions and 140 deletions
@@ -16,12 +16,17 @@ var (
// IsValidUsername reports whether username is valid
func IsValidUsername(username string) bool {
return usernamePattern.MatchString(username)
return len(username) <= 32 && usernamePattern.MatchString(username)
}
// IsValidEmail reports whether email is valid
func IsValidEmail(email string) bool {
return emailPattern.MatchString(email)
return len(email) <= 100 && emailPattern.MatchString(email)
}
// IsValidNickName reports whether user nick name is valid
func IsValidNickName(nickname string) bool {
return len(nickname) <= 64
}
// IsValidHexRGBColor reports whether color is valid
@@ -8,365 +8,318 @@ import (
func TestIsValidUsername_ValidUserName(t *testing.T) {
username := "foobar"
expectedValue := true
actualValue := IsValidUsername(username)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
username = "--foo_bar--"
expectedValue = true
actualValue = IsValidUsername(username)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidUsername_InvalidUserName(t *testing.T) {
username := "foo~bar~"
expectedValue := false
actualValue := IsValidUsername(username)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
username = "012345678901234567890123456789012"
actualValue = IsValidUsername(username)
assert.False(t, actualValue)
}
func TestIsValidEmail_ValidEmail(t *testing.T) {
email := "foo@bar.com"
expectedValue := true
actualValue := IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
email = "foo@1.2.3.4"
expectedValue = true
actualValue = IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
email = "foo_bar@foo.bar"
expectedValue = true
actualValue = IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidEmail_InvalidEmail(t *testing.T) {
email := "foo"
expectedValue := false
actualValue := IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
email = "@bar"
expectedValue = false
actualValue = IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
email = "foo@bar"
expectedValue = false
actualValue = IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
email = "foo@bar."
expectedValue = false
actualValue = IsValidEmail(email)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
email = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789@foobar.com"
actualValue = IsValidEmail(email)
assert.False(t, actualValue)
}
func TestIsValidNickName_ValidNickName(t *testing.T) {
nickname := "0123456789012345678901234567890123456789012345678901234567890123"
actualValue := IsValidNickName(nickname)
assert.True(t, actualValue)
}
func TestIsValidNickName_InvalidNickName(t *testing.T) {
username := "01234567890123456789012345678901234567890123456789012345678901234"
actualValue := IsValidNickName(username)
assert.False(t, actualValue)
}
func TestIsValidHexRGBColor_ValidHexRGBColor(t *testing.T) {
color := "000000"
expectedValue := true
actualValue := IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
color = "000"
expectedValue = true
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
color = "e0e0e0"
expectedValue = true
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
color = "ffffff"
expectedValue = true
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
color = "FFFFFF"
expectedValue = true
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidHexRGBColor_InvalidHexRGBColor(t *testing.T) {
color := "f"
expectedValue := false
actualValue := IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
color = "fffffff"
expectedValue = false
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
color = "gggggg"
expectedValue = false
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
color = "#ffffff"
expectedValue = false
actualValue = IsValidHexRGBColor(color)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
}
func TestIsValidLongDateTimeFormat_ValidLongDateTimeFormat(t *testing.T) {
datetime := "2024-09-01 12:34:56"
expectedValue := true
actualValue := IsValidLongDateTimeFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024-10-01 00:00:00"
expectedValue = true
actualValue = IsValidLongDateTimeFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "9999-12-31 23:59:59"
expectedValue = true
actualValue = IsValidLongDateTimeFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidLongDateTimeFormat_InvalidLongDateTimeFormat(t *testing.T) {
datetime := "2024-09-01"
expectedValue := false
actualValue := IsValidLongDateTimeFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12"
expectedValue = false
actualValue = IsValidLongDateTimeFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12:34"
expectedValue = false
actualValue = IsValidLongDateTimeFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
}
func TestIsValidLongDateTimeWithoutSecondFormat_ValidLongDateTimeWithoutSecondFormat(t *testing.T) {
datetime := "2024-09-01 12:34"
expectedValue := true
actualValue := IsValidLongDateTimeWithoutSecondFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024-10-01 00:00"
expectedValue = true
actualValue = IsValidLongDateTimeWithoutSecondFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "9999-12-31 23:59"
expectedValue = true
actualValue = IsValidLongDateTimeWithoutSecondFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidLongDateTimeWithoutSecondFormat_InvalidLongDateTimeWithoutSecondFormat(t *testing.T) {
datetime := "2024-09-01"
expectedValue := false
actualValue := IsValidLongDateTimeWithoutSecondFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12"
expectedValue = false
actualValue = IsValidLongDateTimeWithoutSecondFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12:34:56"
expectedValue = false
actualValue = IsValidLongDateTimeWithoutSecondFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
}
func TestIsValidLongDateFormat_ValidLongDateFormat(t *testing.T) {
datetime := "2024-09-01"
expectedValue := true
actualValue := IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "9999-12-31"
expectedValue = true
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidLongDateFormat_InvalidLongDateFormat(t *testing.T) {
datetime := "24-09-01"
expectedValue := false
actualValue := IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-9-1"
expectedValue = false
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-1"
expectedValue = false
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-9-01"
expectedValue = false
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12"
expectedValue = false
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12:34"
expectedValue = false
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
datetime = "2024-09-01 12:34:56"
expectedValue = false
actualValue = IsValidLongDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.False(t, actualValue)
}
func TestIsValidYearMonthDayLongOrShortDateFormat_ValidFormat(t *testing.T) {
datetime := "2024-09-01"
expectedValue := true
actualValue := IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "24-09-01"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024-09-1"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024-9-01"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024-9-1"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "9999-12-31"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024/09/01"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024.09.01"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "2024'09.01"
expectedValue = true
actualValue = IsValidYearMonthDayLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidMonthDayYearLongOrShortDateFormat_ValidFormat(t *testing.T) {
datetime := "09-01-2024"
expectedValue := true
actualValue := IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "09-01-24"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "09-1-2024"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "9-01-2024"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "9-1-2024"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "12-31-9999"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "09/01/2024"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "09.01.2024"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "09/01'2024"
expectedValue = true
actualValue = IsValidMonthDayYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}
func TestIsValidDayMonthYearLongDateFormat_ValidLongDateFormat(t *testing.T) {
datetime := "01-09-2024"
expectedValue := true
actualValue := IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "01-09-24"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "1-09-2024"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "01-9-2024"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "1-9-2024"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "31-12-9999"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "01/09/2024"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "01.09.2024"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
datetime = "01/09'2024"
expectedValue = true
actualValue = IsValidDayMonthYearLongOrShortDateFormat(datetime)
assert.Equal(t, expectedValue, actualValue)
assert.True(t, actualValue)
}