dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/dtos/requests/operation_test.go (about) 1 // 2 // Copyright (C) 2021 IOTech Ltd 3 // 4 // SPDX-License-Identifier: Apache-2.0 5 6 package requests 7 8 import ( 9 "encoding/json" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 15 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/dtos/common" 16 ) 17 18 var testOperationRequest = OperationRequest{ 19 BaseRequest: common.BaseRequest{ 20 RequestId: ExampleUUID, 21 Versionable: common.NewVersionable(), 22 }, 23 ServiceName: TestServiceName, 24 Action: TestActionName, 25 } 26 27 func TestOperationRequest_Validate(t *testing.T) { 28 valid := testOperationRequest 29 noReqId := testOperationRequest 30 noReqId.RequestId = "" 31 invalidReqId := testOperationRequest 32 invalidReqId.RequestId = "abc" 33 noServiceName := testOperationRequest 34 noServiceName.ServiceName = "" 35 noAction := testOperationRequest 36 noAction.Action = "" 37 invalidAction := testOperationRequest 38 invalidAction.Action = "remove" 39 40 tests := []struct { 41 name string 42 request OperationRequest 43 expectedErr bool 44 }{ 45 {"valid", valid, false}, 46 {"valid - no Request Id", noReqId, false}, 47 {"invalid - RequestId is not an uuid", invalidReqId, true}, 48 {"invalid - no ServiceName", noServiceName, true}, 49 {"invalid - no Action", noAction, true}, 50 {"invalid - invalid Action", invalidAction, true}, 51 } 52 for _, tt := range tests { 53 t.Run(tt.name, func(t *testing.T) { 54 err := tt.request.Validate() 55 if tt.expectedErr { 56 assert.Error(t, err) 57 } else { 58 assert.NoError(t, err) 59 } 60 }) 61 } 62 } 63 64 func TestOperationRequest_UnmarshalJSON(t *testing.T) { 65 valid := testOperationRequest 66 resultTestBytes, _ := json.Marshal(testOperationRequest) 67 type args struct { 68 data []byte 69 } 70 tests := []struct { 71 name string 72 request OperationRequest 73 args args 74 expectedErr bool 75 }{ 76 {"valid", valid, args{resultTestBytes}, false}, 77 {"invalid - empty data", OperationRequest{}, args{[]byte{}}, true}, 78 {"invalid - string data", OperationRequest{}, args{[]byte("Invalid OperationRequest")}, true}, 79 } 80 for _, tt := range tests { 81 t.Run(tt.name, func(t *testing.T) { 82 var expected = tt.request 83 err := tt.request.UnmarshalJSON(tt.args.data) 84 if tt.expectedErr { 85 require.Error(t, err) 86 } else { 87 require.NoError(t, err) 88 assert.Equal(t, expected, tt.request, "Unmarshal did not result in expected AddProvisionWatcherRequest.") 89 } 90 }) 91 } 92 }