From 7fd60fd2bc16824c73e7f49acb3ed66e0b17bf8b Mon Sep 17 00:00:00 2001 From: Jan Simon Date: Wed, 26 Feb 2025 10:47:35 +0100 Subject: [PATCH] test: add tests --- influxdb3/client_test.go | 74 ++++++++++++++++++++++++++++ influxdb3/testdata/invalid_certs.pem | 3 ++ influxdb3/testdata/valid_certs.pem | 41 +++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 influxdb3/testdata/invalid_certs.pem create mode 100644 influxdb3/testdata/valid_certs.pem diff --git a/influxdb3/client_test.go b/influxdb3/client_test.go index 220fb26..4ca0842 100644 --- a/influxdb3/client_test.go +++ b/influxdb3/client_test.go @@ -28,6 +28,7 @@ import ( "net/http/httptest" "net/url" "os" + "path/filepath" "strings" "testing" @@ -88,6 +89,79 @@ func TestNew(t *testing.T) { assert.EqualValues(t, DefaultWriteOptions, *c.config.WriteOptions) } +func TestNewWithCertificates(t *testing.T) { + // Valid certificates. + certFilePath := filepath.Join("testdata", "valid_certs.pem") + c, err := New(ClientConfig{ + Host: "https://localhost:8086", + Token: "my-token", + SSLRootsFilePath: certFilePath, + }) + require.NoError(t, err) + assert.NotNil(t, c) + assert.Equal(t, certFilePath, c.config.SSLRootsFilePath) + + // Invalid certificates. + certFilePath = filepath.Join("testdata", "invalid_certs.pem") + c, err = New(ClientConfig{ + Host: "https://localhost:8086", + Token: "my-token", + SSLRootsFilePath: certFilePath, + }) + require.NoError(t, err) + assert.NotNil(t, c) + assert.Equal(t, certFilePath, c.config.SSLRootsFilePath) + + // Missing certificates file. + certFilePath = filepath.Join("testdata", "non-existing-file") + c, err = New(ClientConfig{ + Host: "https://localhost:8086", + Token: "my-token", + SSLRootsFilePath: certFilePath, + }) + assert.Nil(t, c) + require.Error(t, err) + assert.ErrorContains(t, err, "error reading testdata/non-existing-file") +} + +func TestNewWithProxy(t *testing.T) { + defer func() { + // Cleanup: unset proxy. + os.Unsetenv("HTTPS_PROXY") + }() + + // Invalid proxy url. + c, err := New(ClientConfig{ + Host: "http://localhost:8086", + Token: "my-token", + Proxy: "http://proxy:invalid-port", + }) + assert.Nil(t, c) + require.Error(t, err) + assert.ErrorContains(t, err, "parsing proxy URL") + + // Valid proxy url. + c, err = New(ClientConfig{ + Host: "http://localhost:8086", + Token: "my-token", + Proxy: "http://proxy:8888", + }) + require.NoError(t, err) + assert.NotNil(t, c) + assert.Equal(t, "http://proxy:8888", c.config.Proxy) + + // Valid proxy url with HTTPS_PROXY env already set. + t.Setenv("HTTPS_PROXY", "http://another-proxy:8888") + c, err = New(ClientConfig{ + Host: "http://localhost:8086", + Token: "my-token", + Proxy: "http://proxy:8888", + }) + require.NoError(t, err) + assert.NotNil(t, c) + assert.Equal(t, "http://proxy:8888", c.config.Proxy) +} + func TestURLs(t *testing.T) { urls := []struct { HostURL string diff --git a/influxdb3/testdata/invalid_certs.pem b/influxdb3/testdata/invalid_certs.pem new file mode 100644 index 0000000..dfbaef2 --- /dev/null +++ b/influxdb3/testdata/invalid_certs.pem @@ -0,0 +1,3 @@ +-----BEGIN CERTIFICATE----- +invalid cert for testing +-----END CERTIFICATE----- diff --git a/influxdb3/testdata/valid_certs.pem b/influxdb3/testdata/valid_certs.pem new file mode 100644 index 0000000..5a64952 --- /dev/null +++ b/influxdb3/testdata/valid_certs.pem @@ -0,0 +1,41 @@ +-----BEGIN CERTIFICATE----- +MIIDOTCCAiGgAwIBAgIUds3ngsz1wADSjtgHjJeAHEXrdtEwDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTAyMjYwODU2MTZaFw0zNTAy +MjQwODU2MTZaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCEaJeyvvMZZ4bKdjERQor15UqejebevWJYp99Qp7qW +pggQs1h/i79mSZZ+Tsx8e3FrHQY5dAWCURXHan/Eda9mLTupzwCvHs0bYdTyo2en +CV6vszCyVqKJKWrsauwjNQ53f5XxJivvN5p19JzNYhE6SDzK3adNMhAVdeFm9Nl5 +Tt8/Kdc9Dxi4i57xmW1u0HnBx6dCuM/umwoqPWhDc4meiAual0/QRhxBvNp5JaBt +dinjPlFZHTSdM9Bb1iDYxXiFngprEPa5T0I50afEcSxCbdQ9pB9GrDcQlZCusKAL +3dGzktrZVrvpWGVpuE17ZbdXgV3jIivscxL3lJPrRI+lAgMBAAGjITAfMB0GA1Ud +DgQWBBTFaNfvzmp2+fu+twUYwxcDmsxNxjANBgkqhkiG9w0BAQsFAAOCAQEAGQtb +aDgMY4Zp0of5baIv4gV5TxBxOOZAlbBiRq5oKvNoR/k9+JtIaebPvq8pAl3mx1xq +Ie9OefoVSoiVFUvPH6/7NrQPaK4wTBrW7jjJtsbi4aqgfmrXvhBvomtKKiBHtX+/ +Sw6Z45OTCrFKp3c/KQLIFFEO2bkzXuP0bpYn+sWNUVxkjJwHTHuFe2DWE8xip5CJ +nk/SLK4DJMzQMF1KKvJpODnXZ38nHiqwPVf1IgeJpger+9e7H942Nx24QTn44Ugv +eo7pOm9mEf6N8ffjnsG1kXi3NTAGOgG08x9Od9g4Ko4AANpdNtW8fJUdDSmkJy71 +ekdLtYTJomjJi4RKAw== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIDOTCCAiGgAwIBAgIUJTjRsy12uoFYBDIe0finxvca0dowDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTAyMjYwODU4NDRaFw0zNTAy +MjQwODU4NDRaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDPozDfuIx0LcBteLmfwGSHX46no1ZvJXmexmeJeNr2 +q7wmjMxqQXuGnZgqV2ihNrN4nlqxHucOYbcSL5XpBWrhpZnyMLb0xGELz9O5q0X6 +V7WxDt+6kK2H+5BltqCEwGgPn/ou+KQaEU0w+CXeMMKi+y9zHnZ2AlNPDrELLTes +ZVgQ41ayh33XqINqb0Bct18IsSq3jOQM9S3HCOKwt5/YwfuByK/nUA8nsKqbiMsn +zsPC1MLmUKk7XSX1NSVJ6yr6GxbBRc/pn+/IL3EPefx8MhWlGBiQb+vNHkw88tnb +l/9/7G3KYvmkqPmtk2MctQu27MUd8C9Tn30XkKxOxgeDAgMBAAGjITAfMB0GA1Ud +DgQWBBR3j19033GyaEUbCWQkLFyEf2NzgzANBgkqhkiG9w0BAQsFAAOCAQEAEc9m +spxIYLSDTWuchJDW3mSjGDIdQhpW2MKuqYrrd27sXKgwSmdk86U6kgffVApXRBWZ +3Hbua4xekJU+oqJ7sIhe5ZUkiGb/l/E2aXTL+AVGKfYM6uH1+FJQS5CBCCnBcnNW +ts7W0eDxruiCDvMdnMReI7mjbRQbQBfzujjKxljxwqgiCMgFrdeU5D1Exv7m+LjF +OqijDPJeeWDcYf7mwAUJ1sYJgOKC57fARSQH0JwgclxFJImIJji7ZuYgPPi9xRIm +tMZJ+Tum8KDfBY3GFdK5AguOw6Nd6ZsGEscq4Y7BvUUDFP6RsTTgOgpRrqKD3oMF +1tKPLtx124L6qXdmgw== +-----END CERTIFICATE-----