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 }