mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-27 05:22:01 -08:00
* Dynamically refresh tls certs for all servers * make sure that CertLoader is always closed --------- Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package certloader
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/bluenviron/mediamtx/internal/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCertReload(t *testing.T) {
|
|
testData, err := tls.X509KeyPair(test.TLSCertPub, test.TLSCertKey)
|
|
require.NoError(t, err)
|
|
|
|
serverCertPath, err := test.CreateTempFile(test.TLSCertPub)
|
|
require.NoError(t, err)
|
|
defer os.Remove(serverCertPath)
|
|
|
|
serverKeyPath, err := test.CreateTempFile(test.TLSCertKey)
|
|
require.NoError(t, err)
|
|
defer os.Remove(serverKeyPath)
|
|
|
|
loader, err := New(serverCertPath, serverKeyPath, test.NilLogger)
|
|
require.NoError(t, err)
|
|
defer loader.Close()
|
|
|
|
getCert := loader.GetCertificate()
|
|
require.NotNil(t, getCert)
|
|
|
|
cert, err := getCert(nil)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, cert)
|
|
require.Equal(t, &testData, cert)
|
|
|
|
testData, err = tls.X509KeyPair(test.TLSCertPubAlt, test.TLSCertKeyAlt)
|
|
require.NoError(t, err)
|
|
|
|
err = os.WriteFile(serverCertPath, test.TLSCertPubAlt, 0o644)
|
|
require.NoError(t, err)
|
|
|
|
err = os.WriteFile(serverKeyPath, test.TLSCertKeyAlt, 0o644)
|
|
require.NoError(t, err)
|
|
|
|
time.Sleep(1 * time.Second)
|
|
|
|
cert, err = getCert(nil)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, cert)
|
|
require.Equal(t, &testData, cert)
|
|
}
|