|
@@ -0,0 +1,204 @@
|
|
|
|
+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.
|
|
|
|
+
|