update tests
This commit is contained in:
parent
583a68fd90
commit
c972d9c242
@ -38,14 +38,14 @@ func GetServersList(db *sql.DB) ([]Server, error) {
|
|||||||
return servers, err
|
return servers, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetServersbyID(db *sql.DB, id int64) Server {
|
func GetServersbyID(db *sql.DB, id int64) (Server, error) {
|
||||||
var s Server
|
var s Server
|
||||||
rows := db.QueryRow("SELECT * FROM dashboard_server WHERE id = ?", id)
|
rows := db.QueryRow("SELECT * FROM dashboard_server WHERE id = ?", id)
|
||||||
err := rows.Scan(&s.ID, &s.Hostname, &s.OsId)
|
err := rows.Scan(&s.ID, &s.Hostname, &s.OsId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Server{}
|
return Server{}, nil
|
||||||
}
|
}
|
||||||
return s
|
return s, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetServersbyOS(db *sql.DB, id int64) ([]Server, error) {
|
func GetServersbyOS(db *sql.DB, id int64) ([]Server, error) {
|
||||||
|
|||||||
@ -52,14 +52,23 @@ func GetServersbyID(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
dbConn := db.GetDatabaseConnection()
|
dbConn := db.GetDatabaseConnection()
|
||||||
defer dbConn.Close()
|
defer dbConn.Close()
|
||||||
server = db.GetServersbyID(dbConn, int64(id))
|
server, err = db.GetServersbyID(dbConn, int64(id))
|
||||||
logRequest(t, r, status)
|
if err != nil {
|
||||||
|
log.Println("Error getting Server by ID", err)
|
||||||
|
status = 500
|
||||||
|
}
|
||||||
|
if status != 500 {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
err = json.NewEncoder(w).Encode(server)
|
err = json.NewEncoder(w).Encode(server)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error getting OS list")
|
log.Println("Error getting OS list")
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
logRequest(t, r, status)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
w.WriteHeader(status)
|
||||||
|
logRequest(t, r, status)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetServersbyOS(w http.ResponseWriter, r *http.Request) {
|
func GetServersbyOS(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -74,9 +83,6 @@ func GetServersbyOS(w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error converting ID", err)
|
log.Println("Error converting ID", err)
|
||||||
status = 500
|
status = 500
|
||||||
logRequest(t, r, status)
|
|
||||||
w.WriteHeader(status)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
dbConn := db.GetDatabaseConnection()
|
dbConn := db.GetDatabaseConnection()
|
||||||
defer dbConn.Close()
|
defer dbConn.Close()
|
||||||
@ -84,20 +90,21 @@ func GetServersbyOS(w http.ResponseWriter, r *http.Request) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error getting servers by OS", err)
|
log.Println("Error getting servers by OS", err)
|
||||||
status = 500
|
status = 500
|
||||||
logRequest(t, r, status)
|
|
||||||
w.WriteHeader(status)
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
logRequest(t, r, status)
|
if status != 500 {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
err = json.NewEncoder(w).Encode(servers)
|
err = json.NewEncoder(w).Encode(servers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error getting OS list")
|
log.Println("Error encoding OS list")
|
||||||
status = 500
|
w.Header().Del("Content-Type")
|
||||||
|
logRequest(t, r, status)
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
logRequest(t, r, status)
|
logRequest(t, r, status)
|
||||||
w.WriteHeader(status)
|
w.WriteHeader(status)
|
||||||
return
|
return
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateServer(w http.ResponseWriter, r *http.Request) {
|
func CreateServer(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -110,14 +117,16 @@ func CreateServer(w http.ResponseWriter, r *http.Request) {
|
|||||||
body, err := io.ReadAll(r.Body)
|
body, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err.Error(), "Error reading request body")
|
log.Println(err.Error(), "Error reading request body")
|
||||||
|
status = 500
|
||||||
}
|
}
|
||||||
|
|
||||||
params := make(map[string]null.String)
|
params := make(map[string]null.String)
|
||||||
err = json.Unmarshal(body, ¶ms)
|
err = json.Unmarshal(body, ¶ms)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err.Error(), "Error parsing request body")
|
log.Println(err.Error(), "Error parsing request body")
|
||||||
return
|
status = 500
|
||||||
}
|
}
|
||||||
|
if status != 500 {
|
||||||
server.Hostname = params["hostname"]
|
server.Hostname = params["hostname"]
|
||||||
server.OsId = params["os_id"]
|
server.OsId = params["os_id"]
|
||||||
dbConn := db.GetDatabaseConnection()
|
dbConn := db.GetDatabaseConnection()
|
||||||
@ -127,6 +136,7 @@ func CreateServer(w http.ResponseWriter, r *http.Request) {
|
|||||||
log.Println(err.Error(), "Error creating server")
|
log.Println(err.Error(), "Error creating server")
|
||||||
status = 500
|
status = 500
|
||||||
}
|
}
|
||||||
|
}
|
||||||
logRequest(t, r, status)
|
logRequest(t, r, status)
|
||||||
w.WriteHeader(status)
|
w.WriteHeader(status)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,61 +88,71 @@ func TestGetServerList(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetServerbyID(t *testing.T) {
|
func TestGetServerbyID(t *testing.T) {
|
||||||
// Créer une connexion à la base de données simulée
|
mockDB, mock, err := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
|
||||||
dbConn, mock, err := sqlmock.New()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
|
t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
|
||||||
}
|
}
|
||||||
defer dbConn.Close()
|
defer mockDB.Close()
|
||||||
|
|
||||||
// Simuler la réponse de la base de données
|
|
||||||
mockServer := db.Server{
|
|
||||||
ID: 1, Hostname: null.StringFrom("testsla"), OsId: null.StringFrom("8"),
|
|
||||||
}
|
|
||||||
|
|
||||||
rows := sqlmock.NewRows([]string{"id", "hostname", "os_id"}).
|
|
||||||
AddRow(1, "testsla", "8")
|
|
||||||
|
|
||||||
mock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM dashboard_server WHERE id = ?")).WithArgs(sqlmock.AnyArg()).WillReturnRows(rows)
|
|
||||||
|
|
||||||
// Remplacer la fonction GetDatabaseConnection par une version mockée
|
|
||||||
originalGetDatabaseConnection := db.GetDatabaseConnection
|
|
||||||
db.GetDatabaseConnection = func() *sql.DB {
|
db.GetDatabaseConnection = func() *sql.DB {
|
||||||
return dbConn
|
return mockDB
|
||||||
}
|
}
|
||||||
defer func() { db.GetDatabaseConnection = originalGetDatabaseConnection }()
|
|
||||||
|
|
||||||
// Créer une requête HTTP
|
mockServer := []db.Server{
|
||||||
req, err := http.NewRequest("GET", "/server/1", nil)
|
{ID: 1, Hostname: null.StringFrom("testsla"), OsId: null.StringFrom("8")},
|
||||||
|
}
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
requestParam string
|
||||||
|
mockBehavior func()
|
||||||
|
expectedStatus int
|
||||||
|
expectedContentType string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "Successfully get Server by OS ID",
|
||||||
|
requestParam: "1",
|
||||||
|
mockBehavior: func() {
|
||||||
|
rows := sqlmock.NewRows([]string{"id", "hostname", "os_id"}).AddRow(1, "testsla", "8")
|
||||||
|
mock.ExpectQuery("SELECT * FROM dashboard_server WHERE id = ?").WithArgs(sqlmock.AnyArg()).WillReturnRows(rows)
|
||||||
|
},
|
||||||
|
expectedStatus: http.StatusOK,
|
||||||
|
expectedContentType: "application/json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Error getting Server by ID",
|
||||||
|
requestParam: "test",
|
||||||
|
mockBehavior: func() {},
|
||||||
|
expectedStatus: http.StatusInternalServerError,
|
||||||
|
expectedContentType: "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
tt.mockBehavior()
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", "/server/", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
req = mux.SetURLVars(req, map[string]string{"id": tt.requestParam})
|
||||||
|
|
||||||
// Ajouter les paramètres de la route
|
|
||||||
req = mux.SetURLVars(req, map[string]string{"id": "1"})
|
|
||||||
|
|
||||||
// Créer un ResponseRecorder pour enregistrer la réponse
|
|
||||||
rr := httptest.NewRecorder()
|
rr := httptest.NewRecorder()
|
||||||
handler := http.HandlerFunc(GetServersbyID)
|
handler := http.HandlerFunc(GetServersbyID)
|
||||||
|
|
||||||
// Appeler la fonction GetServer
|
|
||||||
handler.ServeHTTP(rr, req)
|
handler.ServeHTTP(rr, req)
|
||||||
|
|
||||||
// Vérifier le statut de la réponse
|
if status := rr.Code; status != tt.expectedStatus {
|
||||||
if status := rr.Code; status != http.StatusOK {
|
|
||||||
t.Errorf("handler returned wrong status code: got %v want %v",
|
t.Errorf("handler returned wrong status code: got %v want %v",
|
||||||
status, http.StatusOK)
|
status, tt.expectedStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier le type de contenu de la réponse
|
if ct := rr.Header().Get("Content-Type"); ct != tt.expectedContentType {
|
||||||
expectedContentType := "application/json"
|
|
||||||
if ct := rr.Header().Get("Content-Type"); ct != expectedContentType {
|
|
||||||
t.Errorf("handler returned wrong content type: got %v want %v",
|
t.Errorf("handler returned wrong content type: got %v want %v",
|
||||||
ct, expectedContentType)
|
ct, tt.expectedContentType)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier le corps de la réponse
|
var responseServer []db.Server
|
||||||
var responseServer db.Server
|
if len(responseServer) > 0 {
|
||||||
err = json.NewDecoder(rr.Body).Decode(&responseServer)
|
err = json.NewDecoder(rr.Body).Decode(&responseServer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Error decoding json request", err)
|
t.Fatal("Error decoding json request", err)
|
||||||
@ -153,10 +163,12 @@ func TestGetServerbyID(t *testing.T) {
|
|||||||
responseServer, mockServer)
|
responseServer, mockServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vérifier que toutes les attentes ont été satisfaites
|
}
|
||||||
if err := mock.ExpectationsWereMet(); err != nil {
|
if err := mock.ExpectationsWereMet(); err != nil {
|
||||||
t.Errorf("there were unfulfilled expectations: %s", err)
|
t.Errorf("there were unfulfilled expectations: %s", err)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetServerbyOS(t *testing.T) {
|
func TestGetServerbyOS(t *testing.T) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user