File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -157,7 +157,10 @@ app.createContext = function(req, res){
157157 response . request = request ;
158158 context . onerror = context . onerror . bind ( context ) ;
159159 context . originalUrl = request . originalUrl = req . url ;
160- context . cookies = new Cookies ( req , res , this . keys ) ;
160+ context . cookies = new Cookies ( req , res , {
161+ keys : this . keys ,
162+ secure : request . secure
163+ } ) ;
161164 context . accept = request . accept = accepts ( req ) ;
162165 context . state = { } ;
163166 return context ;
Original file line number Diff line number Diff line change 2323 "composition" : " ^2.1.1" ,
2424 "content-disposition" : " ~0.5.0" ,
2525 "content-type" : " ^1.0.0" ,
26- "cookies" : " ~0.5.0 " ,
26+ "cookies" : " ~0.6.1 " ,
2727 "debug" : " *" ,
2828 "delegates" : " ^1.0.0" ,
2929 "destroy" : " ^1.0.3" ,
Original file line number Diff line number Diff line change @@ -8,6 +8,8 @@ exports = module.exports = function(req, res){
88 var socket = new Stream . Duplex ( ) ;
99 req = req || { headers : { } , socket : socket , __proto__ : Stream . Readable . prototype } ;
1010 res = res || { _headers : { } , socket : socket , __proto__ : Stream . Writable . prototype } ;
11+ req . socket = req . socket || socket ;
12+ res . socket = res . socket || socket ;
1113 res . getHeader = function ( k ) { return res . _headers [ k . toLowerCase ( ) ] } ;
1214 res . setHeader = function ( k , v ) { res . _headers [ k . toLowerCase ( ) ] = v } ;
1315 res . removeHeader = function ( k , v ) { delete res . _headers [ k . toLowerCase ( ) ] } ;
Original file line number Diff line number Diff line change @@ -80,4 +80,43 @@ describe('ctx.cookies.set()', function(){
8080 } )
8181 } )
8282 } )
83+
84+ describe ( 'with secure' , function ( ) {
85+ it ( 'should get secure from request' , function ( done ) {
86+ var app = koa ( ) ;
87+
88+ app . proxy = true ;
89+ app . keys = [ 'a' , 'b' ] ;
90+
91+ app . use ( function * ( next ) {
92+ this . cookies . set ( 'name' , 'jon' , { signed : true } ) ;
93+ this . status = 204 ;
94+ } )
95+
96+ var server = app . listen ( ) ;
97+
98+ request ( server )
99+ . get ( '/' )
100+ . set ( 'x-forwarded-proto' , 'https' ) // mock secure
101+ . expect ( 204 )
102+ . end ( function ( err , res ) {
103+ if ( err ) return done ( err ) ;
104+
105+ var cookies = res . headers [ 'set-cookie' ] ;
106+ cookies . some ( function ( cookie ) {
107+ return / ^ n a m e = / . test ( cookie ) ;
108+ } ) . should . be . ok ;
109+
110+ cookies . some ( function ( cookie ) {
111+ return / ^ n a m e \. s i g = / . test ( cookie ) ;
112+ } ) . should . be . ok ;
113+
114+ cookies . every ( function ( cookie ) {
115+ return / s e c u r e / . test ( cookie ) ;
116+ } ) . should . be . ok ;
117+
118+ done ( ) ;
119+ } )
120+ } )
121+ } )
83122} )
You can’t perform that action at this time.
0 commit comments