Skip to content
Merged
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ require (
github.com/spiffe/go-spiffe/v2 v2.6.0
github.com/spiffe/spire-api-sdk v1.2.5-0.20250109200630-101d5e7de758
github.com/spiffe/spire-plugin-sdk v1.4.4-0.20250606112051-68609d83ce7c
github.com/stretchr/testify v1.10.0
github.com/stretchr/testify v1.11.1
github.com/uber-go/tally/v4 v4.1.17
github.com/valyala/fastjson v1.6.4
golang.org/x/crypto v0.41.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1713,8 +1713,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs=
Expand Down
71 changes: 40 additions & 31 deletions pkg/server/datastore/sqlstore/sqlstore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1754,12 +1754,14 @@ func (s *PluginSuite) TestPruneAttestedNodeEvents() {
},
} {
s.T().Run(tt.name, func(t *testing.T) {
s.Require().Eventuallyf(func() bool {
s.Require().EventuallyWithTf(func(collect *assert.CollectT) {
err = s.ds.PruneAttestedNodeEvents(ctx, tt.olderThan)
s.Require().NoError(err)
require.NoError(t, err)

resp, err := s.ds.ListAttestedNodeEvents(ctx, &datastore.ListAttestedNodeEventsRequest{})
s.Require().NoError(err)
return reflect.DeepEqual(tt.expectedEvents, resp.Events)
require.NoError(t, err)

assert.True(collect, reflect.DeepEqual(tt.expectedEvents, resp.Events))
}, 10*time.Second, 50*time.Millisecond, "Failed to prune entries correctly")
})
}
Expand All @@ -1777,49 +1779,54 @@ func (s *PluginSuite) TestNodeSelectors() {
}

// assert there are no selectors for foo
selectors := s.getNodeSelectors("foo", datastore.RequireCurrent)
selectors := s.getNodeSelectors("foo")
s.Require().Empty(selectors)
s.Eventually(func() bool {
selectors = s.getNodeSelectors("foo", datastore.TolerateStale)
return len(selectors) == 0
s.EventuallyWithT(func(collect *assert.CollectT) {
selectors, err := s.ds.GetNodeSelectors(ctx, "foo", datastore.TolerateStale)
require.NoError(collect, err)
assert.Len(collect, selectors, 0)
}, time.Second, 10*time.Millisecond)

// set selectors on foo and bar
s.setNodeSelectors("foo", foo1)
s.setNodeSelectors("bar", bar)

// get foo selectors
selectors = s.getNodeSelectors("foo", datastore.RequireCurrent)
selectors = s.getNodeSelectors("foo")
s.RequireProtoListEqual(foo1, selectors)
s.Eventually(func() bool {
selectors := s.getNodeSelectors("foo", datastore.TolerateStale)
return spiretest.CheckProtoListEqual(s.T(), foo1, selectors)
s.EventuallyWithT(func(collect *assert.CollectT) {
selectors, err := s.ds.GetNodeSelectors(ctx, "foo", datastore.TolerateStale)
require.NoError(collect, err)
assert.True(collect, spiretest.CheckProtoListEqual(s.T(), foo1, selectors))
}, time.Second, 10*time.Millisecond)

// replace foo selectors
s.setNodeSelectors("foo", foo2)
selectors = s.getNodeSelectors("foo", datastore.RequireCurrent)
selectors = s.getNodeSelectors("foo")
s.RequireProtoListEqual(foo2, selectors)
s.Eventually(func() bool {
selectors := s.getNodeSelectors("foo", datastore.TolerateStale)
return spiretest.CheckProtoListEqual(s.T(), foo2, selectors)
s.EventuallyWithT(func(collect *assert.CollectT) {
selectors, err := s.ds.GetNodeSelectors(ctx, "foo", datastore.TolerateStale)
require.NoError(collect, err)
assert.True(collect, spiretest.CheckProtoListEqual(s.T(), foo2, selectors))
}, time.Second, 10*time.Millisecond)

// delete foo selectors
s.setNodeSelectors("foo", []*common.Selector{})
selectors = s.getNodeSelectors("foo", datastore.RequireCurrent)
selectors = s.getNodeSelectors("foo")
s.Require().Empty(selectors)
s.Eventually(func() bool {
selectors := s.getNodeSelectors("foo", datastore.TolerateStale)
return len(selectors) == 0
s.EventuallyWithT(func(collect *assert.CollectT) {
selectors, err := s.ds.GetNodeSelectors(ctx, "foo", datastore.TolerateStale)
require.NoError(collect, err)
assert.Len(collect, selectors, 0)
}, time.Second, 10*time.Millisecond)

// get bar selectors (make sure they weren't impacted by deleting foo)
selectors = s.getNodeSelectors("bar", datastore.RequireCurrent)
selectors = s.getNodeSelectors("bar")
s.RequireProtoListEqual(bar, selectors)
s.Eventually(func() bool {
selectors := s.getNodeSelectors("bar", datastore.TolerateStale)
return spiretest.CheckProtoListEqual(s.T(), bar, selectors)
s.EventuallyWithT(func(collect *assert.CollectT) {
selectors, err := s.ds.GetNodeSelectors(ctx, "bar", datastore.TolerateStale)
require.NoError(collect, err)
assert.True(collect, spiretest.CheckProtoListEqual(s.T(), bar, selectors))
}, time.Second, 10*time.Millisecond)
}

Expand Down Expand Up @@ -4395,12 +4402,14 @@ func (s *PluginSuite) TestPruneRegistrationEntryEvents() {
},
} {
s.T().Run(tt.name, func(t *testing.T) {
s.Require().Eventuallyf(func() bool {
err = s.ds.PruneRegistrationEntryEvents(ctx, tt.olderThan)
s.Require().NoError(err)
s.Require().EventuallyWithTf(func(collect *assert.CollectT) {
err := s.ds.PruneRegistrationEntryEvents(ctx, tt.olderThan)
require.NoError(collect, err)

resp, err := s.ds.ListRegistrationEntryEvents(ctx, &datastore.ListRegistrationEntryEventsRequest{})
s.Require().NoError(err)
return reflect.DeepEqual(tt.expectedEvents, resp.Events)
require.NoError(collect, err)

assert.True(collect, reflect.DeepEqual(tt.expectedEvents, resp.Events))
}, 10*time.Second, 50*time.Millisecond, "Failed to prune entries correctly")
})
}
Expand Down Expand Up @@ -5456,8 +5465,8 @@ func makeFederatedRegistrationEntry() *common.RegistrationEntry {
}
}

func (s *PluginSuite) getNodeSelectors(spiffeID string, dataConsistency datastore.DataConsistency) []*common.Selector {
selectors, err := s.ds.GetNodeSelectors(ctx, spiffeID, dataConsistency)
func (s *PluginSuite) getNodeSelectors(spiffeID string) []*common.Selector {
selectors, err := s.ds.GetNodeSelectors(ctx, spiffeID, datastore.RequireCurrent)
s.Require().NoError(err)
return selectors
}
Expand Down
13 changes: 7 additions & 6 deletions pkg/server/plugin/notifier/k8sbundle/k8sbundle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,10 +255,10 @@ kube_config_file_path = "/some/file/path"
waitForInformerWatcher(t, test.webhookClient.watcherStarted)
webhook := newMutatingWebhook(t, test.webhookClient.Interface, "spire-webhook", "")

require.Eventually(t, func() bool {
require.EventuallyWithT(t, func(collect *assert.CollectT) {
actualWebhook, err := test.webhookClient.Get(context.Background(), webhook.Namespace, webhook.Name)
require.NoError(t, err)
return assert.Equal(t, &admissionv1.MutatingWebhookConfiguration{
require.NoError(collect, err)
assert.Equal(collect, &admissionv1.MutatingWebhookConfiguration{
ObjectMeta: metav1.ObjectMeta{
Name: webhook.Name,
ResourceVersion: "1",
Expand Down Expand Up @@ -287,10 +287,10 @@ kube_config_file_path = "/some/file/path"
waitForInformerWatcher(t, test.apiServiceClient.watcherStarted)
apiService := newAPIService(t, test.apiServiceClient.Interface, "spire-apiservice", "")

require.Eventually(t, func() bool {
require.EventuallyWithT(t, func(collect *assert.CollectT) {
actualAPIService, err := test.apiServiceClient.Get(context.Background(), apiService.Namespace, apiService.Name)
require.NoError(t, err)
return assert.Equal(t, &apiregistrationv1.APIService{
require.NoError(collect, err)
assert.Equal(collect, &apiregistrationv1.APIService{
ObjectMeta: metav1.ObjectMeta{
Name: apiService.Name,
ResourceVersion: "1",
Expand Down Expand Up @@ -739,6 +739,7 @@ func (c *fakeKubeClient) Get(_ context.Context, namespace, configMap string) (ru
}
return entry, nil
}

func (c *fakeKubeClient) GetList(context.Context) (runtime.Object, error) {
list := c.getConfigMapList()
if list.Items == nil {
Expand Down
Loading