github.com/nguyentm83/docker@v1.5.0/integration-cli/docker_cli_rename_test.go (about)

     1  package main
     2  
     3  import (
     4  	"os/exec"
     5  	"strings"
     6  	"testing"
     7  )
     8  
     9  func TestRenameStoppedContainer(t *testing.T) {
    10  	runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh")
    11  	out, _, err := runCommandWithOutput(runCmd)
    12  	if err != nil {
    13  		t.Fatalf(out, err)
    14  	}
    15  
    16  	cleanedContainerID := stripTrailingCharacters(out)
    17  
    18  	runCmd = exec.Command(dockerBinary, "wait", cleanedContainerID)
    19  	out, _, err = runCommandWithOutput(runCmd)
    20  	if err != nil {
    21  		t.Fatalf(out, err)
    22  	}
    23  
    24  	name, err := inspectField(cleanedContainerID, "Name")
    25  
    26  	runCmd = exec.Command(dockerBinary, "rename", "first_name", "new_name")
    27  	out, _, err = runCommandWithOutput(runCmd)
    28  	if err != nil {
    29  		t.Fatalf(out, err)
    30  	}
    31  
    32  	name, err = inspectField(cleanedContainerID, "Name")
    33  	if err != nil {
    34  		t.Fatal(err)
    35  	}
    36  	if name != "new_name" {
    37  		t.Fatal("Failed to rename container ", name)
    38  	}
    39  	deleteAllContainers()
    40  
    41  	logDone("rename - stopped container")
    42  }
    43  
    44  func TestRenameRunningContainer(t *testing.T) {
    45  	runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh")
    46  	out, _, err := runCommandWithOutput(runCmd)
    47  	if err != nil {
    48  		t.Fatalf(out, err)
    49  	}
    50  
    51  	cleanedContainerID := stripTrailingCharacters(out)
    52  	runCmd = exec.Command(dockerBinary, "rename", "first_name", "new_name")
    53  	out, _, err = runCommandWithOutput(runCmd)
    54  	if err != nil {
    55  		t.Fatalf(out, err)
    56  	}
    57  
    58  	name, err := inspectField(cleanedContainerID, "Name")
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	}
    62  	if name != "new_name" {
    63  		t.Fatal("Failed to rename container ")
    64  	}
    65  	deleteAllContainers()
    66  
    67  	logDone("rename - running container")
    68  }
    69  
    70  func TestRenameCheckNames(t *testing.T) {
    71  	runCmd := exec.Command(dockerBinary, "run", "--name", "first_name", "-d", "busybox", "sh")
    72  	out, _, err := runCommandWithOutput(runCmd)
    73  	if err != nil {
    74  		t.Fatalf(out, err)
    75  	}
    76  
    77  	runCmd = exec.Command(dockerBinary, "rename", "first_name", "new_name")
    78  	out, _, err = runCommandWithOutput(runCmd)
    79  	if err != nil {
    80  		t.Fatalf(out, err)
    81  	}
    82  
    83  	name, err := inspectField("new_name", "Name")
    84  	if err != nil {
    85  		t.Fatal(err)
    86  	}
    87  	if name != "new_name" {
    88  		t.Fatal("Failed to rename container ")
    89  	}
    90  
    91  	name, err = inspectField("first_name", "Name")
    92  	if err == nil && !strings.Contains(err.Error(), "No such image or container: first_name") {
    93  		t.Fatal(err)
    94  	}
    95  
    96  	deleteAllContainers()
    97  
    98  	logDone("rename - running container")
    99  }
   100  
   101  func TestRenameInvalidName(t *testing.T) {
   102  	defer deleteAllContainers()
   103  	runCmd := exec.Command(dockerBinary, "run", "--name", "myname", "-d", "busybox", "top")
   104  	if out, _, err := runCommandWithOutput(runCmd); err != nil {
   105  		t.Fatalf(out, err)
   106  	}
   107  
   108  	runCmd = exec.Command(dockerBinary, "rename", "myname", "new:invalid")
   109  	if out, _, err := runCommandWithOutput(runCmd); err == nil || !strings.Contains(out, "Invalid container name") {
   110  		t.Fatalf("Renaming container to invalid name should have failed: %s\n%v", out, err)
   111  	}
   112  
   113  	runCmd = exec.Command(dockerBinary, "ps", "-a")
   114  	if out, _, err := runCommandWithOutput(runCmd); err != nil || !strings.Contains(out, "myname") {
   115  		t.Fatalf("Output of docker ps should have included 'myname': %s\n%v", out, err)
   116  	}
   117  
   118  	logDone("rename - invalid container name")
   119  }