Skip to content

Commit 6d7668b

Browse files
ldezbodgit
andauthored
feat: replace copier with shallow copy (#154)
Co-authored-by: Matt Dainty <matt@bodgit-n-scarper.com>
1 parent a9acd25 commit 6d7668b

4 files changed

Lines changed: 43 additions & 8 deletions

File tree

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ require (
99
github.com/go-logr/logr v1.4.3
1010
github.com/hashicorp/go-multierror v1.1.1
1111
github.com/jcmturner/gokrb5/v8 v8.4.4
12-
github.com/jinzhu/copier v0.4.0
1312
github.com/miekg/dns v1.1.72
1413
github.com/openshift/gssapi v0.0.0-20161010215902-5fb4217df13b
1514
github.com/stretchr/testify v1.11.1

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,6 @@ github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh6
149149
github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=
150150
github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
151151
github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
152-
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
153-
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
154152
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
155153
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
156154
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=

internal/util/util.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"time"
1111

1212
"github.com/bodgit/tsig"
13-
"github.com/jinzhu/copier"
1413
"github.com/miekg/dns"
1514
)
1615

@@ -37,10 +36,8 @@ type Exchanger interface {
3736
// TCP. If the existing network is configured to only use IPv4 or IPv6 then
3837
// the appropriate network is chosen to maintain this choice.
3938
func CopyDNSClient(dnsClient *dns.Client) (*dns.Client, error) {
40-
client := new(dns.Client)
41-
if err := copier.Copy(client, dnsClient); err != nil {
42-
return nil, err
43-
}
39+
client := &dns.Client{}
40+
*client = *dnsClient
4441

4542
switch client.Net {
4643
case "tcp", "tcp4", "tcp6":

internal/util/util_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/bodgit/tsig/internal/util"
1010
"github.com/miekg/dns"
1111
"github.com/stretchr/testify/assert"
12+
"github.com/stretchr/testify/require"
1213
)
1314

1415
type FakeClient struct {
@@ -161,3 +162,43 @@ func TestCopyDNSClient(t *testing.T) {
161162
})
162163
}
163164
}
165+
166+
type mockTsigProvider struct {
167+
Name string
168+
}
169+
170+
func (f mockTsigProvider) Generate(_ []byte, _ *dns.TSIG) ([]byte, error) {
171+
return nil, nil
172+
}
173+
174+
func (f mockTsigProvider) Verify(_ []byte, _ *dns.TSIG) error {
175+
return nil
176+
}
177+
178+
func TestCopyDNSClient_shallow_copy(t *testing.T) {
179+
t.Parallel()
180+
181+
dnsClient := &dns.Client{
182+
Net: "udp",
183+
TsigProvider: &mockTsigProvider{Name: "original"},
184+
}
185+
186+
client, err := util.CopyDNSClient(dnsClient)
187+
require.NoError(t, err)
188+
189+
client.TsigProvider = &mockTsigProvider{Name: "copy"}
190+
191+
originalProvider, ok := dnsClient.TsigProvider.(*mockTsigProvider)
192+
require.True(t, ok)
193+
194+
assert.Equal(t, "original", originalProvider.Name)
195+
assert.Equal(t, "udp", dnsClient.Net)
196+
assert.Nil(t, dnsClient.TsigSecret)
197+
198+
copyProvider, ok := client.TsigProvider.(*mockTsigProvider)
199+
require.True(t, ok)
200+
201+
assert.Equal(t, "copy", copyProvider.Name)
202+
assert.Equal(t, "tcp", client.Net)
203+
assert.NotNil(t, client.TsigSecret)
204+
}

0 commit comments

Comments
 (0)