Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/auth/auth_test.go
4096 views
1
package auth_test
2
3
import (
4
"context"
5
"testing"
6
"time"
7
8
"github.com/grafana/agent/component"
9
"github.com/grafana/agent/component/otelcol"
10
"github.com/grafana/agent/component/otelcol/auth"
11
"github.com/grafana/agent/pkg/flow/componenttest"
12
"github.com/grafana/agent/pkg/util"
13
"github.com/stretchr/testify/require"
14
otelcomponent "go.opentelemetry.io/collector/component"
15
otelconfig "go.opentelemetry.io/collector/config"
16
)
17
18
func TestAuth(t *testing.T) {
19
var (
20
waitCreated = util.NewWaitTrigger()
21
onCreated = func() {
22
waitCreated.Trigger()
23
}
24
)
25
26
// Create and start our Flow component. We then wait for it to export a
27
// consumer that we can send data to.
28
te := newTestEnvironment(t, onCreated)
29
te.Start(fakeAuthArgs{})
30
31
require.NoError(t, waitCreated.Wait(time.Second), "extension never created")
32
}
33
34
type testEnvironment struct {
35
t *testing.T
36
37
Controller *componenttest.Controller
38
}
39
40
func newTestEnvironment(t *testing.T, onCreated func()) *testEnvironment {
41
t.Helper()
42
43
reg := component.Registration{
44
Name: "testcomponent",
45
Args: fakeAuthArgs{},
46
Exports: otelcol.ConsumerExports{},
47
Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
48
factory := otelcomponent.NewExtensionFactory(
49
"testcomponent",
50
func() otelconfig.Extension { return nil },
51
func(
52
_ context.Context,
53
_ otelcomponent.ExtensionCreateSettings,
54
_ otelconfig.Extension,
55
) (otelcomponent.Extension, error) {
56
57
onCreated()
58
return nil, nil
59
}, otelcomponent.StabilityLevelUndefined,
60
)
61
62
return auth.New(opts, factory, args.(auth.Arguments))
63
},
64
}
65
66
return &testEnvironment{
67
t: t,
68
Controller: componenttest.NewControllerFromReg(util.TestLogger(t), reg),
69
}
70
}
71
72
func (te *testEnvironment) Start(args component.Arguments) {
73
go func() {
74
ctx := componenttest.TestContext(te.t)
75
err := te.Controller.Run(ctx, args)
76
require.NoError(te.t, err, "failed to run component")
77
}()
78
}
79
80
type fakeAuthArgs struct {
81
}
82
83
var _ auth.Arguments = fakeAuthArgs{}
84
85
func (fa fakeAuthArgs) Convert() (otelconfig.Extension, error) {
86
settings := otelconfig.NewExtensionSettings(otelconfig.NewComponentID("testcomponent"))
87
return &settings, nil
88
}
89
90
func (fa fakeAuthArgs) Extensions() map[otelconfig.ComponentID]otelcomponent.Extension {
91
return nil
92
}
93
94
func (fa fakeAuthArgs) Exporters() map[otelconfig.DataType]map[otelconfig.ComponentID]otelcomponent.Exporter {
95
return nil
96
}
97
98