dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/models/subscription_test.go (about) 1 // 2 // Copyright (C) 2021 IOTech Ltd 3 // 4 // SPDX-License-Identifier: Apache-2.0 5 6 package models_test 7 8 import ( 9 "encoding/json" 10 "testing" 11 12 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common" 13 "dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/models" 14 15 "github.com/stretchr/testify/assert" 16 "github.com/stretchr/testify/require" 17 ) 18 19 func subscriptionData() models.Subscription { 20 return models.Subscription{ 21 Id: ExampleUUID, 22 Name: TestSubscriptionName, 23 Channels: []models.Address{ 24 models.EmailAddress{ 25 BaseAddress: models.BaseAddress{Type: common.EMAIL}, 26 Recipients: []string{"test@example.com"}, 27 }, 28 }, 29 Receiver: TestSubscriptionReceiver, 30 } 31 } 32 33 func TestSubscription_UnmarshalJSON(t *testing.T) { 34 valid := subscriptionData() 35 jsonData, err := json.Marshal(valid) 36 require.NoError(t, err) 37 tests := []struct { 38 name string 39 expected models.Subscription 40 data []byte 41 wantErr bool 42 }{ 43 {"valid, unmarshal Subscription", valid, jsonData, false}, 44 {"invalid, unmarshal invalid Subscription, empty data", models.Subscription{}, []byte{}, true}, 45 {"invalid, unmarshal invalid Subscription, string data", models.Subscription{}, []byte("Invalid Subscription"), true}, 46 } 47 for _, tt := range tests { 48 t.Run(tt.name, func(t *testing.T) { 49 var result models.Subscription 50 err := result.UnmarshalJSON(tt.data) 51 if tt.wantErr { 52 require.Error(t, err) 53 } else { 54 require.NoError(t, err) 55 assert.Equal(t, tt.expected, result, "Unmarshal did not result in expected AddSubscriptionRequest.") 56 } 57 }) 58 } 59 }