Selaa lähdekoodia

Add container name validation test

Jonathan Rudenberg 11 vuotta sitten
vanhempi
commit
c06ab5f9c2
1 muutettua tiedostoa jossa 48 lisäystä ja 0 poistoa
  1. 48 0
      integration/runtime_test.go

+ 48 - 0
integration/runtime_test.go

@@ -748,6 +748,54 @@ func TestRandomContainerName(t *testing.T) {
 	}
 }
 
+func TestContainerNameValidation(t *testing.T) {
+	eng := NewTestEngine(t)
+	runtime := mkRuntimeFromEngine(eng, t)
+	defer nuke(runtime)
+
+	for _, test := range []struct {
+		Name  string
+		Valid bool
+	}{
+		{"abc-123_AAA.1", true},
+		{"\000asdf", false},
+	} {
+		config, _, _, err := docker.ParseRun([]string{unitTestImageID, "echo test"}, nil)
+		if err != nil {
+			if !test.Valid {
+				continue
+			}
+			t.Fatal(err)
+		}
+
+		var shortID string
+		job := eng.Job("create", test.Name)
+		if err := job.ImportEnv(config); err != nil {
+			t.Fatal(err)
+		}
+		job.Stdout.AddString(&shortID)
+		if err := job.Run(); err != nil {
+			if !test.Valid {
+				continue
+			}
+			t.Fatal(err)
+		}
+
+		container := runtime.Get(shortID)
+
+		if container.Name != "/"+test.Name {
+			t.Fatalf("Expect /%s got %s", test.Name, container.Name)
+		}
+
+		if c := runtime.Get("/" + test.Name); c == nil {
+			t.Fatalf("Couldn't retrieve test container as /%s", test.Name)
+		} else if c.ID != container.ID {
+			t.Fatalf("Container /%s has ID %s instead of %s", test.Name, c.ID, container.ID)
+		}
+	}
+
+}
+
 func TestLinkChildContainer(t *testing.T) {
 	eng := NewTestEngine(t)
 	runtime := mkRuntimeFromEngine(eng, t)