github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/libnetwork/config/config_test.go (about) 1 package config 2 3 import ( 4 "io/ioutil" 5 "os" 6 "strings" 7 "testing" 8 9 "github.com/docker/libnetwork/datastore" 10 "github.com/docker/libnetwork/netlabel" 11 _ "github.com/docker/libnetwork/testutils" 12 ) 13 14 func TestInvalidConfig(t *testing.T) { 15 _, err := ParseConfig("invalid.toml") 16 if err == nil { 17 t.Fatal("Invalid Configuration file must fail") 18 } 19 } 20 21 func TestConfig(t *testing.T) { 22 _, err := ParseConfig("libnetwork.toml") 23 if err != nil { 24 t.Fatal("Error parsing a valid configuration file :", err) 25 } 26 } 27 28 func TestOptionsLabels(t *testing.T) { 29 c := &Config{} 30 l := []string{ 31 "com.docker.network.key1=value1", 32 "com.docker.storage.key1=value1", 33 "com.docker.network.driver.key1=value1", 34 "com.docker.network.driver.key2=value2", 35 } 36 f := OptionLabels(l) 37 f(c) 38 if len(c.Daemon.Labels) != 3 { 39 t.Fatalf("Expecting 3 labels, seen %d", len(c.Daemon.Labels)) 40 } 41 for _, l := range c.Daemon.Labels { 42 if !strings.HasPrefix(l, netlabel.Prefix) { 43 t.Fatalf("config must accept only libnetwork labels. Not : %s", l) 44 } 45 } 46 } 47 48 func TestValidName(t *testing.T) { 49 if !IsValidName("test") { 50 t.Fatal("Name validation fails for a name that must be accepted") 51 } 52 if IsValidName("") { 53 t.Fatal("Name validation succeeds for a case when it is expected to fail") 54 } 55 if IsValidName(" ") { 56 t.Fatal("Name validation succeeds for a case when it is expected to fail") 57 } 58 } 59 60 func TestTLSConfiguration(t *testing.T) { 61 cert := `-----BEGIN CERTIFICATE----- 62 MIIDCDCCAfKgAwIBAgIICifG7YeiQOEwCwYJKoZIhvcNAQELMBIxEDAOBgNVBAMT 63 B1Rlc3QgQ0EwHhcNMTUxMDAxMjMwMDAwWhcNMjAwOTI5MjMwMDAwWjASMRAwDgYD 64 VQQDEwdUZXN0IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1wRC 65 O+flnLTK5ImjTurNRHwSejuqGbc4CAvpB0hS+z0QlSs4+zE9h80aC4hz+6caRpds 66 +J908Q+RvAittMHbpc7VjbZP72G6fiXk7yPPl6C10HhRSoSi3nY+B7F2E8cuz14q 67 V2e+ejhWhSrBb/keyXpcyjoW1BOAAJ2TIclRRkICSCZrpXUyXxAvzXfpFXo1RhSb 68 UywN11pfiCQzDUN7sPww9UzFHuAHZHoyfTr27XnJYVUerVYrCPq8vqfn//01qz55 69 Xs0hvzGdlTFXhuabFtQnKFH5SNwo/fcznhB7rePOwHojxOpXTBepUCIJLbtNnWFT 70 V44t9gh5IqIWtoBReQIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAAYwEgYDVR0TAQH/ 71 BAgwBgEB/wIBAjAdBgNVHQ4EFgQUZKUI8IIjIww7X/6hvwggQK4bD24wHwYDVR0j 72 BBgwFoAUZKUI8IIjIww7X/6hvwggQK4bD24wCwYJKoZIhvcNAQELA4IBAQDES2cz 73 7sCQfDCxCIWH7X8kpi/JWExzUyQEJ0rBzN1m3/x8ySRxtXyGekimBqQwQdFqlwMI 74 xzAQKkh3ue8tNSzRbwqMSyH14N1KrSxYS9e9szJHfUasoTpQGPmDmGIoRJuq1h6M 75 ej5x1SCJ7GWCR6xEXKUIE9OftXm9TdFzWa7Ja3OHz/mXteii8VXDuZ5ACq6EE5bY 76 8sP4gcICfJ5fTrpTlk9FIqEWWQrCGa5wk95PGEj+GJpNogjXQ97wVoo/Y3p1brEn 77 t5zjN9PAq4H1fuCMdNNA+p1DHNwd+ELTxcMAnb2ajwHvV6lKPXutrTFc4umJToBX 78 FpTxDmJHEV4bzUzh 79 -----END CERTIFICATE----- 80 ` 81 key := `-----BEGIN RSA PRIVATE KEY----- 82 MIIEpQIBAAKCAQEA1wRCO+flnLTK5ImjTurNRHwSejuqGbc4CAvpB0hS+z0QlSs4 83 +zE9h80aC4hz+6caRpds+J908Q+RvAittMHbpc7VjbZP72G6fiXk7yPPl6C10HhR 84 SoSi3nY+B7F2E8cuz14qV2e+ejhWhSrBb/keyXpcyjoW1BOAAJ2TIclRRkICSCZr 85 pXUyXxAvzXfpFXo1RhSbUywN11pfiCQzDUN7sPww9UzFHuAHZHoyfTr27XnJYVUe 86 rVYrCPq8vqfn//01qz55Xs0hvzGdlTFXhuabFtQnKFH5SNwo/fcznhB7rePOwHoj 87 xOpXTBepUCIJLbtNnWFTV44t9gh5IqIWtoBReQIDAQABAoIBAHSWipORGp/uKFXj 88 i/mut776x8ofsAxhnLBARQr93ID+i49W8H7EJGkOfaDjTICYC1dbpGrri61qk8sx 89 qX7p3v/5NzKwOIfEpirgwVIqSNYe/ncbxnhxkx6tXtUtFKmEx40JskvSpSYAhmmO 90 1XSx0E/PWaEN/nLgX/f1eWJIlxlQkk3QeqL+FGbCXI48DEtlJ9+MzMu4pAwZTpj5 91 5qtXo5JJ0jRGfJVPAOznRsYqv864AhMdMIWguzk6EGnbaCWwPcfcn+h9a5LMdony 92 MDHfBS7bb5tkF3+AfnVY3IBMVx7YlsD9eAyajlgiKu4zLbwTRHjXgShy+4Oussz0 93 ugNGnkECgYEA/hi+McrZC8C4gg6XqK8+9joD8tnyDZDz88BQB7CZqABUSwvjDqlP 94 L8hcwo/lzvjBNYGkqaFPUICGWKjeCtd8pPS2DCVXxDQX4aHF1vUur0uYNncJiV3N 95 XQz4Iemsa6wnKf6M67b5vMXICw7dw0HZCdIHD1hnhdtDz0uVpeevLZ8CgYEA2KCT 96 Y43lorjrbCgMqtlefkr3GJA9dey+hTzCiWEOOqn9RqGoEGUday0sKhiLofOgmN2B 97 LEukpKIey8s+Q/cb6lReajDVPDsMweX8i7hz3Wa4Ugp4Xa5BpHqu8qIAE2JUZ7bU 98 t88aQAYE58pUF+/Lq1QzAQdrjjzQBx6SrBxieecCgYEAvukoPZEC8mmiN1VvbTX+ 99 QFHmlZha3QaDxChB+QUe7bMRojEUL/fVnzkTOLuVFqSfxevaI/km9n0ac5KtAchV 100 xjp2bTnBb5EUQFqjopYktWA+xO07JRJtMfSEmjZPbbay1kKC7rdTfBm961EIHaRj 101 xZUf6M+rOE8964oGrdgdLlECgYEA046GQmx6fh7/82FtdZDRQp9tj3SWQUtSiQZc 102 qhO59Lq8mjUXz+MgBuJXxkiwXRpzlbaFB0Bca1fUoYw8o915SrDYf/Zu2OKGQ/qa 103 V81sgiVmDuEgycR7YOlbX6OsVUHrUlpwhY3hgfMe6UtkMvhBvHF/WhroBEIJm1pV 104 PXZ/CbMCgYEApNWVktFBjOaYfY6SNn4iSts1jgsQbbpglg3kT7PLKjCAhI6lNsbk 105 dyT7ut01PL6RaW4SeQWtrJIVQaM6vF3pprMKqlc5XihOGAmVqH7rQx9rtQB5TicL 106 BFrwkQE4HQtQBV60hYQUzzlSk44VFDz+jxIEtacRHaomDRh2FtOTz+I= 107 -----END RSA PRIVATE KEY----- 108 ` 109 certFile, err := ioutil.TempFile("", "cert") 110 if err != nil { 111 t.Fatalf("Failed to setup temp file: %s", err) 112 } 113 defer os.Remove(certFile.Name()) 114 certFile.Write([]byte(cert)) 115 certFile.Close() 116 keyFile, err := ioutil.TempFile("", "key") 117 if err != nil { 118 t.Fatalf("Failed to setup temp file: %s", err) 119 } 120 defer os.Remove(keyFile.Name()) 121 keyFile.Write([]byte(key)) 122 keyFile.Close() 123 124 c := &Config{Scopes: map[string]*datastore.ScopeCfg{}} 125 l := map[string]string{ 126 "kv.cacertfile": certFile.Name(), 127 "kv.certfile": certFile.Name(), 128 "kv.keyfile": keyFile.Name(), 129 } 130 f := OptionKVOpts(l) 131 f(c) 132 if _, ok := c.Scopes[datastore.GlobalScope]; !ok { 133 t.Fatal("GlobalScope not established") 134 } 135 136 if c.Scopes[datastore.GlobalScope].Client.Config.TLS == nil { 137 t.Fatal("TLS is nil") 138 } 139 if c.Scopes[datastore.GlobalScope].Client.Config.TLS.RootCAs == nil { 140 t.Fatal("TLS.RootCAs is nil") 141 } 142 if len(c.Scopes[datastore.GlobalScope].Client.Config.TLS.Certificates) != 1 { 143 t.Fatal("TLS.Certificates is not length 1") 144 } 145 }