os/security/authorisation/userpromptservice/policies/test/tupspolicies/source/tpolicyreader.cpp
First public contribution.
2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
19 #include "tpolicyreader.h"
21 #include <ecom/ecom.h>
22 #include "policylist.h"
23 #include "cleanuputils.h"
26 using namespace UserPromptService;
28 void CTestPolicyReader::SetupL()
30 Initialise policy reader and related resources.
34 User::LeaveIfError(iFs.Connect());
37 void CTestPolicyReader::TearDownL()
48 void CTestPolicyReader::TestPolicyReaderL()
50 Reads and verifies every entry in a policy file.
58 res = iConfig.GetString(_L("policies"), _L("policyfile"), policyFile);
61 // Test policy list error handling
62 iExpectedError = KErrNone;
63 res = iConfig.GetInt(_L("policies"), _L("expectedpolicylisterror"), iExpectedError);
64 TRAP(err, TestPolicyListL(policyFile));
65 ASSERT_TRUE(CheckExpectedError(Logger(), iExpectedError, err));
66 // Skip rest of test if the CPolicyList is expected to fail.
67 if (iExpectedError != KErrNone) return;
69 TRAP(err, CreatePolicyReaderL(policyFile));
72 ERR_PRINTF2(_L("Error %d creating policy reader"), err);
78 res = iConfig.GetInt(_L("policies"),_L("numpolicies"), numPolicies);
80 ASSERT_TRUE(numPolicies >= 0);
82 for (TInt i = 0; i < numPolicies; ++i)
84 TBuf<16> section(_L("policy"));
86 INFO_PRINTF2(_L("Reading policy %d"), i);
87 TRAP(err, passed &= CheckPolicyL(section));
88 passed &= CheckExpectedError(Logger(), iExpectedError, err);
91 if (!passed) User::Leave(KErrTEFUnitFail);
94 void CTestPolicyReader::TestPolicyListL(const TDesC& aPolicyFile)
96 INFO_PRINTF2(_L("Creating a CPolicyList from %S"), &aPolicyFile);
97 CPolicyReader* r = CPolicyReader::NewL(iFs, aPolicyFile);
98 CleanupStack::PushL(r);
100 CPolicyList* policyList = CPolicyList::NewL(id, *r);
102 CleanupStack::PopAndDestroy(r);
105 void CTestPolicyReader::CreatePolicyReaderL(const TDesC& aPolicyFile)
107 iPolicyReader = CPolicyReader::NewL(iFs, aPolicyFile);
110 TBool CTestPolicyReader::CheckPolicyL(const TDesC& aSection)
113 ReadExpectedValuesL(aSection);
114 CPolicy* p = iPolicyReader->NextPolicyL();
117 ERR_PRINTF1(_L("Unexpected end of policy list"));
118 User::Leave(KErrEof);
121 CleanupStack::PushL(p);
122 passed = CompareExpectedValues(*p);
123 CleanupStack::PopAndDestroy(p);
128 CTestSuite* CTestPolicyReader::CreateSuiteL(const TDesC& aName)
130 Creates the test suite for UPS policy reader
131 @param aName - Suite name
136 AddTestCase(lTestSuite, _L("TestPolicyReader"), &CTestPolicyReader::TestPolicyReaderL);
140 void CTestPolicyReader::ReadExpectedValuesL(const TDesC& aSection)
142 Reads the expected values of the policy from section in the .ini file.
143 @param aPolicySection The name of the section containing the expected policy files.
148 iExpectedError = KErrNone;
149 ret = iConfig.GetInt(aSection, _L("expectederror"), iExpectedError);
150 if (ret) return; // If an error is expected then other config settings aren't required.
152 ret = iConfig.GetHex(aSection, _L("sidclasses"), iSidClasses);
153 if (! ret) iSidClasses = 0x0000FFFF;
157 ret = iConfig.GetInt(aSection, _L("numsids"), numSids);
158 for (TInt i = 0; i < numSids; ++i)
161 key.AppendFormat(_L("sid%d"), i);
164 ret = iConfig.GetHex(aSection, key, sid);
166 iSidList.AppendL(sid);
169 ASSERT_TRUE(iConfig.GetString(aSection, _L("destination"), iDestination));
170 ASSERT_TRUE(iConfig.GetHex(aSection, _L("options"), iOptions));
171 ASSERT_TRUE(iConfig.GetHex(aSection, _L("systemserversecurity"), iSystemServerSecurity));
173 TInt policyEvaluator;
174 ASSERT_TRUE(iConfig.GetHex(aSection, _L("policyevaluator"), policyEvaluator));
175 iPolicyEvaluator = TUid::Uid(policyEvaluator);
178 ASSERT_TRUE(iConfig.GetHex(aSection, _L("dialogcreator"), dialogCreator));
179 iDialogCreator = TUid::Uid(dialogCreator);
180 ASSERT_TRUE(iConfig.GetHex(aSection, _L("flags"), iFlags));
182 ASSERT_TRUE(iConfig.GetInt(aSection, _L("majorversion"), iMajorVersion));
183 ASSERT_TRUE(iConfig.GetInt(aSection, _L("minorversion"), iMinorVersion));
184 ASSERT_TRUE(iConfig.GetBool(aSection, _L("default"), iDefault));
187 TBool CTestPolicyReader::CompareExpectedValues(const CPolicy& aPolicy)
189 Compares the expected policy values from the ini file to the fields
190 in the policy object read from the resource file.
191 @param aPolicy The policy object to compare the ini value to.
192 @return ETrue, if the values match; otherwise, EFalse is returned.
197 if (static_cast<TUint16>(iSidClasses) != aPolicy.SidClasses().iSidClasses)
199 ERR_PRINTF3(_L("Expected SID classes 0x%04x, actual SID classes 0x%04x"),
200 iSidClasses, aPolicy.SidClasses().iSidClasses);
204 if (iSidList.Count() != aPolicy.SidList().Count())
206 ERR_PRINTF3(_L("Expected number of SIDs = %d, actual number of SIDs = %d"),
207 iSidList.Count(), aPolicy.SidList().Count());
211 if (iSystemServerSecurity != aPolicy.SystemServerSecurity())
213 ERR_PRINTF3(_L("Expected systemserversecurity %d, actual systemserversecurity %d"),
214 iSystemServerSecurity, aPolicy.SystemServerSecurity());
218 for (TInt i = 0; i < Min(iSidList.Count(), aPolicy.SidList().Count()); ++i)
220 if (iSidList[i].iId != aPolicy.SidList()[i].iId)
222 ERR_PRINTF4(_L("Expected SID%d = 0x%08x, actual SID 0x%08x"),
223 i, iSidList[i].iId, aPolicy.SidList()[i].iId);
228 if (iDestination != aPolicy.Destination())
230 ERR_PRINTF3(_L("Expected destination %S, actual destination %S"),
231 &iDestination, &aPolicy.Destination());
235 if (iOptions != aPolicy.Options())
237 ERR_PRINTF3(_L("Expected options = 0x%08x, actual options = 0x%08x"),
238 &iOptions, aPolicy.Options());
242 if (iPolicyEvaluator != aPolicy.PolicyEvaluator())
244 ERR_PRINTF3(_L("Expected policy evaluator 0x%08x, actual policy evaluator 0x%08x"),
245 iPolicyEvaluator, aPolicy.PolicyEvaluator());
249 if (iDialogCreator != aPolicy.DialogCreator())
251 ERR_PRINTF3(_L("Expected dialog creator 0x%08x, actualy dialog creator 0x%08x"),
252 iDialogCreator, aPolicy.DialogCreator());
256 if (iFlags != aPolicy.Flags())
258 ERR_PRINTF3(_L("Expected flags = 0x%04x, actual flags = 0x%04x"),
259 iFlags, aPolicy.Flags());
263 if (iMajorVersion != aPolicy.MajorVersion())
265 ERR_PRINTF3(_L("Expected majorversion = %d, actual major version = %d"),
266 iMajorVersion, aPolicy.MajorVersion());
270 if (iMinorVersion != aPolicy.MinorVersion())
272 ERR_PRINTF3(_L("Expected majorversion = %d, actual major version = %d"),
273 iMinorVersion, aPolicy.MinorVersion());
277 if (iDefault != aPolicy.Default())
279 ERR_PRINTF3(_L("Expected default policy = %d, actual default policy= %d"),
280 iDefault, aPolicy.Default());