125 lines
2.7 KiB
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)
|
|
}
|