package handlers import ( "net/http" "net/http/httptest" "os" "path/filepath" "strings" "testing" "teraclone/internal/service" ) func TestSystemImprovementPagesAndRemovedNavigation(t *testing.T) { handler, err := NewDeviceHandler(service.NewStatelessAppService(), "http://127.0.0.1:1") if err != nil { t.Fatal(err) } mux := http.NewServeMux() handler.RegisterRoutes(mux) handler.sessions["qa-admin"] = browserSession{Username: "admin", BackendToken: "test-token", Role: "administrator", WorkspaceID: "local-ui-qa"} for _, path := range []string{"/", "/port-status", "/ports/1/parameters", "/ports/26/parameters", "/ports/20/parameters", "/ports/20/operation-1", "/ports/20/operation-2", "/ports/20/data-log", "/port-debug", "/tools/nettest/ping", "/logs/ports", "/device/factory-reset"} { req := httptest.NewRequest(http.MethodGet, path, nil) req.AddCookie(&http.Cookie{Name: sessionCookieName, Value: "qa-admin"}) response := httptest.NewRecorder() mux.ServeHTTP(response, req) if response.Code != 200 { t.Fatalf("%s: %d", path, response.Code) } html := response.Body.String() for _, removed := range []string{`href="/tools/alias"`, `href="/password"`, `href="/ports/20/advanced"`} { if strings.Contains(html, removed) { t.Errorf("%s still contains %s", path, removed) } } if path == "/port-status" && (!strings.Contains(html, "세션 4 IP") || !strings.Contains(html, "포트 별칭")) { t.Fatal("port alias/session controls missing") } if strings.Contains(path, "operation-") && !strings.Contains(html, `value="10020"`) { t.Fatal("channel listen port is not fixed") } if directory := os.Getenv("TERA_UI_QA_OUTPUT"); directory != "" { if err := os.MkdirAll(directory, 0755); err != nil { t.Fatal(err) } name := strings.ReplaceAll(strings.Trim(path, "/"), "/", "-") if name == "" { name = "dashboard" } if err := os.WriteFile(filepath.Join(directory, name+".html"), response.Body.Bytes(), 0644); err != nil { t.Fatal(err) } } } for _, path := range []string{"/ports/20/advanced", "/tools/alias"} { req := httptest.NewRequest(http.MethodGet, path, nil) req.AddCookie(&http.Cookie{Name: sessionCookieName, Value: "qa-admin"}) response := httptest.NewRecorder() mux.ServeHTTP(response, req) if response.Code != 404 { t.Fatalf("removed page %s returned %d", path, response.Code) } } }