EdgexAgent/device-gps-go/internal/provision/devices_test.go
2025-07-10 20:30:06 +08:00

82 lines
3.0 KiB
Go

// -*- Mode: Go; indent-tabs-mode: t -*-
//
// # Copyright (C) 2023 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0
package provision
import (
"github.com/edgexfoundry/device-sdk-go/v4/internal/cache"
"github.com/edgexfoundry/go-mod-bootstrap/v4/bootstrap/interfaces"
"github.com/edgexfoundry/go-mod-core-contracts/v4/clients/logger"
"github.com/edgexfoundry/go-mod-core-contracts/v4/dtos/requests"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"net/url"
"path"
"testing"
)
func Test_processDevices(t *testing.T) {
tests := []struct {
name string
path string
secretProvider interfaces.SecretProvider
expectedNumDevices int
}{
{"valid load device from file", path.Join("..", "..", "example", "cmd", "device-gps", "res", "devices", "simple-device.yml"), nil, 2},
{"valid load devices from uri", "https://raw.githubusercontent.com/edgexfoundry/device-virtual-go/main/cmd/res/devices/devices.yaml", nil, 5},
{"invalid load device empty path", "", nil, 0},
{"invalid load device from file", path.Join("..", "..", "example", "cmd", "device-gps", "res", "devices", "bogus.yml"), nil, 0},
{"invalid load device invalid uri", "https://raw.githubusercontent.com/edgexfoundry/device-sdk-go/main/example/cmd/device-simple/res/devices/bogus.yml", nil, 0},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
lc := logger.MockLogger{}
dic, _ := NewMockDIC()
err := cache.InitCache(TestDeviceService, TestDeviceService, dic)
require.NoError(t, err)
addDeviceRequests := processDevices(tt.path, tt.path, TestDeviceService, tt.secretProvider, lc)
assert.Equal(t, tt.expectedNumDevices, len(addDeviceRequests))
})
}
}
func Test_loadDevicesFromURI(t *testing.T) {
tests := []struct {
name string
path string
serviceName string
secretProvider interfaces.SecretProvider
expectedNumDevices int
expectedEdgexErrMsg string
}{
{"valid load from uri",
"https://raw.githubusercontent.com/edgexfoundry/device-sdk-go/main/internal/provision/uri-test-files/devices/index.json",
"TestDevice",
nil,
2, ""},
{"invalid load from uri",
"https://raw.githubusercontent.com/edgexfoundry/device-sdk-go/main/internal/provision/uri-test-files/devices/bogus.json",
"TestDevice",
nil,
0, "failed to load Devices list from URI"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
var addDeviceReq []requests.AddDeviceRequest
lc := logger.MockLogger{}
dic, _ := NewMockDIC()
edgexErr := cache.InitCache(TestDeviceService, TestDeviceService, dic)
require.NoError(t, edgexErr)
parsedURI, err := url.Parse(tt.path)
require.NoError(t, err)
addDeviceReq, edgexErr = loadDevicesFromURI(tt.path, parsedURI, tt.serviceName, tt.secretProvider, lc)
assert.Equal(t, tt.expectedNumDevices, len(addDeviceReq))
if edgexErr != nil {
assert.Contains(t, edgexErr.Error(), tt.expectedEdgexErrMsg)
}
})
}
}