Files
atlantis/server/controllers/status_controller_test.go
Eng Zer Jun 38cf7b0141 refactor: move from io/ioutil to io and os package (#1843)
The io/ioutil package has been deprecated as of Go 1.16, see
https://golang.org/doc/go1.16#ioutil. This commit replaces the existing
io/ioutil functions with their new definitions in io and os packages.

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2021-10-07 00:37:42 -04:00

83 lines
2.0 KiB
Go

package controllers_test
import (
"bytes"
"encoding/json"
"io"
"net/http"
"net/http/httptest"
"testing"
"github.com/runatlantis/atlantis/server/controllers"
"github.com/runatlantis/atlantis/server/events"
"github.com/runatlantis/atlantis/server/logging"
. "github.com/runatlantis/atlantis/testing"
)
func TestStatusController_Startup(t *testing.T) {
logger := logging.NewNoopLogger(t)
r, _ := http.NewRequest("GET", "/status", bytes.NewBuffer(nil))
w := httptest.NewRecorder()
dr := &events.Drainer{}
d := &controllers.StatusController{
Logger: logger,
Drainer: dr,
}
d.Get(w, r)
var result controllers.StatusResponse
body, err := io.ReadAll(w.Result().Body)
Ok(t, err)
Equals(t, 200, w.Result().StatusCode)
err = json.Unmarshal(body, &result)
Ok(t, err)
Equals(t, false, result.ShuttingDown)
Equals(t, 0, result.InProgressOps)
}
func TestStatusController_InProgress(t *testing.T) {
logger := logging.NewNoopLogger(t)
r, _ := http.NewRequest("GET", "/status", bytes.NewBuffer(nil))
w := httptest.NewRecorder()
dr := &events.Drainer{}
dr.StartOp()
d := &controllers.StatusController{
Logger: logger,
Drainer: dr,
}
d.Get(w, r)
var result controllers.StatusResponse
body, err := io.ReadAll(w.Result().Body)
Ok(t, err)
Equals(t, 200, w.Result().StatusCode)
err = json.Unmarshal(body, &result)
Ok(t, err)
Equals(t, false, result.ShuttingDown)
Equals(t, 1, result.InProgressOps)
}
func TestStatusController_Shutdown(t *testing.T) {
logger := logging.NewNoopLogger(t)
r, _ := http.NewRequest("GET", "/status", bytes.NewBuffer(nil))
w := httptest.NewRecorder()
dr := &events.Drainer{}
dr.ShutdownBlocking()
d := &controllers.StatusController{
Logger: logger,
Drainer: dr,
}
d.Get(w, r)
var result controllers.StatusResponse
body, err := io.ReadAll(w.Result().Body)
Ok(t, err)
Equals(t, 200, w.Result().StatusCode)
err = json.Unmarshal(body, &result)
Ok(t, err)
Equals(t, true, result.ShuttingDown)
Equals(t, 0, result.InProgressOps)
}