dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/clients/http/reading_test.go (about) 1 // 2 // Copyright (C) 2020-2021 IOTech Ltd 3 // Copyright (C) 2023 Intel Corporation 4 // 5 // SPDX-License-Identifier: Apache-2.0 6 7 package http 8 9 import ( 10 "context" 11 "net/http" 12 "path" 13 "strconv" 14 "testing" 15 16 "github.com/stretchr/testify/assert" 17 "github.com/stretchr/testify/require" 18 19 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common" 20 dtoCommon "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/common" 21 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/responses" 22 ) 23 24 func TestQueryAllReadings(t *testing.T) { 25 ts := newTestServer(http.MethodGet, common.ApiAllReadingRoute, responses.MultiReadingsResponse{}) 26 defer ts.Close() 27 28 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 29 res, err := client.AllReadings(context.Background(), 1, 10) 30 require.NoError(t, err) 31 assert.IsType(t, responses.MultiReadingsResponse{}, res) 32 } 33 34 func TestQueryReadingCount(t *testing.T) { 35 ts := newTestServer(http.MethodGet, common.ApiReadingCountRoute, dtoCommon.CountResponse{}) 36 defer ts.Close() 37 38 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 39 res, err := client.ReadingCount(context.Background()) 40 require.NoError(t, err) 41 assert.IsType(t, dtoCommon.CountResponse{}, res) 42 } 43 44 func TestQueryReadingCountByDeviceName(t *testing.T) { 45 deviceName := "device" 46 path := path.Join(common.ApiReadingCountRoute, common.Device, common.Name, deviceName) 47 ts := newTestServer(http.MethodGet, path, dtoCommon.CountResponse{}) 48 defer ts.Close() 49 50 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 51 res, err := client.ReadingCountByDeviceName(context.Background(), deviceName) 52 require.NoError(t, err) 53 require.IsType(t, dtoCommon.CountResponse{}, res) 54 } 55 56 func TestQueryReadingsByDeviceName(t *testing.T) { 57 deviceName := "device" 58 urlPath := path.Join(common.ApiReadingRoute, common.Device, common.Name, deviceName) 59 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 60 defer ts.Close() 61 62 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 63 res, err := client.ReadingsByDeviceName(context.Background(), deviceName, 1, 10) 64 require.NoError(t, err) 65 assert.IsType(t, responses.MultiReadingsResponse{}, res) 66 } 67 68 func TestQueryReadingsByResourceName(t *testing.T) { 69 resourceName := "resource" 70 urlPath := path.Join(common.ApiReadingRoute, common.ResourceName, resourceName) 71 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 72 defer ts.Close() 73 74 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 75 res, err := client.ReadingsByResourceName(context.Background(), resourceName, 1, 10) 76 require.NoError(t, err) 77 assert.IsType(t, responses.MultiReadingsResponse{}, res) 78 } 79 80 func TestQueryReadingsByTimeRange(t *testing.T) { 81 start := 1 82 end := 10 83 urlPath := path.Join(common.ApiReadingRoute, common.Start, strconv.Itoa(start), common.End, strconv.Itoa(end)) 84 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 85 defer ts.Close() 86 87 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 88 res, err := client.ReadingsByTimeRange(context.Background(), start, end, 1, 10) 89 require.NoError(t, err) 90 assert.IsType(t, responses.MultiReadingsResponse{}, res) 91 } 92 93 func TestQueryReadingsByResourceNameAndTimeRange(t *testing.T) { 94 resourceName := "resource" 95 start := 1 96 end := 10 97 urlPath := path.Join(common.ApiReadingRoute, common.ResourceName, resourceName, common.Start, strconv.Itoa(start), common.End, strconv.Itoa(end)) 98 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 99 defer ts.Close() 100 101 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 102 res, err := client.ReadingsByResourceNameAndTimeRange(context.Background(), resourceName, start, end, 1, 10) 103 require.NoError(t, err) 104 assert.IsType(t, responses.MultiReadingsResponse{}, res) 105 } 106 107 func TestQueryReadingsByDeviceNameAndResourceName(t *testing.T) { 108 deviceName := "device" 109 resourceName := "resource" 110 urlPath := path.Join(common.ApiReadingRoute, common.Device, common.Name, deviceName, common.ResourceName, resourceName) 111 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 112 defer ts.Close() 113 114 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 115 res, err := client.ReadingsByDeviceNameAndResourceName(context.Background(), deviceName, resourceName, 1, 10) 116 require.NoError(t, err) 117 assert.IsType(t, responses.MultiReadingsResponse{}, res) 118 } 119 120 func TestQueryReadingsByDeviceNameAndResourceNameAndTimeRange(t *testing.T) { 121 deviceName := "device" 122 resourceName := "resource" 123 start := 1 124 end := 10 125 urlPath := path.Join(common.ApiReadingRoute, common.Device, common.Name, deviceName, common.ResourceName, resourceName, common.Start, strconv.Itoa(start), common.End, strconv.Itoa(end)) 126 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 127 defer ts.Close() 128 129 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 130 res, err := client.ReadingsByDeviceNameAndResourceNameAndTimeRange(context.Background(), deviceName, resourceName, start, end, 1, 10) 131 require.NoError(t, err) 132 assert.IsType(t, responses.MultiReadingsResponse{}, res) 133 } 134 135 func TestQueryReadingsByDeviceNameAndResourceNamesAndTimeRange(t *testing.T) { 136 deviceName := "device" 137 resourceNames := []string{"resource01", "resource02"} 138 start := 1 139 end := 10 140 urlPath := path.Join(common.ApiReadingRoute, common.Device, common.Name, deviceName, common.Start, strconv.Itoa(start), common.End, strconv.Itoa(end)) 141 ts := newTestServer(http.MethodGet, urlPath, responses.MultiReadingsResponse{}) 142 defer ts.Close() 143 144 client := NewReadingClient(ts.URL, NewNullAuthenticationInjector(), false) 145 res, err := client.ReadingsByDeviceNameAndResourceNamesAndTimeRange(context.Background(), deviceName, resourceNames, start, end, 1, 10) 146 require.NoError(t, err) 147 assert.IsType(t, responses.MultiReadingsResponse{}, res) 148 }