@@ -412,3 +412,32 @@ func TestHTTPWithDefaultHandler_TinyPayload_WriteThreeTimes(t *testing.T) {
412412 assert .Empty (t , result .Header .Get ("Content-Encoding" ))
413413 assert .Equal (t , "part 1\n part 2\n part 3\n " , w .Body .String ())
414414}
415+
416+ func TestGinCORSMiddleware (t * testing.T ) {
417+ var (
418+ g = newGinInstance (bigPayload , DefaultHandler ().Gin , corsMiddleware )
419+ r = httptest .NewRequest (http .MethodOptions , "/" , nil )
420+ w = httptest .NewRecorder ()
421+ )
422+
423+ g .ServeHTTP (w , r )
424+ result := w .Result ()
425+
426+ assert .EqualValues (t , http .StatusNoContent , result .StatusCode )
427+ assert .Equal (t , "*" , result .Header .Get ("Access-Control-Allow-Origin" ))
428+ assert .Equal (t , "POST" , result .Header .Get ("Access-Control-Allow-Methods" ))
429+ assert .EqualValues (t , 0 , w .Body .Len ())
430+ }
431+
432+ // corsMiddleware allows CORS request
433+ func corsMiddleware (c * gin.Context ) {
434+ c .Writer .Header ().Set ("Access-Control-Allow-Origin" , "*" )
435+ c .Writer .Header ().Set ("Access-Control-Allow-Methods" , "POST" )
436+
437+ if c .Request .Method == http .MethodOptions {
438+ c .AbortWithStatus (http .StatusNoContent )
439+ return
440+ }
441+
442+ c .Next ()
443+ }
0 commit comments