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  }