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  }