Skip to content

Commit dd68bd8

Browse files
fix: Fix unit tests that fail when using Go 1.15 (#485)
* fix: Fixed broken unit tests now failing with Go 1.15.2 Unclear why these didn't fail with Go 1.13.x closes #463 Signed-off-by: lenny <[email protected]>
1 parent b0f6186 commit dd68bd8

File tree

9 files changed

+37
-47
lines changed

9 files changed

+37
-47
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ require (
2323
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c // indirect
2424
github.com/xdg/stringprep v1.0.0 // indirect
2525
go.mongodb.org/mongo-driver v1.1.1
26-
)
26+
)

internal/security/credentials_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ func getSecretsTestData() secretTestData {
151151
}
152152

153153
func TestGetSecrets(t *testing.T) {
154+
os.Clearenv()
154155
secretProvider := newMockSecretProvider(nil)
155156

156157
for i, test := range getSecretsTestData() {
@@ -172,7 +173,7 @@ func TestGetSecrets(t *testing.T) {
172173
}
173174

174175
func TestGetInsecureSecrets(t *testing.T) {
175-
176+
os.Clearenv()
176177
secretProvider, origEnv := setupGetInsecureSecrets(t)
177178

178179
for _, test := range getSecretsTestData() {

internal/v2/controller/http/mockprovider_test.go renamed to internal/security/mockprovider.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// SPDX-License-Identifier: Apache-2.0
1515
//
1616

17-
package http
17+
package security
1818

1919
import (
2020
"context"
@@ -24,7 +24,6 @@ import (
2424
"time"
2525

2626
"github.com/edgexfoundry/app-functions-sdk-go/internal/common"
27-
"github.com/edgexfoundry/app-functions-sdk-go/internal/security"
2827
"github.com/edgexfoundry/app-functions-sdk-go/internal/store/db"
2928
)
3029

@@ -99,6 +98,6 @@ func (s *SecretProviderMock) SecretsLastUpdated() time.Time {
9998

10099
// isSecurityEnabled determines if security has been enabled.
101100
func (s *SecretProviderMock) isSecurityEnabled() bool {
102-
env := os.Getenv(security.EnvSecretStore)
101+
env := os.Getenv(EnvSecretStore)
103102
return env != "false"
104103
}

internal/v2/controller/http/controller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ func TestSecretsRequest(t *testing.T) {
179179
}
180180
lc := logger.NewMockClient()
181181

182-
mockProvider := NewSecretProviderMock(config)
182+
mockProvider := security.NewSecretProviderMock(config)
183183
target := NewV2HttpController(nil, lc, config, mockProvider)
184184
assert.NotNil(t, target)
185185

internal/webserver/server_test.go

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ import (
2424
"net/http/httptest"
2525
"testing"
2626

27-
"github.com/edgexfoundry/app-functions-sdk-go/internal/security"
28-
29-
"github.com/edgexfoundry/app-functions-sdk-go/internal"
30-
"github.com/edgexfoundry/app-functions-sdk-go/internal/common"
31-
"github.com/edgexfoundry/app-functions-sdk-go/internal/telemetry"
3227
"github.com/edgexfoundry/go-mod-core-contracts/clients"
3328
"github.com/edgexfoundry/go-mod-core-contracts/clients/logger"
3429
"github.com/gorilla/mux"
3530
"github.com/stretchr/testify/assert"
31+
32+
"github.com/edgexfoundry/app-functions-sdk-go/internal"
33+
"github.com/edgexfoundry/app-functions-sdk-go/internal/common"
34+
"github.com/edgexfoundry/app-functions-sdk-go/internal/security"
35+
"github.com/edgexfoundry/app-functions-sdk-go/internal/telemetry"
3636
)
3737

3838
var logClient logger.LoggingClient
@@ -116,7 +116,7 @@ func TestConfigureAndConfigRoute(t *testing.T) {
116116
}
117117

118118
func TestConfigureAndMetricsRoute(t *testing.T) {
119-
sp := newMockSecretProvider(logClient, config)
119+
sp := security.NewSecretProviderMock(config)
120120
webserver := NewWebServer(config, sp, logClient, mux.NewRouter())
121121
webserver.ConfigureStandardRoutes()
122122

@@ -138,7 +138,7 @@ func TestConfigureAndMetricsRoute(t *testing.T) {
138138
}
139139

140140
func TestSetupTriggerRoute(t *testing.T) {
141-
sp := newMockSecretProvider(logClient, config)
141+
sp := security.NewSecretProviderMock(config)
142142
webserver := NewWebServer(config, sp, logClient, mux.NewRouter())
143143

144144
handlerFunctionNotCalled := true
@@ -162,7 +162,7 @@ func TestSetupTriggerRoute(t *testing.T) {
162162

163163
func TestPostSecretRoute(t *testing.T) {
164164

165-
sp := newMockSecretProvider(logClient, config)
165+
sp := security.NewSecretProviderMock(config)
166166
webserver := NewWebServer(config, sp, logClient, mux.NewRouter())
167167
webserver.ConfigureStandardRoutes()
168168

@@ -214,23 +214,3 @@ func TestValidateSecretRoute(t *testing.T) {
214214
secretDataGoodPath := SecretData{Path: "/foo/bar", Secrets: []KeyValue{KeyValue{Key: "key", Value: "val"}}}
215215
assert.NoError(t, secretDataGoodPath.validateSecretData())
216216
}
217-
218-
// mockSecretClient is fake vault client
219-
type mockSecretClient struct {
220-
}
221-
222-
// NewMockSecretProvider provides a mocked version of the mockSecretClient to avoiding using vault in our tests
223-
func newMockSecretProvider(loggingClient logger.LoggingClient, configuration *common.ConfigurationStruct) security.SecretProvider {
224-
mockSP := security.NewSecretProvider(logClient, config)
225-
return mockSP
226-
}
227-
228-
// GetSecrets mock implementation of GetSecrets
229-
func (s *mockSecretClient) GetSecrets(path string, keys ...string) (map[string]string, error) {
230-
return nil, nil
231-
}
232-
233-
// StoreSecrets mock implementation of StoreSecrets
234-
func (s *mockSecretClient) StoreSecrets(path string, secrets map[string]string) error {
235-
return nil
236-
}

pkg/transforms/filter_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ func TestFilterOutByValueDescriptor(t *testing.T) {
212212
assert.EqualError(t, res.(error), "no Event Received")
213213

214214
continuePipeline, res = f1.FilterByValueDescriptor(context, event1)
215-
assert.True(t, continuePipeline, "Pipeline should continue")
215+
assert.False(t, continuePipeline, "Pipeline should NOT continue")
216216
assert.Len(t, res.(models.Event).Readings, 0, "Event should have no readings")
217217

218218
continuePipeline, res = f1.FilterByValueDescriptor(context, event2)
@@ -224,16 +224,16 @@ func TestFilterOutByValueDescriptor(t *testing.T) {
224224
assert.Len(t, res.(models.Event).Readings, 1, "Event should have one reading")
225225

226226
continuePipeline, res = f12.FilterByValueDescriptor(context, event1)
227-
assert.False(t, continuePipeline, "Pipeline should continue")
227+
assert.False(t, continuePipeline, "Pipeline should NOT continue")
228228
assert.Len(t, res.(models.Event).Readings, 0, "Event should have one reading")
229229

230230
continuePipeline, res = f12.FilterByValueDescriptor(context, event2)
231-
assert.True(t, continuePipeline, "Pipeline should continue")
232-
assert.Len(t, res.(models.Event).Readings, 0, "Event should have one reading")
231+
assert.False(t, continuePipeline, "Pipeline should NOT continue")
232+
assert.Len(t, res.(models.Event).Readings, 0, "Event should have no reading")
233233

234234
continuePipeline, res = f12.FilterByValueDescriptor(context, event12)
235-
assert.True(t, continuePipeline, "Pipeline should continue")
236-
assert.Len(t, res.(models.Event).Readings, 0, "Event should have one reading")
235+
assert.False(t, continuePipeline, "Pipeline should NOT continue")
236+
assert.Len(t, res.(models.Event).Readings, 0, "Event should have no reading")
237237

238238
continuePipeline, res = f12.FilterByValueDescriptor(context, event3)
239239
assert.True(t, continuePipeline, "Event should be filtered out")

pkg/transforms/http_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ func TestHTTPPost(t *testing.T) {
107107

108108
func TestHTTPPostWithSecrets(t *testing.T) {
109109

110+
expectedValue := "value"
110111
handler := func(w http.ResponseWriter, r *http.Request) {
111112

112113
if r.URL.EscapedPath() == badPath {
@@ -116,9 +117,10 @@ func TestHTTPPostWithSecrets(t *testing.T) {
116117

117118
w.WriteHeader(http.StatusOK)
118119

119-
// this should be here on successful secret retrieval
120-
if assert.Equal(t, r.Header.Get("Secret-Header-Name"), "value") {
121-
t.Errorf("Unexpected header name received %s, expected %s", r.Header.Get("Content-type"), "application/json")
120+
actualValue := r.Header.Get("Secret-Header-Name")
121+
if actualValue != "" {
122+
// Only validate is key was found in the header
123+
require.Equal(t, expectedValue, actualValue)
122124
}
123125
}
124126

pkg/transforms/mqttsecret.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,10 @@ func (sender *MQTTSecretSender) validateSecrets(secrets mqttSecrets) error {
134134
if len(secrets.keypemblock) <= 0 || len(secrets.certpemblock) <= 0 {
135135
return errors.New("AuthModeCert selected however the key or cert PEM block was not found at secret path")
136136
}
137-
} else if sender.mqttConfig.AuthMode == AuthModeCA && len(secrets.capemblock) <= 0 {
138-
return errors.New("AuthModeCA selected however no PEM Block was found at secret path")
137+
} else if sender.mqttConfig.AuthMode == AuthModeCA {
138+
if len(secrets.capemblock) <= 0 {
139+
return errors.New("AuthModeCA selected however no PEM Block was found at secret path")
140+
}
139141
} else if sender.mqttConfig.AuthMode != AuthModeNone {
140142
return errors.New("Invalid AuthMode selected")
141143
}

pkg/transforms/mqttsecret_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,11 @@ func TestMQTTClientGetSecrets(t *testing.T) {
169169
{"No Auth No error", AuthModeNone, "", nil, false},
170170
{"Auth No Secrets found", AuthModeCA, "/notfound", nil, true},
171171
{"Auth With Secrets", AuthModeUsernamePassword, "/mqtt", &mqttSecrets{
172-
username: "TEST_USER",
173-
password: "TEST_PASS",
172+
username: "TEST_USER",
173+
password: "TEST_PASS",
174+
keypemblock: []uint8{},
175+
certpemblock: []uint8{},
176+
capemblock: []uint8{},
174177
}, false},
175178
}
176179
// setup mock secret client
@@ -336,12 +339,15 @@ func TestConfigureMQTTClientWithNone(t *testing.T) {
336339
}
337340

338341
func TestSetRetryDataPersistFalse(t *testing.T) {
342+
context.RetryData = nil
339343
sender := NewMQTTSecretSender(MQTTSecretConfig{}, false)
340344
sender.mqttConfig = MQTTSecretConfig{}
341345
sender.setRetryData(context, []byte("data"))
342346
assert.Nil(t, context.RetryData)
343347
}
348+
344349
func TestSetRetryDataPersistTrue(t *testing.T) {
350+
context.RetryData = nil
345351
sender := NewMQTTSecretSender(MQTTSecretConfig{}, true)
346352
sender.mqttConfig = MQTTSecretConfig{}
347353
sender.setRetryData(context, []byte("data"))

0 commit comments

Comments
 (0)