github.com/mailgun/mailgun-go/v3@v3.6.4/common_test.go (about) 1 package mailgun_test 2 3 import ( 4 "crypto/rand" 5 "fmt" 6 "strings" 7 ) 8 9 // randomString generates a string of given length, but random content. 10 // All content will be within the ASCII graphic character set. 11 // (Implementation from Even Shaw's contribution on 12 // http://stackoverflow.com/questions/12771930/what-is-the-fastest-way-to-generate-a-long-random-string-in-go). 13 func randomString(n int, prefix string) string { 14 const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 15 var bytes = make([]byte, n) 16 rand.Read(bytes) 17 for i, b := range bytes { 18 bytes[i] = alphanum[b%byte(len(alphanum))] 19 } 20 return prefix + string(bytes) 21 } 22 23 func randomEmail(prefix, domain string) string { 24 return strings.ToLower(fmt.Sprintf("%s@%s", randomString(20, prefix), domain)) 25 }