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  }