mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-30 08:28:14 +02:00
205 lines
6.4 KiB
ObjectPascal
205 lines
6.4 KiB
ObjectPascal
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.
|
|
|