github.com/sacloud/iaas-api-go@v1.12.0/naked/interface_test.go (about) 1 // Copyright 2022-2023 The sacloud/iaas-api-go Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package naked 16 17 import ( 18 "encoding/json" 19 "testing" 20 21 "github.com/sacloud/iaas-api-go/types" 22 "github.com/stretchr/testify/require" 23 ) 24 25 func TestInterface_UnmarshalJSON(t *testing.T) { 26 cases := []struct { 27 in string 28 out types.EUpstreamNetworkType 29 }{ 30 { 31 in: `{}`, 32 out: types.UpstreamNetworkTypes.None, 33 }, 34 { 35 in: `{"Switch":{}}`, 36 out: types.UpstreamNetworkTypes.Switch, 37 }, 38 { 39 in: `{"Switch":{"Scope":"shared","Subnet":{}}}`, 40 out: types.UpstreamNetworkTypes.Shared, 41 }, 42 { 43 in: `{"Switch":{"Scope":"user","Subnet":{}}}`, 44 out: types.UpstreamNetworkTypes.Router, 45 }, 46 } 47 48 for _, tc := range cases { 49 var iface Interface 50 err := json.Unmarshal([]byte(tc.in), &iface) 51 require.NoError(t, err) 52 require.Equal(t, tc.out.String(), iface.UpstreamType.String()) 53 } 54 }