Skip to content

Commit fcb3086

Browse files
committed
fix tests again
1 parent 4eccf40 commit fcb3086

File tree

2 files changed

+87
-81
lines changed

2 files changed

+87
-81
lines changed

provider/coredns/coredns.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,15 @@ func (c etcdClient) SaveService(ctx context.Context, service *Service) error {
154154
if err != nil {
155155
return fmt.Errorf("etcd get %q: %w", service.Key, err)
156156
}
157-
if r == nil || len(r.Kvs) == 0 {
158-
// Key missing -> treat as owned (safe to create)
159-
return nil
160-
}
161-
svc, err := c.unmarshalService(r.Kvs[0])
162-
if err != nil {
163-
return fmt.Errorf("failed to unmarshal value for key %q: %w", service.Key, err)
164-
}
165-
if svc.OwnedBy != c.ownerID {
166-
return fmt.Errorf("key %q is not owned by this provider", service.Key)
157+
// Key missing -> treat as owned (safe to create)
158+
if r != nil && len(r.Kvs) != 0 {
159+
svc, err := c.unmarshalService(r.Kvs[0])
160+
if err != nil {
161+
return fmt.Errorf("failed to unmarshal value for key %q: %w", service.Key, err)
162+
}
163+
if svc.OwnedBy != c.ownerID {
164+
return fmt.Errorf("key %q is not owned by this provider", service.Key)
165+
}
167166
}
168167
service.OwnedBy = c.ownerID
169168
}

provider/coredns/coredns_test.go

Lines changed: 78 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -504,14 +504,15 @@ func TestGetServices_Success(t *testing.T) {
504504
value, err := json.Marshal(svc)
505505
require.NoError(t, err)
506506
mockKV := new(MockEtcdKV)
507-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{
508-
Kvs: []*mvccpb.KeyValue{
509-
{
510-
Key: []byte("/prefix/1"),
511-
Value: value,
507+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
508+
Return(&etcdcv3.GetResponse{
509+
Kvs: []*mvccpb.KeyValue{
510+
{
511+
Key: []byte("/prefix/1"),
512+
Value: value,
513+
},
512514
},
513-
},
514-
}, nil)
515+
}, nil)
515516

516517
c := etcdClient{
517518
client: &etcdcv3.Client{
@@ -537,18 +538,19 @@ func TestGetServices_Duplicate(t *testing.T) {
537538
value, err := json.Marshal(svc)
538539
require.NoError(t, err)
539540

540-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{
541-
Kvs: []*mvccpb.KeyValue{
542-
{
543-
Key: []byte("/prefix/1"),
544-
Value: value,
545-
},
546-
{
547-
Key: []byte("/prefix/1"),
548-
Value: value,
541+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
542+
Return(&etcdcv3.GetResponse{
543+
Kvs: []*mvccpb.KeyValue{
544+
{
545+
Key: []byte("/prefix/1"),
546+
Value: value,
547+
},
548+
{
549+
Key: []byte("/prefix/1"),
550+
Value: value,
551+
},
549552
},
550-
},
551-
}, nil)
553+
}, nil)
552554

553555
result, err := c.GetServices(context.Background(), "/prefix")
554556
assert.NoError(t, err)
@@ -570,18 +572,19 @@ func TestGetServices_Multiple(t *testing.T) {
570572
value2, err := json.Marshal(svc2)
571573
require.NoError(t, err)
572574

573-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{
574-
Kvs: []*mvccpb.KeyValue{
575-
{
576-
Key: []byte("/prefix/1"),
577-
Value: value,
578-
},
579-
{
580-
Key: []byte("/prefix/2"),
581-
Value: value2,
575+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
576+
Return(&etcdcv3.GetResponse{
577+
Kvs: []*mvccpb.KeyValue{
578+
{
579+
Key: []byte("/prefix/1"),
580+
Value: value,
581+
},
582+
{
583+
Key: []byte("/prefix/2"),
584+
Value: value2,
585+
},
582586
},
583-
},
584-
}, nil)
587+
}, nil)
585588

586589
result, err := c.GetServices(context.Background(), "/prefix")
587590
assert.NoError(t, err)
@@ -609,22 +612,23 @@ func TestGetServices_FilterOutOtherServicesOwnerIDSetButNothingChanged(t *testin
609612
value3, err := json.Marshal(svc3)
610613
require.NoError(t, err)
611614

612-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{
613-
Kvs: []*mvccpb.KeyValue{
614-
{
615-
Key: []byte("/prefix/1"),
616-
Value: value,
617-
},
618-
{
619-
Key: []byte("/prefix/2"),
620-
Value: value2,
621-
},
622-
{
623-
Key: []byte("/prefix/3"),
624-
Value: value3,
615+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
616+
Return(&etcdcv3.GetResponse{
617+
Kvs: []*mvccpb.KeyValue{
618+
{
619+
Key: []byte("/prefix/1"),
620+
Value: value,
621+
},
622+
{
623+
Key: []byte("/prefix/2"),
624+
Value: value2,
625+
},
626+
{
627+
Key: []byte("/prefix/3"),
628+
Value: value3,
629+
},
625630
},
626-
},
627-
}, nil)
631+
}, nil)
628632

629633
result, err := c.GetServices(context.Background(), "/prefix")
630634
assert.NoError(t, err)
@@ -651,22 +655,23 @@ func TestGetServices_FilterOutOtherServicesWithStrictlyOwned(t *testing.T) {
651655
value3, err := json.Marshal(svc3)
652656
require.NoError(t, err)
653657

654-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{
655-
Kvs: []*mvccpb.KeyValue{
656-
{
657-
Key: []byte("/prefix/1"),
658-
Value: value,
659-
},
660-
{
661-
Key: []byte("/prefix/2"),
662-
Value: value2,
663-
},
664-
{
665-
Key: []byte("/prefix/3"),
666-
Value: value3,
658+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
659+
Return(&etcdcv3.GetResponse{
660+
Kvs: []*mvccpb.KeyValue{
661+
{
662+
Key: []byte("/prefix/1"),
663+
Value: value,
664+
},
665+
{
666+
Key: []byte("/prefix/2"),
667+
Value: value2,
668+
},
669+
{
670+
Key: []byte("/prefix/3"),
671+
Value: value3,
672+
},
667673
},
668-
},
669-
}, nil)
674+
}, nil)
670675

671676
result, err := c.GetServices(context.Background(), "/prefix")
672677
assert.NoError(t, err)
@@ -682,18 +687,19 @@ func TestGetServices_UnmarshalError(t *testing.T) {
682687
},
683688
}
684689

685-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{
686-
Kvs: []*mvccpb.KeyValue{
687-
{
688-
Key: []byte("/prefix/1"),
689-
Value: []byte("invalid-json"),
690-
},
691-
{
692-
Key: []byte("/prefix/1"),
693-
Value: []byte("invalid-json"),
690+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
691+
Return(&etcdcv3.GetResponse{
692+
Kvs: []*mvccpb.KeyValue{
693+
{
694+
Key: []byte("/prefix/1"),
695+
Value: []byte("invalid-json"),
696+
},
697+
{
698+
Key: []byte("/prefix/1"),
699+
Value: []byte("invalid-json"),
700+
},
694701
},
695-
},
696-
}, nil)
702+
}, nil)
697703

698704
_, err := c.GetServices(context.Background(), "/prefix")
699705
assert.Error(t, err)
@@ -708,7 +714,8 @@ func TestGetServices_GetError(t *testing.T) {
708714
},
709715
}
710716

711-
mockKV.On("Get", mock.Anything, "/prefix").Return(&etcdcv3.GetResponse{}, errors.New("etcd failure"))
717+
mockKV.On("Get", mock.Anything, "/prefix", mock.AnythingOfType("clientv3.OpOption")).
718+
Return(&etcdcv3.GetResponse{}, errors.New("etcd failure"))
712719

713720
_, err := c.GetServices(context.Background(), "/prefix")
714721
assert.Error(t, err)

0 commit comments

Comments
 (0)