dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/clients/http/event_test.go (about)

     1  //
     2  // Copyright (C) 2021-2023 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  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common"
    17  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos"
    18  	dtoCommon "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/common"
    19  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/requests"
    20  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/responses"
    21  
    22  	"github.com/stretchr/testify/assert"
    23  	"github.com/stretchr/testify/require"
    24  )
    25  
    26  func TestAddEvent(t *testing.T) {
    27  	serviceName := "serviceName"
    28  	event := dtos.Event{ProfileName: "profileName", DeviceName: "deviceName", SourceName: "sourceName"}
    29  	apiRoute := path.Join(common.ApiEventRoute, serviceName, event.ProfileName, event.DeviceName, event.SourceName)
    30  	ts := newTestServer(http.MethodPost, apiRoute, dtoCommon.BaseWithIdResponse{})
    31  	defer ts.Close()
    32  
    33  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
    34  	res, err := client.Add(context.Background(), serviceName, requests.AddEventRequest{Event: event})
    35  	require.NoError(t, err)
    36  	assert.IsType(t, dtoCommon.BaseWithIdResponse{}, res)
    37  }
    38  
    39  func TestQueryAllEvents(t *testing.T) {
    40  	ts := newTestServer(http.MethodGet, common.ApiAllEventRoute, responses.MultiEventsResponse{})
    41  	defer ts.Close()
    42  
    43  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
    44  	res, err := client.AllEvents(context.Background(), 1, 10)
    45  	require.NoError(t, err)
    46  	assert.IsType(t, responses.MultiEventsResponse{}, res)
    47  }
    48  
    49  func TestQueryEventCount(t *testing.T) {
    50  	ts := newTestServer(http.MethodGet, common.ApiEventCountRoute, dtoCommon.CountResponse{})
    51  	defer ts.Close()
    52  
    53  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
    54  	res, err := client.EventCount(context.Background())
    55  	require.NoError(t, err)
    56  	assert.IsType(t, dtoCommon.CountResponse{}, res)
    57  }
    58  
    59  func TestQueryEventCountByDeviceName(t *testing.T) {
    60  	deviceName := "device"
    61  	path := path.Join(common.ApiEventCountRoute, common.Device, common.Name, deviceName)
    62  	ts := newTestServer(http.MethodGet, path, dtoCommon.CountResponse{})
    63  	defer ts.Close()
    64  
    65  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
    66  	res, err := client.EventCountByDeviceName(context.Background(), deviceName)
    67  	require.NoError(t, err)
    68  	require.IsType(t, dtoCommon.CountResponse{}, res)
    69  }
    70  
    71  func TestQueryEventsByDeviceName(t *testing.T) {
    72  	deviceName := "device"
    73  	urlPath := path.Join(common.ApiEventRoute, common.Device, common.Name, deviceName)
    74  	ts := newTestServer(http.MethodGet, urlPath, responses.MultiEventsResponse{})
    75  	defer ts.Close()
    76  
    77  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
    78  	res, err := client.EventsByDeviceName(context.Background(), deviceName, 1, 10)
    79  	require.NoError(t, err)
    80  	assert.IsType(t, responses.MultiEventsResponse{}, res)
    81  }
    82  
    83  func TestDeleteEventsByDeviceName(t *testing.T) {
    84  	deviceName := "device"
    85  	path := path.Join(common.ApiEventRoute, common.Device, common.Name, deviceName)
    86  	ts := newTestServer(http.MethodDelete, path, dtoCommon.BaseResponse{})
    87  	defer ts.Close()
    88  
    89  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
    90  	res, err := client.DeleteByDeviceName(context.Background(), deviceName)
    91  	require.NoError(t, err)
    92  	assert.IsType(t, dtoCommon.BaseResponse{}, res)
    93  }
    94  
    95  func TestQueryEventsByTimeRange(t *testing.T) {
    96  	start := 1
    97  	end := 10
    98  	urlPath := path.Join(common.ApiEventRoute, common.Start, strconv.Itoa(start), common.End, strconv.Itoa(end))
    99  	ts := newTestServer(http.MethodGet, urlPath, responses.MultiEventsResponse{})
   100  	defer ts.Close()
   101  
   102  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
   103  	res, err := client.EventsByTimeRange(context.Background(), start, end, 1, 10)
   104  	require.NoError(t, err)
   105  	assert.IsType(t, responses.MultiEventsResponse{}, res)
   106  }
   107  
   108  func TestDeleteEventsByAge(t *testing.T) {
   109  	age := 10
   110  	path := path.Join(common.ApiEventRoute, common.Age, strconv.Itoa(age))
   111  	ts := newTestServer(http.MethodDelete, path, dtoCommon.BaseResponse{})
   112  	defer ts.Close()
   113  
   114  	client := NewEventClient(ts.URL, NewNullAuthenticationInjector(), false)
   115  	res, err := client.DeleteByAge(context.Background(), age)
   116  	require.NoError(t, err)
   117  	assert.IsType(t, dtoCommon.BaseResponse{}, res)
   118  }