github.com/MichaelDarr/ahab@v0.0.0-20200528062404-c74c5106e605/internal/container_test.go (about)

     1  package internal
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  func TestGetContainer(t *testing.T) {
     9  	os.Chdir(noConfDir)
    10  	container, err := GetContainer()
    11  	if err == nil {
    12  		t.Errorf("Unexpected success finding project config: %s", err)
    13  	}
    14  
    15  	os.Chdir(exampleConfDir)
    16  	container, err = GetContainer()
    17  	if err != nil {
    18  		t.Errorf("Error finding project config: %s", err)
    19  	} else if container.FilePath != exampleConfPath {
    20  		t.Errorf("Error finding project config path. Expected %s, Found %s", exampleConfPath, container.FilePath)
    21  	}
    22  
    23  	os.Chdir(exampleConfChildDir)
    24  	container, err = GetContainer()
    25  	if err != nil {
    26  		t.Errorf("Error finding project config from child dir: %s", err)
    27  	} else if container.FilePath != exampleConfPath {
    28  		t.Errorf("Error finding project config path from child dir. Expected %s, Found %s", exampleConfPath, container.FilePath)
    29  	}
    30  }
    31  
    32  func TestCmd(t *testing.T) {
    33  	container := miniContainer("cmd")
    34  	container.Create(true)
    35  	expectContainerStatus(3, container, t)
    36  
    37  	err := container.Cmd("pause")
    38  	if err != nil {
    39  		t.Errorf("Error executing pause cmd on container: %s", err)
    40  	}
    41  	expectContainerStatus(5, container, t)
    42  
    43  	err = container.Cmd("unpause")
    44  	if err != nil {
    45  		t.Errorf("Error executing unpause cmd on container: %s", err)
    46  	}
    47  	expectContainerStatus(3, container, t)
    48  
    49  	err = container.Cmd("stop")
    50  	if err != nil {
    51  		t.Errorf("Error executing stop cmd on container: %s", err)
    52  	}
    53  	expectContainerStatus(6, container, t)
    54  
    55  	err = container.Cmd("start")
    56  	if err != nil {
    57  		t.Errorf("Error executing start cmd on container: %s", err)
    58  	}
    59  	expectContainerStatus(3, container, t)
    60  	container.Down()
    61  }
    62  
    63  func TestCreate(t *testing.T) {
    64  	container := miniContainer("create")
    65  	err := container.Create(true)
    66  	if err != nil {
    67  		t.Errorf("Error creating container: %s", err)
    68  	}
    69  	expectContainerStatus(3, container, t)
    70  	container.Down()
    71  
    72  	err = container.Create(false)
    73  	if err != nil {
    74  		t.Errorf("Error creating container: %s", err)
    75  	}
    76  	prohibitContainerStatus(3, container, t)
    77  	container.Down()
    78  }
    79  
    80  func TestDown(t *testing.T) {
    81  	container := miniContainer("down")
    82  	container.Create(true)
    83  	expectContainerStatus(3, container, t)
    84  	err := container.Down()
    85  	if err != nil {
    86  		t.Errorf("Error down-ing container: %s", err)
    87  	}
    88  	expectContainerStatus(0, container, t)
    89  
    90  	container.Create(false)
    91  	expectContainerStatus(6, container, t)
    92  	err = container.Down()
    93  	if err != nil {
    94  		t.Errorf("Error down-ing container: %s", err)
    95  	}
    96  	expectContainerStatus(0, container, t)
    97  }
    98  
    99  func TestName(t *testing.T) {
   100  	container := miniContainer("name")
   101  	name := container.Name()
   102  	expectStrEq("test_name", name, t)
   103  
   104  	container.Fields.Name = "named_container"
   105  	name = container.Name()
   106  	expectStrEq("named_container", name, t)
   107  }
   108  
   109  func TestProp(t *testing.T) {
   110  	container := miniContainer("prop")
   111  	status, err := container.Prop("State.Status")
   112  	if err != nil {
   113  		t.Error("Unexpected error on prop check for nonexistent container")
   114  	} else if status != "" {
   115  		t.Errorf("Non-empty string on prop check for nonexistent container. Received: %s", status)
   116  	}
   117  
   118  	container.Create(true)
   119  	expectContainerStatus(3, container, t)
   120  	status, err = container.Prop("State.Status")
   121  	if err != nil {
   122  		t.Errorf("Unexpected an error on prop check: %s", err)
   123  	} else if status == "" {
   124  		t.Error("Empty string receieved on prop check for existing container")
   125  	}
   126  	container.Down()
   127  }
   128  
   129  func TestUp(t *testing.T) {
   130  	container := miniContainer("up")
   131  	err := container.Up()
   132  	if err != nil {
   133  		t.Errorf("Error up-ing container: %s", err)
   134  	}
   135  	expectContainerStatus(3, container, t)
   136  
   137  	container.Cmd("pause")
   138  	expectContainerStatus(5, container, t)
   139  	err = container.Up()
   140  	if err != nil {
   141  		t.Errorf("Error up-ing container: %s", err)
   142  	}
   143  	expectContainerStatus(3, container, t)
   144  
   145  	container.Cmd("stop")
   146  	expectContainerStatus(6, container, t)
   147  	err = container.Up()
   148  	if err != nil {
   149  		t.Errorf("Error up-ing container: %s", err)
   150  	}
   151  	expectContainerStatus(3, container, t)
   152  	container.Down()
   153  }