56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package csrf
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/revel/revel"
|
|
)
|
|
|
|
func TestExemptPath(t *testing.T) {
|
|
MarkExempt("/Controller/Action")
|
|
|
|
resp := httptest.NewRecorder()
|
|
postRequest, _ := http.NewRequest("POST", "http://www.example.com/Controller/Action", nil)
|
|
c := NewTestController(resp, postRequest)
|
|
c.Session = make(revel.Session)
|
|
|
|
testFilters[0](c, testFilters)
|
|
|
|
if c.Response.Status == 403 {
|
|
t.Fatal("post to csrf exempt action should pass")
|
|
}
|
|
}
|
|
|
|
func TestExemptPathCaseInsensitive(t *testing.T) {
|
|
MarkExempt("/Controller/Action")
|
|
|
|
resp := httptest.NewRecorder()
|
|
postRequest, _ := http.NewRequest("POST", "http://www.example.com/controller/action", nil)
|
|
c := NewTestController(resp, postRequest)
|
|
c.Session = make(revel.Session)
|
|
|
|
testFilters[0](c, testFilters)
|
|
|
|
if c.Response.Status == 403 {
|
|
t.Fatal("post to csrf exempt action should pass")
|
|
}
|
|
}
|
|
|
|
func TestExemptAction(t *testing.T) {
|
|
MarkExempt("Controller.Action")
|
|
|
|
resp := httptest.NewRecorder()
|
|
postRequest, _ := http.NewRequest("POST", "http://www.example.com/Controller/Action", nil)
|
|
c := NewTestController(resp, postRequest)
|
|
c.Session = make(revel.Session)
|
|
c.Action = "Controller.Action"
|
|
|
|
testFilters[0](c, testFilters)
|
|
|
|
if c.Response.Status == 403 {
|
|
t.Fatal("post to csrf exempt action should pass")
|
|
}
|
|
}
|