Update mux on delete route

This commit is contained in:
Roberto Abdelkader Martínez Pérez
2019-10-11 07:56:10 +02:00
parent 93dfe9ef7b
commit bbca5873a0
3 changed files with 66 additions and 42 deletions
-40
View File
@@ -1,41 +1 @@
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)
}
}
+4 -2
View File
@@ -52,13 +52,15 @@ func (srl *safeRouteList) List() []model.Route {
func (srl *safeRouteList) Delete(ID string) error {
srl.m.Lock()
defer srl.m.Unlock()
for i := 0; i < len(srl.rs); i++ {
if srl.rs[i].ID == ID {
srl.rs = append(srl.rs[:i], srl.rs[i+1:]...)
srl.m.Unlock()
Server.Handler.(*mux.SwappableMux).Update(srl.Snapshot())
return nil
}
}
srl.m.Unlock()
return errors.New("Route not found")
}
+62
View File
@@ -3,11 +3,15 @@
package user
import (
"net/http"
"net/http/httptest"
"os"
"reflect"
"testing"
"time"
"github.com/BBVA/kapow/internal/server/model"
"github.com/BBVA/kapow/internal/server/user/mux"
)
func TestNewReturnAnEmptyStruct(t *testing.T) {
@@ -277,3 +281,61 @@ func TestPackageHaveASingletonEmptyRouteList(t *testing.T) {
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)
}
}