verify the username, email and nickname are valid when registering via OAuth 2.0
This commit is contained in:
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user