@@ -147,6 +147,55 @@ describe('PassportConfigurator', function() {
147
147
done ( ) ;
148
148
} ) ;
149
149
150
+ it ( 'supports user ldap profile configuration with group search for microsoft active directory' ,
151
+ function ( done ) {
152
+ var providerConfig = {
153
+ ldap : {
154
+ provider : 'ldap' ,
155
+ authScheme : 'ldap' ,
156
+ module : 'passport-ldapauth' ,
157
+ authPath : '/auth/ldap' ,
158
+ successRedirect : '/auth/account' ,
159
+ failureRedirect : '/ldap' ,
160
+ session : true ,
161
+ failureFlash : true ,
162
+ profileAttributesFromLDAP : {
163
+ login : 'uid' ,
164
+ username : 'uid' ,
165
+ displayName : 'displayName' ,
166
+ email : 'mail' ,
167
+ externalId : 'uid' ,
168
+ id : 'uid' ,
169
+ groups : 'memberOf' ,
170
+ } ,
171
+ } ,
172
+ } ;
173
+
174
+ /* user's ldap attributes */
175
+ var userFromLdap = {
176
+ uid : 'john-doe-uid' ,
177
+ displayName : 'John Doe' ,
178
+
179
+ memberOf : [
180
+ { dn : 'cn=PortalAdmins,o=greenwell' , controls : [ ] } ,
181
+ { dn : 'cn=ConnectionsAdmins,o=greenwell' , controls : [ ] } ,
182
+ ] ,
183
+ } ;
184
+ var profile = passportConfigurator . buildUserLdapProfile ( userFromLdap , providerConfig . ldap ) ;
185
+
186
+ assert . equal ( profile . login , userFromLdap . uid , '"login" should take value of "uid"' ) ;
187
+ assert . equal ( profile . username , userFromLdap . uid , '"username" should take value of "uid"' ) ;
188
+ assert . equal ( profile . displayName , userFromLdap . displayName ,
189
+ '"displayName" should take value of "displayName"' ) ;
190
+ assert . equal ( profile . email , userFromLdap . mail , '"email" should take value of "mail"' ) ;
191
+ assert . deepEqual ( profile . emails , [ { value : userFromLdap . mail } ] ,
192
+ '"emails" should be computed from "mail"' ) ;
193
+ assert . equal ( profile . externalId , userFromLdap . uid , '"externalId" should take value of "uid"' ) ;
194
+ assert . deepEqual ( profile . groups , userFromLdap . memberOf ,
195
+ '"groups" should be computed from "memberOf"' ) ;
196
+ done ( ) ;
197
+ } ) ;
198
+
150
199
function setupModels ( ) {
151
200
var ds = loopback . createDataSource ( {
152
201
connector : 'memory' ,
0 commit comments