First public contribution.
1 // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // Unit tests for PREQ748 - Adding support for the SIP scheme in URIs.
15 // Plus adding two new methods validate and equivalent
26 #include <uriutilscommon.h>
27 #include "t_UnitSipUri.h"
29 TBuf16<256> gFullUri16;
30 TBuf16<256> gFullUriRhs16;
31 TBuf16<256> gUriComponent16;
33 _LIT(KTestName,"SIP Uri Unit Tests");
34 LOCAL_D RTest test(KTestName);
36 void ParseUriTests16BitL()
38 test.Next(_L("Parsing 16 bit URIs"));
39 gFullUri16.Copy(KUri0);
40 CUri8* uri = UriUtils::CreateUriL(gFullUri16);
41 CleanupStack::PushL(uri);
43 gUriComponent16.Copy(KScheme0);
44 HBufC* text = uri->Uri().DisplayFormL(EUriScheme);
45 TInt result = text->Compare(gUriComponent16) == 0? KErrNone : KUriUtilsErrDifferentScheme;
47 User::LeaveIfError(result);
49 gUriComponent16.Copy(KUserInfo0);
50 text = uri->Uri().DisplayFormL(EUriUserinfo);
51 result = text->Compare(gUriComponent16) == 0? KErrNone : KUriUtilsErrDifferentUserInfo;
53 User::LeaveIfError(result);
55 gUriComponent16.Copy(KHost0);
56 text = uri->Uri().DisplayFormL(EUriHost);
57 result = text->Compare(gUriComponent16) == 0? KErrNone : KUriUtilsErrDifferentHost;
59 User::LeaveIfError(result);
61 gUriComponent16.Copy(KPort0);
62 text = uri->Uri().DisplayFormL(EUriPort);
63 result = text->Compare(gUriComponent16) == 0? KErrNone : KUriUtilsErrDifferentPort;
65 User::LeaveIfError(result);
67 gUriComponent16.Copy(KParams0);
68 text = uri->Uri().DisplayFormL(EUriPath);
69 result = text->Compare(gUriComponent16) == 0? KErrNone : KUriUtilsErrDifferentPath;
71 User::LeaveIfError(result);
73 gUriComponent16.Copy(KHeaders0);
74 text = uri->Uri().DisplayFormL(EUriQuery);
75 result = text->Compare(gUriComponent16) == 0? KErrNone : KUriUtilsErrDifferentQuery;
77 User::LeaveIfError(result);
78 CleanupStack::PopAndDestroy(uri);
81 void ParseUriTestsDeprecated()
83 test.Next(_L("Parsing 16 bit URIs (deprecated)"));
84 gFullUri16.Copy(KUri0);
85 TUriParser16 parser16;
86 parser16.Parse(gFullUri16);
87 gUriComponent16.Copy(KScheme0);
88 TInt result = parser16.Extract(EUriScheme).Compare(gUriComponent16);
90 gUriComponent16.Copy(KUserInfo0);
91 result = parser16.Extract(EUriUserinfo).Compare(gUriComponent16);
93 gUriComponent16.Copy(KHost0);
94 result = parser16.Extract(EUriHost).Compare(gUriComponent16);
96 gUriComponent16.Copy(KPort0);
97 result = parser16.Extract(EUriPort).Compare(gUriComponent16);
99 gUriComponent16.Copy(KParams0);
100 result = parser16.Extract(EUriPath).Compare(gUriComponent16);
102 gUriComponent16.Copy(KHeaders0);
103 result = parser16.Extract(EUriQuery).Compare(gUriComponent16);
109 test.Next(_L("@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-TESTUTILS-0001 Parsing 8 bit URIs"));
111 parser8.Parse(KUri0);
112 TInt result = parser8.Extract(EUriScheme).Compare(KScheme0);
114 result = parser8.Extract(EUriUserinfo).Compare(KUserInfo0);
116 result = parser8.Extract(EUriHost).Compare(KHost0);
118 result = parser8.Extract(EUriPort).Compare(KPort0);
120 result = parser8.Extract(EUriPath).Compare(KParams0);
122 result = parser8.Extract(EUriQuery).Compare(KHeaders0);
124 result =parser8.Parse(KParseUri);
126 ParseUriTestsDeprecated();
127 TRAP (result ,ParseUriTests16BitL());
128 test(result == KErrNone);
131 void GenarateUriTestsL()
133 test.Next(_L("@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-TESTUTILS-0002 Generating 8 bit URIs"));
134 CUri8* uri8 = CUri8::NewLC();
135 uri8->SetComponentL(KScheme0, EUriScheme);
136 uri8->SetComponentL(KHost0, EUriHost);
137 uri8->SetComponentL(KUserInfo0, EUriUserinfo);
138 uri8->SetComponentL(KPort0, EUriPort);
139 uri8->SetComponentL(KParams0, EUriPath);
140 uri8->SetComponentL(KHeaders0, EUriQuery);
141 const TDesC8& des8 = uri8->Uri().UriDes();
142 TInt result = des8.Compare(KUri0);
144 CleanupStack::PopAndDestroy(uri8);
146 test.Next(_L("Generating 16 bit URIs"));
147 CUri16* uri16 = CUri16::NewLC();
148 gUriComponent16.Copy(KScheme0);
149 uri16->SetComponentL(gUriComponent16, EUriScheme);
150 gUriComponent16.Copy(KHost0);
151 uri16->SetComponentL(gUriComponent16, EUriHost);
152 gUriComponent16.Copy(KUserInfo0);
153 uri16->SetComponentL(gUriComponent16, EUriUserinfo);
154 gUriComponent16.Copy(KPort0);
155 uri16->SetComponentL(gUriComponent16, EUriPort);
156 gUriComponent16.Copy(KParams0);
157 uri16->SetComponentL(gUriComponent16, EUriPath);
158 gUriComponent16.Copy(KHeaders0);
159 uri16->SetComponentL(gUriComponent16, EUriQuery);
160 const TDesC16& des16 = uri16->Uri().UriDes();
161 gFullUri16.Copy(KUri0);
162 result = des16.Compare(gFullUri16);
164 CleanupStack::PopAndDestroy(uri16);
167 void ValidateTest(const TDesC8& aUri, TInt aErrorToAssert)
170 TUriParser16 parser16;
172 TInt result = parser8.Validate();
173 test(result == aErrorToAssert);
174 gFullUri16.Copy(aUri);
175 parser16.Parse(gFullUri16);
176 result = parser16.Validate();
177 test(result == aErrorToAssert);
180 void ValidateSip8Test(const TDesC8& aUri, TInt aErrorToAssert)
184 TInt result = parser8.Validate();
185 test(result == aErrorToAssert);
188 void ValidateUriTests()
190 test.Next(_L("@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-TESTUTILS-0003 Validate URIs 8 and 16 bit"));
192 test.Next(_L("[Validate] Check full correct URI"));
193 ValidateTest(KVldUri0, KErrNone);
195 test.Next(_L("[Validate] Check unsupported scheme"));
196 ValidateTest(KVldNotSupported, KErrNotSupported);
198 test.Next(_L("[Validate] Check invalid hosts"));
199 ValidateTest(KVldInvalidHost0, KUriUtilsErrInvalidHost);
200 ValidateTest(KVldInvalidHost1, KUriUtilsErrInvalidHost);
201 ValidateTest(KVldInvalidHost2, KUriUtilsErrInvalidHost);
202 ValidateTest(KVldInvalidHost3, KUriUtilsErrInvalidHost);
203 ValidateTest(KVldInvalidHost4, KUriUtilsErrInvalidHost);
204 ValidateSip8Test(KVldInvalidHost5, KUriUtilsErrInvalidHost );
206 test.Next(_L("[Validate] Check valid hosts"));
207 ValidateTest(KVldValidHost0, KErrNone);
208 ValidateTest(KVldValidHost1, KErrNone);
209 ValidateTest(KVldValidHost2, KErrNone);
211 test.Next(_L("[Validate] Check invalid ports"));
212 ValidateTest(KVldInvalidPort0, KUriUtilsErrInvalidPort);
213 ValidateTest(KVldInvalidNoPort, KUriUtilsErrInvalidPort);
214 test.Next(_L("[Validate] Check valid ports"));
215 ValidateTest(KVldValidPort0, KErrNone);
217 test.Next(_L("[Validate] Check invalid usernames and passwords"));
218 ValidateTest(KVldInvalidUserInfo0, KUriUtilsErrInvalidUserInfo);
219 ValidateTest(KVldInvalidUserInfo1, KUriUtilsErrInvalidUserInfo);
220 ValidateTest(KVldInvalidUserInfo2, KUriUtilsErrInvalidUserInfo);
221 ValidateTest(KVldInvalidUserInfo3, KUriUtilsErrInvalidUserInfo);
222 test.Next(_L("[Validate] Check valid usernames and passwords"));
223 ValidateTest(KVldValidUserInfo0, KErrNone);
224 ValidateTest(KVldValidUserInfo1, KErrNone);
225 ValidateTest(KVldValidUserInfo2, KErrNone);
226 ValidateTest(KVldValidUserInfo3, KErrNone);
228 test.Next(_L("[Validate] Check invalid parameters"));
229 ValidateTest(KVldInvalidParams0, KUriUtilsErrInvalidParam);
230 ValidateTest(KVldInvalidParams1, KUriUtilsErrInvalidParam);
231 ValidateTest(KVldInvalidParams2, KUriUtilsErrInvalidParam);
232 ValidateTest(KVldInvalidParams3, KUriUtilsErrInvalidParam);
233 ValidateTest(KVldInvalidParams4, KUriUtilsErrInvalidParam);
234 ValidateTest(KVldInvalidParams5, KUriUtilsErrInvalidParam);
235 test.Next(_L("[Validate] Check valid parameters"));
236 ValidateTest(KVldValidParams0, KErrNone);
237 ValidateTest(KVldValidParams1, KErrNone);
238 ValidateTest(KVldValidParams2, KErrNone);
240 test.Next(_L("[Validate] Check invalid headers"));
241 ValidateTest(KVldInvalidHeaders0, KUriUtilsErrInvalidHeaders);
242 ValidateTest(KVldInvalidHeaders1, KUriUtilsErrInvalidHeaders);
243 ValidateTest(KVldInvalidHeaders2, KUriUtilsErrInvalidHeaders);
244 test.Next(_L("[Validate] Check valid headers"));
245 ValidateTest(KVldValidHeaders0, KErrNone);
246 ValidateTest(KVldValidHeaders1, KErrNone);
247 ValidateTest(KVldValidHeaders2, KErrNone);
248 ValidateTest(KVldValidHeaders3, KErrNone);
250 test.Next(_L("[Validate] General tests"));
251 ValidateTest(KVldInvalidGeneral1, KUriUtilsErrInvalidPort);
252 ValidateTest(KVldInvalidGeneral2, KUriUtilsErrInvalidHost);
253 ValidateTest(KVldValidGeneral1, KErrNone);
256 void EquivalenceTest(const TDesC8& aLhs, const TDesC8& aRhs, TInt aExpected)
262 TInt result = lhs8.Equivalent(rhs8);
263 test(result == aExpected);
266 gFullUri16.Copy(aLhs);
267 lhs16.Parse(gFullUri16);
269 gFullUriRhs16.Copy(aRhs);
270 rhs16.Parse(gFullUriRhs16);
272 result = lhs16.Equivalent(rhs16);
273 test(result == aExpected);
276 void EquivalenceUriTests()
278 test.Next(_L("@SYMTestCaseID IWS-APPPROTOCOLS-INETURILIST-TESTUTILS-0004 Equivalent URIs 8 and 16 bit"));
279 EquivalenceTest(KEquivUri0, KEquivUri0, KErrNone);
280 EquivalenceTest(KEquivUri0, KEquivScheme0, KErrNone);
282 test.Next(_L("[Equivalent] Compare user names and passwords"));
283 EquivalenceTest(KEquivUri0, KEquivUserInfo0, KUriUtilsErrDifferentUserInfo);
284 EquivalenceTest(KEquivUri0, KEquivUserInfo1, KUriUtilsErrDifferentUserInfo);
286 test.Next(_L("[Equivalent] Compare hosts"));
287 EquivalenceTest(KEquivUri0, KEquivHost0, KErrNone);
288 EquivalenceTest(KEquivUri1, KEquivHost0, KUriUtilsErrDifferentHost);
289 EquivalenceTest(KEquivUri1, KEquivHost1, KErrNone);
291 test.Next(_L("[Equivalent] Compare hosts"));
292 EquivalenceTest(KEquivUri0, KEquivPort0, KUriUtilsErrDifferentPort);
294 test.Next(_L("[Equivalent] Compare parameters"));
295 EquivalenceTest(KEquivUri0, KEquivParam0, KErrNone);
296 EquivalenceTest(KEquivUri0, KEquivParam1, KErrNone);
297 EquivalenceTest(KEquivUri0, KEquivParam2, KUriUtilsErrDifferentPath);
298 EquivalenceTest(KEquivUri0, KEquivParam3, KUriUtilsErrDifferentPath);
299 EquivalenceTest(KEquivParam4, KEquivParam5, KErrNone);
300 EquivalenceTest(KEquivParam4, KEquivParam6, KErrNone);
301 EquivalenceTest(KEquivParam4, KEquivParam7, KUriUtilsErrDifferentPath);
302 EquivalenceTest(KEquivParam4, KEquivParam8, KUriUtilsErrDifferentPath);
303 EquivalenceTest(KEquivParam4, KEquivParam9, KUriUtilsErrDifferentPath);
304 EquivalenceTest(KEquivParam7, KEquivParam4, KUriUtilsErrDifferentPath);
305 EquivalenceTest(KEquivParam4, KEquivParam10, KErrNone);
306 EquivalenceTest(KEquivParam4, KEquivParam11, KUriUtilsErrDifferentPath);
307 EquivalenceTest(KEquivParam12, KEquivParam13, KUriUtilsErrDifferentPath);
308 EquivalenceTest(KEquivParam4, KEquivParam14, KUriUtilsErrDifferentPath);
309 EquivalenceTest(KEquivParam14, KEquivParam4, KUriUtilsErrDifferentPath);
311 test.Next(_L("[Equivalent] Compare headers"));
312 EquivalenceTest(KEquivHeader0, KEquivHeader1, KErrNone);
313 EquivalenceTest(KEquivHeader0, KEquivHeader2, KUriUtilsErrDifferentQuery);
314 EquivalenceTest(KEquivHeader2, KEquivHeader0, KUriUtilsErrDifferentQuery);
315 EquivalenceTest(KEquivHeader2, KEquivHeader3, KErrNone);
316 EquivalenceTest(KEquivHeader3, KEquivHeader2, KErrNone);
317 EquivalenceTest(KEquivHeader4, KEquivHeader5, KErrNone);
318 EquivalenceTest(KEquivHeader4, KEquivHeader6, KErrNone);
319 EquivalenceTest(KEquivHeader4, KEquivHeader7, KUriUtilsErrDifferentQuery);
321 test.Next(_L("[Equivalent] Expanded URIs"));
322 EquivalenceTest(KEquivUri0, KEquivExpand0, KErrNone);
323 EquivalenceTest(KEquivExpand0, KEquivUri0, KErrNone);
324 EquivalenceTest(KEquivUri0, KEquivExpand1, KErrNone);
325 EquivalenceTest(KEquivUri0, KEquivExpand2, KUriUtilsErrDifferentUserInfo);
326 EquivalenceTest(KEquivExpand3, KEquivExpand4, KErrNone);
327 EquivalenceTest(KEquivExpand4, KEquivExpand3, KErrNone);
329 test.Next(_L("[Equivalent] General tests"));
330 EquivalenceTest(KEquivGeneral1, KEquivGeneral2, KUriUtilsErrDifferentPort);
335 test.Start(_L("Starting unit tests"));
340 EquivalenceUriTests();
346 GLDEF_C TInt E32Main()
352 CTrapCleanup* theCleanup=CTrapCleanup::New();
353 TRAPD(ret,doMainL());