github.com/rhatdan/docker@v0.7.7-0.20180119204836-47a0dcbcd20a/api/server/router/network/filter_test.go (about) 1 // +build !windows 2 3 package network 4 5 import ( 6 "strings" 7 "testing" 8 9 "github.com/docker/docker/api/types" 10 "github.com/docker/docker/api/types/filters" 11 ) 12 13 func TestFilterNetworks(t *testing.T) { 14 networks := []types.NetworkResource{ 15 { 16 Name: "host", 17 Driver: "host", 18 Scope: "local", 19 }, 20 { 21 Name: "bridge", 22 Driver: "bridge", 23 Scope: "local", 24 }, 25 { 26 Name: "none", 27 Driver: "null", 28 Scope: "local", 29 }, 30 { 31 Name: "myoverlay", 32 Driver: "overlay", 33 Scope: "swarm", 34 }, 35 { 36 Name: "mydrivernet", 37 Driver: "mydriver", 38 Scope: "local", 39 }, 40 { 41 Name: "mykvnet", 42 Driver: "mykvdriver", 43 Scope: "global", 44 }, 45 } 46 47 bridgeDriverFilters := filters.NewArgs() 48 bridgeDriverFilters.Add("driver", "bridge") 49 50 overlayDriverFilters := filters.NewArgs() 51 overlayDriverFilters.Add("driver", "overlay") 52 53 nonameDriverFilters := filters.NewArgs() 54 nonameDriverFilters.Add("driver", "noname") 55 56 customDriverFilters := filters.NewArgs() 57 customDriverFilters.Add("type", "custom") 58 59 builtinDriverFilters := filters.NewArgs() 60 builtinDriverFilters.Add("type", "builtin") 61 62 invalidDriverFilters := filters.NewArgs() 63 invalidDriverFilters.Add("type", "invalid") 64 65 localScopeFilters := filters.NewArgs() 66 localScopeFilters.Add("scope", "local") 67 68 swarmScopeFilters := filters.NewArgs() 69 swarmScopeFilters.Add("scope", "swarm") 70 71 globalScopeFilters := filters.NewArgs() 72 globalScopeFilters.Add("scope", "global") 73 74 testCases := []struct { 75 filter filters.Args 76 resultCount int 77 err string 78 }{ 79 { 80 filter: bridgeDriverFilters, 81 resultCount: 1, 82 err: "", 83 }, 84 { 85 filter: overlayDriverFilters, 86 resultCount: 1, 87 err: "", 88 }, 89 { 90 filter: nonameDriverFilters, 91 resultCount: 0, 92 err: "", 93 }, 94 { 95 filter: customDriverFilters, 96 resultCount: 3, 97 err: "", 98 }, 99 { 100 filter: builtinDriverFilters, 101 resultCount: 3, 102 err: "", 103 }, 104 { 105 filter: invalidDriverFilters, 106 resultCount: 0, 107 err: "Invalid filter: 'type'='invalid'", 108 }, 109 { 110 filter: localScopeFilters, 111 resultCount: 4, 112 err: "", 113 }, 114 { 115 filter: swarmScopeFilters, 116 resultCount: 1, 117 err: "", 118 }, 119 { 120 filter: globalScopeFilters, 121 resultCount: 1, 122 err: "", 123 }, 124 } 125 126 for _, testCase := range testCases { 127 result, err := filterNetworks(networks, testCase.filter) 128 if testCase.err != "" { 129 if err == nil { 130 t.Fatalf("expect error '%s', got no error", testCase.err) 131 132 } else if !strings.Contains(err.Error(), testCase.err) { 133 t.Fatalf("expect error '%s', got '%s'", testCase.err, err) 134 } 135 } else { 136 if err != nil { 137 t.Fatalf("expect no error, got error '%s'", err) 138 } 139 // Make sure result is not nil 140 if result == nil { 141 t.Fatal("filterNetworks should not return nil") 142 } 143 144 if len(result) != testCase.resultCount { 145 t.Fatalf("expect '%d' networks, got '%d' networks", testCase.resultCount, len(result)) 146 } 147 } 148 } 149 }