Skip to content

madflojo/testcerts

Repository files navigation

testcerts

Actions Status codecov Go Report Card Go Reference license

Stop saving test certificates in your code repos. Start generating them in your tests.

func TestFunc(t *testing.T) { // Create and write self-signed Certificate and Key to temporary files cert, key, err := testcerts.GenerateToTempFile("/tmp/") if err != nil { // do something	} defer os.Remove(key) defer os.Remove(cert) // Start HTTP Listener with test certificates err = http.ListenAndServeTLS("127.0.0.1:443", cert, key, someHandler) if err != nil { // do something	} }

For more complex tests, you can also use this package to create a Certificate Authority and a key pair signed by that Certificate Authority for any test domain you want.

func TestFunc(t *testing.T) { // Generate Certificate Authority ca := testcerts.NewCA() go func() { // Create a signed Certificate and Key for "localhost" certs, err := ca.NewKeyPair("localhost") if err != nil { // do something	} // Write certificates to a file err = certs.ToFile("/tmp/cert", "/tmp/key") if err { // do something	} // Start HTTP Listener err = http.ListenAndServeTLS("localhost:443", "/tmp/cert", "/tmp/key", someHandler) if err != nil { // do something	}	}() // Create a client with the self-signed CA client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: certs.ConfigureTLSConfig(ca.GenerateTLSConfig()),	},	} // Make an HTTPS request r, _ := client.Get("https://localhost") }

Simplify your testing, and don't hassle with certificates anymore.

Contributing

If you find a bug or have an idea for a feature, please open an issue or a pull request.

License

testcerts is released under the MIT License. See LICENSE for details.

About

Dynamically generate self-signed certificates and certificate authorities for Go tests

Topics

Resources

License

Stars

Watchers

Forks

Contributors