ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/testsuite/Test16.pas
Revision: 308
Committed: Sat Jul 18 10:26:30 2020 UTC (4 years, 5 months ago) by tony
Content type: text/x-pascal
File size: 5603 byte(s)
Log Message:
Fixes Merged

File Contents

# User Rev Content
1 tony 45 unit Test16;
2 tony 56 {$IFDEF MSWINDOWS}
3     {$DEFINE WINDOWS}
4     {$ENDIF}
5 tony 45
6 tony 56 {$IFDEF FPC}
7     {$mode delphi}
8 tony 45 {$codepage UTF8}
9 tony 56 {$ENDIF}
10 tony 45
11     {Test 16: Error handling}
12    
13     { This test tests for correct responses to various error conditions:
14    
15     - Malformed database name.
16     - Invalid User Name
17     - Invalid password
18     - Invalid Update SQL Statement
19     - Invalid Select SQL
20     - Transaction not started
21     - Invalid parameter by name when should be positional
22     - Invalid server name
23     - invalid user name - logon to server
24     - invalid password
25     }
26    
27     interface
28    
29     uses
30     Classes, SysUtils, TestManager, IB;
31    
32     type
33    
34     { TTest16 }
35    
36     TTest16 = class(TTestBase)
37     private
38 tony 56 procedure DBTests(CharSet: AnsiString; SQLDialect: integer);
39     procedure ServiceTests(CharSet: AnsiString; SQLDialect: integer);
40 tony 45 public
41 tony 56 function TestTitle: AnsiString; override;
42     procedure RunTest(CharSet: AnsiString; SQLDialect: integer); override;
43 tony 45 end;
44    
45    
46     implementation
47    
48     { TTest16 }
49    
50 tony 56 procedure TTest16.DBTests(CharSet: AnsiString; SQLDialect: integer);
51 tony 45 var DPB: IDPB;
52     Attachment: IAttachment;
53     Transaction: ITransaction;
54     Statement: IStatement;
55     begin
56     DPB := FirebirdAPI.AllocateDPB;
57     DPB.Add(isc_dpb_user_name).setAsString(Owner.GetUserName);
58     DPB.Add(isc_dpb_password).setAsString(Owner.GetPassword);
59     DPB.Add(isc_dpb_lc_ctype).setAsString('UTF8');
60     DPB.Add(isc_dpb_set_db_SQL_dialect).setAsByte(SQLDialect);
61     try
62     writeln(OutFile,'Invalid Database Name Test');
63     Attachment := FirebirdAPI.OpenDatabase('localhost:Malformed Name',DPB);
64     except on E: Exception do
65     writeln(OutFile,'Error Handled: ',E.Message);
66     end;
67     DPB.Find(isc_dpb_user_name).setAsString('Captain Nemo');
68     try
69     writeln(OutFile,'Invalid User Name Test');
70     Attachment := FirebirdAPI.OpenDatabase(Owner.GetEmployeeDatabaseName,DPB);
71     except on E: Exception do
72     writeln(OutFile,'Error Handled: ',E.Message);
73     end;
74     DPB.Find(isc_dpb_user_name).setAsString(Owner.GetUserName);
75     DPB.Find(isc_dpb_password).setAsString('not a pwd');
76     try
77     writeln(OutFile,'Invalid password Test');
78     Attachment := FirebirdAPI.OpenDatabase(Owner.GetEmployeeDatabaseName,DPB);
79     except on E: Exception do
80     writeln(OutFile,'Error Handled: ',E.Message);
81     end;
82     DPB.Find(isc_dpb_password).setAsString(Owner.GetPassword);
83     Attachment := FirebirdAPI.OpenDatabase(Owner.GetEmployeeDatabaseName,DPB);
84     Transaction := Attachment.StartTransaction([isc_tpb_write,isc_tpb_nowait,isc_tpb_concurrency],taRollback);
85     try
86     writeln(OutFile,'Invalid Prepare SQL Test');
87     Statement := Attachment.Prepare(Transaction,'Update Employee Set Unknown_Date = ? Where EMP_NO = ?',3);
88     except on E: Exception do
89     writeln(OutFile,'Error Handled: ',E.Message);
90     end;
91     try
92     writeln(OutFile,'Invalid Open Cursor SQL Test');
93     Attachment.OpenCursorAtStart(Transaction,
94     'Select X,count(*) As Counter from EMPLOYEE',3);
95     except on E: Exception do
96     writeln(OutFile,'Error Handled: ',E.Message);
97     end;
98     Transaction.Rollback;
99     try
100     writeln(OutFile,'Transaction not started Test');
101     Attachment.OpenCursorAtStart(Transaction,
102     'Select count(*) As Counter from EMPLOYEE',3);
103     except on E: Exception do
104     writeln(OutFile,'Error Handled: ',E.Message);
105     end;
106     Transaction.Start;
107     try
108     writeln(OutFile,'Invalid Param SQL Type Test');
109     Statement := Attachment.Prepare(Transaction,'Update Employee Set Hire_Date = ? Where EMP_NO = ?',3);
110     Statement.SQLParams.ByName('EMP_NO').AsDate := EncodeDate(2016,11,5);
111     except on E: Exception do
112     writeln(OutFile,'Error Handled: ',E.Message);
113     end;
114 tony 270 Transaction.Rollback;
115     Transaction.Start;
116     try
117     writeln(OutFile,'Case sensitive Param SQL Test');
118     Statement := Attachment.PrepareWithNamedParameters(Transaction,'Update Employee Set Hire_Date = :Hire_Date Where emp_no = :emp_no',3,false,true);
119     Statement.SQLParams.ByName('Hire_Date').AsDate := EncodeDate(2016,11,5);
120     Statement.SQLParams.ByName('emp_no').AsInteger := 1;
121     Statement.SQLParams.ByName('EMP_NO').AsInteger := 1;
122     except on E: Exception do
123     writeln(OutFile,'Error Handled: ',E.Message);
124     end;
125 tony 45 end;
126    
127 tony 56 procedure TTest16.ServiceTests(CharSet: AnsiString; SQLDialect: integer);
128 tony 45 var SPB: ISPB;
129     Service: IServiceManager;
130     I: integer;
131 tony 56 ServerName: AnsiString;
132     DBName: AnsiString;
133 tony 45 begin
134     if not FirebirdAPI.HasServiceAPI then Exit;
135    
136 tony 308 ServerName := Owner.Server;
137 tony 45
138     SPB := FirebirdAPI.AllocateSPB;
139     SPB.Add(isc_spb_user_name).setAsString(Owner.GetUserName);
140     SPB.Add(isc_spb_password).setAsString(Owner.GetPassword);
141     try
142     writeln(OutFile,'Invalid Server Name Test');
143     Service := FirebirdAPI.GetServiceManager('unknown',TCP,SPB);
144     except on E: Exception do
145     writeln(OutFile,'Error Handled: ',E.Message);
146     end;
147    
148     SPB.Find(isc_spb_user_name).setAsString('Captain Nemo');
149     try
150     writeln(OutFile,'Invalid User Name Test');
151     Service := FirebirdAPI.GetServiceManager(ServerName,TCP,SPB);
152     except on E: Exception do
153     writeln(OutFile,'Error Handled: ',E.Message);
154     end;
155     SPB.Find(isc_spb_user_name).setAsString(Owner.GetUserName);
156     SPB.Find(isc_spb_password).setAsString('Bad pwd');
157     try
158     writeln(OutFile,'Invalid password Test');
159     Service := FirebirdAPI.GetServiceManager(ServerName,TCP,SPB);
160     except on E: Exception do
161     writeln(OutFile,'Error Handled: ',E.Message);
162     end;
163     end;
164    
165 tony 56 function TTest16.TestTitle: AnsiString;
166 tony 45 begin
167     Result := 'Test 16: Error handling';
168     end;
169    
170 tony 56 procedure TTest16.RunTest(CharSet: AnsiString; SQLDialect: integer);
171 tony 45 begin
172     DBTests(Charset,SQLDialect);
173     ServiceTests(Charset,SQLDialect);
174     end;
175    
176     initialization
177     RegisterTest(TTest16);
178     end.
179