package docker import ( "strings" "testing" ) func newMockLinkContainer(id string, ip string) *Container { return &Container{ Config: &Config{}, ID: id, NetworkSettings: &NetworkSettings{ IPAddress: ip, }, } } func TestLinkNew(t *testing.T) { toID := GenerateID() fromID := GenerateID() from := newMockLinkContainer(fromID, "172.0.17.2") from.Config.Env = []string{} from.State = State{Running: true} ports := make(map[Port]struct{}) ports[Port("6379/tcp")] = struct{}{} from.Config.ExposedPorts = ports to := newMockLinkContainer(toID, "172.0.17.3") link, err := NewLink(to, from, "/db/docker", "172.0.17.1") if err != nil { t.Fatal(err) } if link == nil { t.FailNow() } if link.Name != "/db/docker" { t.Fail() } if link.Alias() != "docker" { t.Fail() } if link.ParentIP != "172.0.17.3" { t.Fail() } if link.ChildIP != "172.0.17.2" { t.Fail() } if link.BridgeInterface != "172.0.17.1" { t.Fail() } for _, p := range link.Ports { if p != Port("6379/tcp") { t.Fail() } } } func TestLinkEnv(t *testing.T) { toID := GenerateID() fromID := GenerateID() from := newMockLinkContainer(fromID, "172.0.17.2") from.Config.Env = []string{"PASSWORD=gordon"} from.State = State{Running: true} ports := make(map[Port]struct{}) ports[Port("6379/tcp")] = struct{}{} from.Config.ExposedPorts = ports to := newMockLinkContainer(toID, "172.0.17.3") link, err := NewLink(to, from, "/db/docker", "172.0.17.1") if err != nil { t.Fatal(err) } rawEnv := link.ToEnv() env := make(map[string]string, len(rawEnv)) for _, e := range rawEnv { parts := strings.Split(e, "=") if len(parts) != 2 { t.FailNow() } env[parts[0]] = parts[1] } if env["DOCKER_PORT"] != "tcp://172.0.17.2:6379" { t.Fatalf("Expected 172.0.17.2:6379, got %s", env["DOCKER_PORT"]) } if env["DOCKER_PORT_6379_TCP"] != "tcp://172.0.17.2:6379" { t.Fatalf("Expected tcp://172.0.17.2:6379, got %s", env["DOCKER_PORT_6379_TCP"]) } if env["DOCKER_NAME"] != "/db/docker" { t.Fatalf("Expected /db/docker, got %s", env["DOCKER_NAME"]) } if env["DOCKER_ENV_PASSWORD"] != "gordon" { t.Fatalf("Expected gordon, got %s", env["DOCKER_ENV_PASSWORD"]) } }