github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/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  }