@@ -112,6 +112,44 @@ describe('auth_digest', function() {
112
112
} ) ;
113
113
} ) ;
114
114
115
+ describe ( 'With brackets in realm header' , function ( ) {
116
+ it ( 'should generate a proper header' , function ( ) {
117
+ // from https://tools.ietf.org/html/rfc2617
118
+ var performDigest = function ( ) {
119
+ var header = 'Digest qop="auth", realm="IP Camera(76475)", nonce="4e4449794d575269597a706b5a575935595441324d673d3d", stale="FALSE", Basic realm="IP Camera(76475)"' ;
120
+ var user = 'Mufasa' ;
121
+ var pass = 'Circle Of Life' ;
122
+ var method = 'get' ;
123
+ var path = '/dir/index.html' ;
124
+
125
+ var updatedHeader = auth . digest ( header , user , pass , method , path ) ;
126
+ var parsedUpdatedHeader = parse_header ( updatedHeader ) ;
127
+
128
+ var ha1 = md5 ( user + ':' + parsedUpdatedHeader . realm + ':' + pass ) ;
129
+ var ha2 = md5 ( method . toUpperCase ( ) + ':' + path ) ;
130
+ var expectedResponse = md5 ( [
131
+ ha1 ,
132
+ parsedUpdatedHeader . nonce ,
133
+ parsedUpdatedHeader . nc ,
134
+ parsedUpdatedHeader . cnonce ,
135
+ parsedUpdatedHeader . qop ,
136
+ ha2
137
+ ] . join ( ':' ) ) ;
138
+
139
+ return {
140
+ header : updatedHeader ,
141
+ parsed : parsedUpdatedHeader ,
142
+ expectedResponse : expectedResponse ,
143
+ }
144
+ }
145
+
146
+ const result = performDigest ( ) ;
147
+
148
+ ( result . header ) . should
149
+ . match ( / r e a l m = " I P C a m e r a \( 7 6 4 7 5 \) " / )
150
+ } ) ;
151
+ } ) ;
152
+
115
153
describe ( 'Without qop (RFC 2617)' , function ( ) {
116
154
it ( 'should generate a proper header' , function ( ) {
117
155
// from https://tools.ietf.org/html/rfc2069
0 commit comments