github.com/bdwilliams/libcompose@v0.3.1-0.20160826154243-d81a9bdacff0/yaml/network_test.go (about) 1 package yaml 2 3 import ( 4 "testing" 5 6 "gopkg.in/yaml.v2" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestMarshalNetworks(t *testing.T) { 12 networks := []struct { 13 networks Networks 14 expected string 15 }{ 16 { 17 networks: Networks{}, 18 expected: `{} 19 `, 20 }, 21 { 22 networks: Networks{ 23 Networks: []*Network{ 24 { 25 Name: "network1", 26 }, 27 { 28 Name: "network2", 29 }, 30 }, 31 }, 32 expected: `network1: {} 33 network2: {} 34 `, 35 }, 36 { 37 networks: Networks{ 38 Networks: []*Network{ 39 { 40 Name: "network1", 41 Aliases: []string{"alias1", "alias2"}, 42 }, 43 { 44 Name: "network2", 45 }, 46 }, 47 }, 48 expected: `network1: 49 aliases: 50 - alias1 51 - alias2 52 network2: {} 53 `, 54 }, 55 { 56 networks: Networks{ 57 Networks: []*Network{ 58 { 59 Name: "network1", 60 Aliases: []string{"alias1", "alias2"}, 61 }, 62 { 63 Name: "network2", 64 IPv4Address: "172.16.238.10", 65 IPv6Address: "2001:3984:3989::10", 66 }, 67 }, 68 }, 69 expected: `network1: 70 aliases: 71 - alias1 72 - alias2 73 network2: 74 ipv4_address: 172.16.238.10 75 ipv6_address: 2001:3984:3989::10 76 `, 77 }, 78 } 79 for _, network := range networks { 80 bytes, err := yaml.Marshal(network.networks) 81 assert.Nil(t, err) 82 assert.Equal(t, network.expected, string(bytes), "should be equal") 83 } 84 } 85 86 func TestUnmarshalNetworks(t *testing.T) { 87 networks := []struct { 88 yaml string 89 expected *Networks 90 }{ 91 { 92 yaml: `- network1 93 - network2`, 94 expected: &Networks{ 95 Networks: []*Network{ 96 { 97 Name: "network1", 98 }, 99 { 100 Name: "network2", 101 }, 102 }, 103 }, 104 }, 105 { 106 yaml: `network1:`, 107 expected: &Networks{ 108 Networks: []*Network{ 109 { 110 Name: "network1", 111 }, 112 }, 113 }, 114 }, 115 { 116 yaml: `network1: {}`, 117 expected: &Networks{ 118 Networks: []*Network{ 119 { 120 Name: "network1", 121 }, 122 }, 123 }, 124 }, 125 { 126 yaml: `network1: 127 aliases: 128 - alias1 129 - alias2`, 130 expected: &Networks{ 131 Networks: []*Network{ 132 { 133 Name: "network1", 134 Aliases: []string{"alias1", "alias2"}, 135 }, 136 }, 137 }, 138 }, 139 { 140 yaml: `network1: 141 aliases: 142 - alias1 143 - alias2 144 ipv4_address: 172.16.238.10 145 ipv6_address: 2001:3984:3989::10`, 146 expected: &Networks{ 147 Networks: []*Network{ 148 { 149 Name: "network1", 150 Aliases: []string{"alias1", "alias2"}, 151 IPv4Address: "172.16.238.10", 152 IPv6Address: "2001:3984:3989::10", 153 }, 154 }, 155 }, 156 }, 157 } 158 for _, network := range networks { 159 actual := &Networks{} 160 err := yaml.Unmarshal([]byte(network.yaml), actual) 161 assert.Nil(t, err) 162 assert.Equal(t, network.expected, actual, "should be equal") 163 } 164 }