123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- unit utccredentials;
- {$mode ObjFPC}{$H+}
- interface
- uses
- Classes, SysUtils, system.credentials, fpcunit, testregistry;
- Type
- { TTestCredentials }
- TTestCredentials = class(TTestcase)
- private
- FSuccess : Boolean;
- FUser,FPass,FDom : String;
- FEventMethod,
- FEventMethod2 : TMethod;
- procedure DoLoginEvent(Sender: TObject; Callback: TLoginCredentialService.TLoginEvent; var Success: Boolean);
- procedure DoLoginEvent2(Sender: TObject; Callback: TLoginCredentialService.TLoginEvent; var Success: Boolean);
- procedure ReceiveEvent(Sender: TObject; const Username, Password, Domain: string; var Handled: Boolean);
- Public
- procedure AssertCredentials(const Msg, aUser, aPassword, aDomain: String);
- Procedure Setup; override;
- Procedure TearDown; override;
- Published
- Procedure TestHookup;
- Procedure TestAddHandler;
- Procedure TestRemoveHandler;
- Procedure TestGetLoginCredentialEvent;
- Procedure TestGetloginCredentials;
- procedure TestGetloginCredentials2;
- procedure TestGetloginCredentials3;
- end;
- implementation
- { TTestCredentials }
- procedure TTestCredentials.DoLoginEvent(Sender: TObject; Callback: TLoginCredentialService.TLoginEvent; var Success: Boolean);
- begin
- CallBack(Sender,FUser,FPass,FDom,Success);
- end;
- procedure TTestCredentials.DoLoginEvent2(Sender: TObject; Callback: TLoginCredentialService.TLoginEvent; var Success: Boolean);
- begin
- CallBack(Sender,FUser+'2',FPass+'2',FDom+'2',Success);
- end;
- procedure TTestCredentials.AssertCredentials(const Msg, aUser, aPassword, aDomain: String);
- begin
- AssertEquals(Msg+': User',FUser,aUser);
- AssertEquals(Msg+': Password',FPass,aPassword);
- AssertEquals(Msg+': Domain',FDom,aDomain);
- end;
- procedure TTestCredentials.Setup;
- begin
- inherited Setup;
- TLoginCredentialService.Clear;
- FEventMethod2:=TMethod(@Self.DoLoginEvent2);
- FEventMethod:=TMethod(@Self.DoLoginEvent);
- FUser:='U';
- FPass:='P';
- FDom:='D';
- FSuccess:=True;
- end;
- procedure TTestCredentials.TearDown;
- begin
- inherited TearDown;
- end;
- procedure TTestCredentials.TestHookup;
- begin
- AssertEquals('handler count',0,TLoginCredentialService.HandlerCount);
- AssertEquals('Default user','U',FUser);
- AssertEquals('Default pwd','P',FPass);
- AssertEquals('Default Dom','D',FDom);
- end;
- procedure TTestCredentials.TestAddHandler;
- begin
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertEquals('handler count a',1,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('y',@DoLoginEvent);
- AssertEquals('handler count b',2,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertEquals('handler count c',2,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent2);
- AssertEquals('handler count d',3,TLoginCredentialService.HandlerCount);
- end;
- procedure TTestCredentials.TestRemoveHandler;
- begin
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertEquals('handler count a',1,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('y',@DoLoginEvent);
- AssertEquals('handler count b',2,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertEquals('handler count c',2,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent2);
- AssertEquals('handler count d',3,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.UnRegisterLoginHandler('x',@DoLoginEvent2);
- AssertEquals('handler count e',2,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.UnRegisterLoginHandler('z',@DoLoginEvent2);
- AssertEquals('handler count f',2,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.UnRegisterLoginHandler('y',@DoLoginEvent);
- AssertEquals('handler count g',1,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.UnRegisterLoginHandler('x',@DoLoginEvent);
- AssertEquals('handler count h',0,TLoginCredentialService.HandlerCount);
- end;
- procedure TTestCredentials.TestGetLoginCredentialEvent;
- var
- E : TLoginCredentialService.TLoginCredentialEvent;
- ME : TMethod;
- begin
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertEquals('handler count a',1,TLoginCredentialService.HandlerCount);
- TLoginCredentialService.RegisterLoginHandler('y',@DoLoginEvent2);
- AssertEquals('handler count b',2,TLoginCredentialService.HandlerCount);
- E:=TLoginCredentialService.GetLoginCredentialEvent('y');
- ME:=TMethod(E);
- AssertTrue('Same method',(ME.Code=FEventMethod2.Code) and (ME.Data=FEventMethod2.Data));
- E:=TLoginCredentialService.GetLoginCredentialEvent('x');
- ME:=TMethod(E);
- AssertTrue('Same method',(ME.Code=FEventMethod.Code) and (ME.Data=FEventMethod.Data));
- E:=TLoginCredentialService.GetLoginCredentialEvent('z');
- AssertTrue('Same method',E=Nil);
- end;
- procedure TTestCredentials.TestGetloginCredentials;
- var
- U,P,D : String;
- begin
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertTrue('Getcreds',TLoginCredentialService.GetLoginCredentials('x',U,P,D));
- AssertCredentials('Login',U,P,D);
- end;
- procedure TTestCredentials.ReceiveEvent(Sender: TObject; const Username, Password, Domain: string; var Handled: Boolean) ;
- begin
- Handled:=FSuccess;
- AssertSame('Correct sender ',Sender,Self);
- if FSuccess then
- AssertCredentials('Login',UserName,Password,Domain);
- end;
- procedure TTestCredentials.TestGetloginCredentials2;
- var
- U,P,D : String;
- Res : Boolean;
- Function DoReceive(const Username, Password, Domain: string): Boolean;
- begin
- Result:=Res;
- if Res then
- begin
- U:=userName;
- P:=Password;
- D:=Domain;
- end;
- end;
- begin
- Res:=True;
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertTrue('Getcreds success',TLoginCredentialService.GetLoginCredentials('x',@DoReceive));
- AssertCredentials('Login',U,P,D);
- Res:=False;
- AssertFalse('Getcreds fail',TLoginCredentialService.GetLoginCredentials('x',@DoReceive));
- end;
- procedure TTestCredentials.TestGetloginCredentials3;
- begin
- TLoginCredentialService.RegisterLoginHandler('x',@DoLoginEvent);
- AssertTrue('Getcreds success',TLoginCredentialService.GetLoginCredentials('x',Self,@ReceiveEvent));
- FSuccess:=False;
- AssertFalse('Getcreds fail',TLoginCredentialService.GetLoginCredentials('x',Self,@ReceiveEvent));
- end;
- initialization
- RegisterTest(TTestCredentials);
- end.
|