opentelemetry-collector/extension/extensionauth/client_test.go

125 lines
2.7 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package extensionauth
import (
"context"
"net/http"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/credentials"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/component/componenttest"
)
func TestClientDefaultValues(t *testing.T) {
// prepare
e, err := NewClient()
require.NoError(t, err)
// test
t.Run("start", func(t *testing.T) {
err := e.Start(context.Background(), componenttest.NewNopHost())
assert.NoError(t, err)
})
t.Run("roundtripper", func(t *testing.T) {
ctx, err := e.RoundTripper(http.DefaultTransport)
assert.NotNil(t, ctx)
assert.NoError(t, err)
})
t.Run("per-rpc-credentials", func(t *testing.T) {
p, err := e.PerRPCCredentials()
assert.Nil(t, p)
assert.NoError(t, err)
})
t.Run("shutdown", func(t *testing.T) {
err := e.Shutdown(context.Background())
assert.NoError(t, err)
})
}
func TestWithClientStart(t *testing.T) {
called := false
e, err := NewClient(WithClientStart(func(context.Context, component.Host) error {
called = true
return nil
}))
require.NoError(t, err)
// test
err = e.Start(context.Background(), componenttest.NewNopHost())
// verify
assert.True(t, called)
assert.NoError(t, err)
}
func TestWithClientShutdown(t *testing.T) {
called := false
e, err := NewClient(WithClientShutdown(func(context.Context) error {
called = true
return nil
}))
require.NoError(t, err)
// test
err = e.Shutdown(context.Background())
// verify
assert.True(t, called)
assert.NoError(t, err)
}
func TestWithClientRoundTripper(t *testing.T) {
called := false
e, err := NewClient(WithClientRoundTripper(func(base http.RoundTripper) (http.RoundTripper, error) {
called = true
return base, nil
}))
require.NoError(t, err)
// test
rt, err := e.RoundTripper(http.DefaultTransport)
// verify
assert.True(t, called)
assert.NotNil(t, rt)
assert.NoError(t, err)
}
type customPerRPCCredentials struct{}
var _ credentials.PerRPCCredentials = (*customPerRPCCredentials)(nil)
func (c *customPerRPCCredentials) GetRequestMetadata(context.Context, ...string) (map[string]string, error) {
return nil, nil
}
func (c *customPerRPCCredentials) RequireTransportSecurity() bool {
return true
}
func TestWithPerRPCCredentials(t *testing.T) {
called := false
e, err := NewClient(WithClientPerRPCCredentials(func() (credentials.PerRPCCredentials, error) {
called = true
return &customPerRPCCredentials{}, nil
}))
require.NoError(t, err)
// test
p, err := e.PerRPCCredentials()
// verify
assert.True(t, called)
assert.NotNil(t, p)
assert.NoError(t, err)
}