...
1 package main
2
3 import (
4 "net/http"
5 "net/http/httptest"
6 "testing"
7
8 "sigs.k8s.io/controller-runtime/pkg/log"
9
10 "edge-infra.dev/pkg/lib/fog"
11
12 "github.com/gin-gonic/gin"
13 "github.com/stretchr/testify/assert"
14
15 clientConfig "sigs.k8s.io/controller-runtime/pkg/client/config"
16 "sigs.k8s.io/controller-runtime/pkg/manager"
17
18 config "edge-infra.dev/pkg/edge/device-registrar/config"
19 services "edge-infra.dev/pkg/edge/device-registrar/services"
20 )
21
22
23 func SetupRouter() *gin.Engine {
24 r := gin.Default()
25 r.GET("/ping", func(c *gin.Context) {
26 c.JSON(http.StatusOK, gin.H{
27 "message": "pong",
28 })
29 })
30 return r
31 }
32
33
34 func TestPingEndpoint(t *testing.T) {
35 router := SetupRouter()
36
37 w := httptest.NewRecorder()
38 req, _ := http.NewRequest("GET", "/ping", nil)
39 router.ServeHTTP(w, req)
40
41 assert.Equal(t, http.StatusOK, w.Code)
42 assert.Equal(t, `{"message":"pong"}`, w.Body.String())
43 }
44
45 func main() {
46
47 log.SetLogger(fog.New())
48
49 router := gin.Default()
50
51
52 cfg := clientConfig.GetConfigOrDie()
53 mgr, err := manager.New(cfg, manager.Options{})
54 if err != nil {
55 panic(err)
56 }
57
58 config.AddToScheme(mgr.GetScheme())
59
60 setupRoutes(router)
61
62
63 if err := router.Run(":8080"); err != nil {
64 panic(err)
65 }
66 }
67
68
69 func setupRoutes(router *gin.Engine) {
70 router.GET("/applications", services.ListApplications)
71 router.DELETE("/applications/:appID", services.DeleteApplication)
72 router.POST("/register", services.RegisterDevice)
73 router.GET("/bootstrap/:activationCode", services.BootstrapDevice)
74
75 router.POST("/pair", services.Pair)
76 router.GET("/discover/:serviceName", services.DiscoverService)
77 router.POST("/connect/:activationCode", services.ConnectDevice)
78 router.DELETE("/devices/:name", services.DeleteDeviceService)
79 }
80
View as plain text