Organize backend into product executable and shared Go modules
This commit is contained in:
1 parent
981e84a4b4
commit
f0720ec66b
382 files changed
+1944
-6989
No files matched your search
@@ -0,0 +1,29 @@
|
||||
package mask
|
||||
|
||||
import "strings"
|
||||
|
||||
func Email(email string) string {
|
||||
parts := strings.Split(email, "@")
|
||||
if len(parts) != 2 {
|
||||
return email
|
||||
}
|
||||
local := parts[0]
|
||||
if len(local) > 2 {
|
||||
local = local[:1] + "***" + local[len(local)-1:]
|
||||
} else {
|
||||
local = local[:1] + "***"
|
||||
}
|
||||
return local + "@" + parts[1]
|
||||
}
|
||||
|
||||
func Emails(emails []string) []string {
|
||||
if emails == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
masked := make([]string, len(emails))
|
||||
for i, email := range emails {
|
||||
masked[i] = Email(email)
|
||||
}
|
||||
return masked
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package mask
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestEmailsMasksEachEmail(t *testing.T) {
|
||||
got := Emails([]string{"alice@example.com", "bo@example.org", "invalid"})
|
||||
want := []string{"a***e@example.com", "b***@example.org", "invalid"}
|
||||
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("Emails() = %#v, want %#v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEmailsPreservesNil(t *testing.T) {
|
||||
if got := Emails(nil); got != nil {
|
||||
t.Fatalf("Emails(nil) = %#v, want nil", got)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user