forked from electricdusk/rushlink
		
	Add a test for issue #60
This commit is contained in:
		
							parent
							
								
									847fd8072b
								
							
						
					
					
						commit
						0b2297a2e8
					
				@ -57,7 +57,7 @@ func createTemporaryRouter(t *testing.T) (*mux.Router, *rushlink) {
 | 
			
		||||
		fs:      fileStore,
 | 
			
		||||
		rootURL: rootURL,
 | 
			
		||||
	}
 | 
			
		||||
	return CreateMainRouter(&rl), &rl
 | 
			
		||||
	return CreateMainRouter(&rl, true), &rl
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// checkStatusCode checks whether the status code from a recorded response is equal
 | 
			
		||||
@ -145,5 +145,17 @@ func TestIssue53(t *testing.T) {
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestIssue60(t *testing.T) {
 | 
			
		||||
	srv, _ := createTemporaryRouter(t)
 | 
			
		||||
 | 
			
		||||
	// Put a URL with a fragment identifier into the database.
 | 
			
		||||
	req, err := http.NewRequest("GET", "/css/nonexistent_file.css", nil)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	rr := httptest.NewRecorder()
 | 
			
		||||
	srv.ServeHTTP(rr, req)
 | 
			
		||||
	checkStatusCode(t, rr, http.StatusNotFound)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								router.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								router.go
									
									
									
									
									
								
							@ -33,6 +33,7 @@ func (rl *rushlink) recoveryMiddleware(next http.Handler) http.Handler {
 | 
			
		||||
		defer func() {
 | 
			
		||||
			defer func() {
 | 
			
		||||
				if err := recover(); err != nil {
 | 
			
		||||
					w.WriteHeader(500)
 | 
			
		||||
					log.Printf("error: panic while recovering from another panic: %v\n", err)
 | 
			
		||||
					debug.PrintStack()
 | 
			
		||||
					fmt.Fprintf(w, "internal server error: %v\n", err)
 | 
			
		||||
@ -40,6 +41,7 @@ func (rl *rushlink) recoveryMiddleware(next http.Handler) http.Handler {
 | 
			
		||||
			}()
 | 
			
		||||
 | 
			
		||||
			if err := recover(); err != nil {
 | 
			
		||||
				w.WriteHeader(500)
 | 
			
		||||
				log.Printf("error: %v\n", err)
 | 
			
		||||
				debug.PrintStack()
 | 
			
		||||
				rl.renderInternalServerError(w, r, err)
 | 
			
		||||
@ -80,10 +82,12 @@ func (w *statusResponseWriter) WriteHeader(statusCode int) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateMainRouter creates the main Gorilla router for the application.
 | 
			
		||||
func CreateMainRouter(rl *rushlink) *mux.Router {
 | 
			
		||||
func CreateMainRouter(rl *rushlink, debug bool) *mux.Router {
 | 
			
		||||
	router := mux.NewRouter()
 | 
			
		||||
	router.Use(rl.recoveryMiddleware)
 | 
			
		||||
	router.Use(rl.metricsMiddleware)
 | 
			
		||||
	if !debug {
 | 
			
		||||
		router.Use(rl.recoveryMiddleware)
 | 
			
		||||
		router.Use(rl.metricsMiddleware)
 | 
			
		||||
	}
 | 
			
		||||
	router.HandleFunc("/{path:img/"+staticFilenameExpr+"}", rl.staticGetHandler).Methods("GET", "HEAD")
 | 
			
		||||
	router.HandleFunc("/{path:css/"+staticFilenameExpr+"}", rl.staticGetHandler).Methods("GET", "HEAD")
 | 
			
		||||
	router.HandleFunc("/{path:js/"+staticFilenameExpr+"}", rl.staticGetHandler).Methods("GET", "HEAD")
 | 
			
		||||
@ -119,7 +123,7 @@ func StartMainServer(addr string, db *db.Database, fs *db.FileStore, rawRootURL
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	srv := &http.Server{
 | 
			
		||||
		Handler:      CreateMainRouter(&rl),
 | 
			
		||||
		Handler:      CreateMainRouter(&rl, false),
 | 
			
		||||
		Addr:         addr,
 | 
			
		||||
		WriteTimeout: 15 * time.Second,
 | 
			
		||||
		ReadTimeout:  15 * time.Second,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user