@@ -34,15 +34,25 @@ function createClient() {
3434 return ldap . createClient ( { url : `ldap://127.0.0.1:${ port } ` } ) ;
3535}
3636
37+ // Minimal directory stub – only needs findUser so _authenticateAcrossRealms
38+ // can locate the user before delegating to the auth provider.
39+ const directoryStub = {
40+ initialize : async ( ) => { } ,
41+ cleanup : async ( ) => { } ,
42+ findUser : async ( username ) => ( { username } ) ,
43+ } ;
44+
3745describe ( 'SQLite Auth Backend (real DB) - Integration' , ( ) => {
3846 let engine ;
3947 let dbPath ;
48+ let client ;
4049
4150 beforeAll ( ( ) => {
4251 // nothing yet
4352 } ) ;
4453
4554 afterEach ( async ( ) => {
55+ if ( client ) { try { client . unbind ( ) ; client . destroy ( ) ; } catch ( _ ) { } client = null ; }
4656 if ( engine ) { await engine . stop ( ) ; engine = null ; }
4757 if ( dbPath && fs . existsSync ( dbPath ) ) {
4858 try { fs . unlinkSync ( dbPath ) ; } catch ( _ ) { }
@@ -60,15 +70,14 @@ describe('SQLite Auth Backend (real DB) - Integration', () => {
6070 process . env . SQL_QUERY_ONE_USER = 'SELECT username, full_name, surname, mail, home_directory, login_shell, uid_number, gid_number, password_hash AS password FROM users WHERE username = ?' ;
6171
6272 const authProvider = new SQLAuthProvider ( ) ;
63- engine = new LdapEngine ( { baseDn, port, authProviders : [ authProvider ] , directoryProvider : { initialize : async ( ) => { } , cleanup : async ( ) => { } } , logger } ) ;
73+ engine = new LdapEngine ( { baseDn, port, authProviders : [ authProvider ] , directoryProvider : directoryStub , logger } ) ;
6474 await engine . start ( ) ;
6575
66- const client = createClient ( ) ;
76+ client = createClient ( ) ;
6777 const userDN = `uid=testuser,${ baseDn } ` ;
6878 await expect ( new Promise ( ( resolve , reject ) => {
6979 client . bind ( userDN , 'password123' , ( err ) => err ? reject ( err ) : resolve ( ) ) ;
7080 } ) ) . resolves . not . toThrow ( ) ;
71- client . unbind ( ) ;
7281 } ) ;
7382
7483 test ( '2. Bind with invalid credentials should fail (SQLite)' , async ( ) => {
@@ -79,14 +88,13 @@ describe('SQLite Auth Backend (real DB) - Integration', () => {
7988 process . env . SQL_QUERY_ONE_USER = 'SELECT username, full_name, surname, mail, home_directory, login_shell, uid_number, gid_number, password_hash AS password FROM users WHERE username = ?' ;
8089
8190 const authProvider = new SQLAuthProvider ( ) ;
82- engine = new LdapEngine ( { baseDn, port, authProviders : [ authProvider ] , directoryProvider : { initialize : async ( ) => { } , cleanup : async ( ) => { } } , logger } ) ;
91+ engine = new LdapEngine ( { baseDn, port, authProviders : [ authProvider ] , directoryProvider : directoryStub , logger } ) ;
8392 await engine . start ( ) ;
8493
85- const client = createClient ( ) ;
94+ client = createClient ( ) ;
8695 const userDN = `uid=testuser,${ baseDn } ` ;
8796 await expect ( new Promise ( ( resolve , reject ) => {
8897 client . bind ( userDN , 'wrong' , ( err ) => err ? reject ( err ) : resolve ( ) ) ;
8998 } ) ) . rejects . toThrow ( ) ;
90- client . unbind ( ) ;
9199 } ) ;
92100} ) ;
0 commit comments