Fixed naming
This commit is contained in:
82
controllers/devices_controller_test.go
Normal file
82
controllers/devices_controller_test.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"gitlab.com/pactual1/backend/config"
|
||||
"gitlab.com/pactual1/backend/shared"
|
||||
)
|
||||
|
||||
// Assume setupServer() returns your gin.Engine instance
|
||||
func runTestServer() *httptest.Server {
|
||||
// Initialize your database or any other setup
|
||||
// For the sake of this example, I'll just return the Gin engine
|
||||
|
||||
// LOAD APPLICATION CONFIGURATION
|
||||
err := config.Load()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
shared.Init()
|
||||
r := gin.Default()
|
||||
r.POST("/device_info", SaveDeviceInfofunc)
|
||||
return httptest.NewServer(r)
|
||||
}
|
||||
|
||||
func TestSaveDeviceInfofunc(t *testing.T) {
|
||||
ts := runTestServer()
|
||||
defer ts.Close()
|
||||
defer shared.CloseDb()
|
||||
|
||||
t.Run("it should return 400 when JSON payload is invalid", func(t *testing.T) {
|
||||
payload := []byte(`{"InvalidPayload": `)
|
||||
resp, err := http.Post(fmt.Sprintf("%s/device_info", ts.URL), "application/json", bytes.NewBuffer(payload))
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, got %v", err)
|
||||
}
|
||||
|
||||
|
||||
assert.Equal(t, 400, resp.StatusCode)
|
||||
})
|
||||
|
||||
t.Run("it should log a message when IMEI is not found", func(t *testing.T) {
|
||||
// Add a valid payload but with an unknown IMEI
|
||||
payload := []byte(`{"IMEI": "UNKNOWN", "SomeOtherField": "Value"}`)
|
||||
resp, err := http.Post(fmt.Sprintf("%s/device_info", ts.URL), "application/json", bytes.NewBuffer(payload))
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, got %v", err)
|
||||
}
|
||||
|
||||
// Here, ideally you'd want to check your logs to ensure the message was logged
|
||||
assert.Equal(t, 200, resp.StatusCode)
|
||||
})
|
||||
|
||||
t.Run("it should return 200 when all conditions are correct", func(t *testing.T) {
|
||||
// Add a valid payload
|
||||
deviceInfo := map[string]interface{}{
|
||||
"IMEI": "SOME_VALID_IMEI",
|
||||
"SomeOtherField": "Value",
|
||||
}
|
||||
|
||||
payload, _ := json.Marshal(deviceInfo)
|
||||
resp, err := http.Post(fmt.Sprintf("%s/device_info", ts.URL), "application/json", bytes.NewBuffer(payload))
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, got %v", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, 200, resp.StatusCode)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user