Update mux on delete route
This commit is contained in:
@@ -1,41 +1 @@
|
|||||||
package user
|
package user
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/BBVA/kapow/internal/server/model"
|
|
||||||
"github.com/BBVA/kapow/internal/server/user/mux"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO TestRunRunsAnHTTPServer(t *testing.T) {}
|
|
||||||
|
|
||||||
func TestAppendUpdatesMuxWithProvideRoute(t *testing.T) {
|
|
||||||
Server = http.Server{
|
|
||||||
Handler: mux.New(),
|
|
||||||
}
|
|
||||||
srl := New()
|
|
||||||
route := model.Route{
|
|
||||||
Method: "GET",
|
|
||||||
Pattern: "/",
|
|
||||||
Entrypoint: "/bin/sh -c",
|
|
||||||
Command: "jaillover > /tmp/kapow-test-append-updates-mux",
|
|
||||||
}
|
|
||||||
os.Remove("/tmp/kapow-test-append-updates-mux")
|
|
||||||
defer os.Remove("/tmp/kapow-test-append-updates-mux")
|
|
||||||
|
|
||||||
srl.Append(route)
|
|
||||||
|
|
||||||
req := httptest.NewRequest("GET", "/", nil)
|
|
||||||
w := httptest.NewRecorder()
|
|
||||||
|
|
||||||
Server.Handler.ServeHTTP(w, req)
|
|
||||||
|
|
||||||
if _, err := os.Stat("/tmp/kapow-test-append-updates-mux"); os.IsNotExist(err) {
|
|
||||||
t.Error("Routes not updated")
|
|
||||||
} else if err != nil {
|
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -52,13 +52,15 @@ func (srl *safeRouteList) List() []model.Route {
|
|||||||
|
|
||||||
func (srl *safeRouteList) Delete(ID string) error {
|
func (srl *safeRouteList) Delete(ID string) error {
|
||||||
srl.m.Lock()
|
srl.m.Lock()
|
||||||
defer srl.m.Unlock()
|
|
||||||
|
|
||||||
for i := 0; i < len(srl.rs); i++ {
|
for i := 0; i < len(srl.rs); i++ {
|
||||||
if srl.rs[i].ID == ID {
|
if srl.rs[i].ID == ID {
|
||||||
srl.rs = append(srl.rs[:i], srl.rs[i+1:]...)
|
srl.rs = append(srl.rs[:i], srl.rs[i+1:]...)
|
||||||
|
srl.m.Unlock()
|
||||||
|
Server.Handler.(*mux.SwappableMux).Update(srl.Snapshot())
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
srl.m.Unlock()
|
||||||
return errors.New("Route not found")
|
return errors.New("Route not found")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,15 @@
|
|||||||
package user
|
package user
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/BBVA/kapow/internal/server/model"
|
"github.com/BBVA/kapow/internal/server/model"
|
||||||
|
"github.com/BBVA/kapow/internal/server/user/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewReturnAnEmptyStruct(t *testing.T) {
|
func TestNewReturnAnEmptyStruct(t *testing.T) {
|
||||||
@@ -277,3 +281,61 @@ func TestPackageHaveASingletonEmptyRouteList(t *testing.T) {
|
|||||||
t.Error("Routes is not an empty safeRouteList")
|
t.Error("Routes is not an empty safeRouteList")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAppendUpdatesMuxWithProvideRoute(t *testing.T) {
|
||||||
|
Server = http.Server{
|
||||||
|
Handler: mux.New(),
|
||||||
|
}
|
||||||
|
srl := New()
|
||||||
|
route := model.Route{
|
||||||
|
Method: "GET",
|
||||||
|
Pattern: "/",
|
||||||
|
Entrypoint: "/bin/sh -c",
|
||||||
|
Command: "jaillover > /tmp/kapow-test-append-updates-mux",
|
||||||
|
}
|
||||||
|
os.Remove("/tmp/kapow-test-append-updates-mux")
|
||||||
|
defer os.Remove("/tmp/kapow-test-append-updates-mux")
|
||||||
|
|
||||||
|
srl.Append(route)
|
||||||
|
|
||||||
|
req := httptest.NewRequest("GET", "/", nil)
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
Server.Handler.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
if _, err := os.Stat("/tmp/kapow-test-append-updates-mux"); os.IsNotExist(err) {
|
||||||
|
t.Error("Routes not updated")
|
||||||
|
} else if err != nil {
|
||||||
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteUpdatesMuxWithRemainingRoutes(t *testing.T) {
|
||||||
|
Server = http.Server{
|
||||||
|
Handler: mux.New(),
|
||||||
|
}
|
||||||
|
srl := New()
|
||||||
|
route := srl.Append(
|
||||||
|
model.Route{
|
||||||
|
Method: "GET",
|
||||||
|
Pattern: "/",
|
||||||
|
Entrypoint: "/bin/sh -c",
|
||||||
|
Command: "jaillover > /tmp/kapow-test-remove-updates-mux",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
os.Remove("/tmp/kapow-test-remove-updates-mux")
|
||||||
|
defer os.Remove("/tmp/kapow-test-remove-updates-mux")
|
||||||
|
|
||||||
|
_ = srl.Delete(route.ID)
|
||||||
|
|
||||||
|
req := httptest.NewRequest("GET", "/", nil)
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
Server.Handler.ServeHTTP(w, req)
|
||||||
|
|
||||||
|
if _, err := os.Stat("/tmp/kapow-test-remove-updates-mux"); err == nil {
|
||||||
|
t.Error("Routes not updated")
|
||||||
|
} else if !os.IsNotExist(err) {
|
||||||
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user