javacommons/security/legacysupport/tsrc/src/testuserpreferences.cpp
branchRCL_3
changeset 19 04becd199f91
child 47 f40128debb5d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/security/legacysupport/tsrc/src/testuserpreferences.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,290 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <stdio.h>
+#include <string>
+
+#include "TestHarness.h"
+
+#include "teststoragehandler.h"
+#include "javastoragenames.h"
+#include "javauid.h"
+#include "javasymbianoslayer.h"
+
+#include <muserpreferences.h>
+#include <mmidletsuiteuserpreferencesiterator.h>
+#include <mmidletsuiteuserpreferences.h>
+#include <mmidletsuitecustomattributes.h>
+#include <msecuritypolicyv2.h>
+
+using namespace MIDP;
+using namespace java::storage;
+using namespace java::util;
+
+_LIT(KMidletSuiteName, "MIDletSuite.Name");
+_LIT(KMidletSuiteVendor, "MIDletSuite.Vendor");
+_LIT(KMidletSuiteVersion, "MIDletSuite.Version");
+_LIT(KAppName1, "appName1");
+_LIT(KAppVendor1, "appVendor1");
+_LIT(KAppVersion1, "1.1.0");
+_LIT(KAppName2, "appName2");
+_LIT(KAppVendor2, "appVendor2");
+_LIT(KAppVersion2, "2.0.1");
+
+IMPORT_C MSecurityPolicyV2* GetSecurityPolicyL(TUint32 aFlags, const TDesC& aPolicyName);
+IMPORT_C MUserPreferences* GetUserPreferencesL(TUint32 aFlags, const MSecurityPolicyV2& aSecurityPolicy);
+
+
+TEST_GROUP(TestUserPreferences)
+{
+    MSecurityPolicyV2* iSecurityPolicy;
+    MUserPreferences* iUserPreferences;
+    MMIDletSuiteUserPreferencesIterator* iIterator;
+    TestStorageHandler* iStorageHandler;
+    Uid iAppUid1;
+    Uid iAppUid2;
+    TUint32 iAppId1;
+    TUint32 iAppId2;
+    MMIDletSuiteUserPreferences* iSuitePref1;
+    MMIDletSuiteUserPreferences* iSuitePref2;
+    MMIDletSuiteCustomAttributes* iCustomAttr;
+
+    TEST_SETUP()
+    {
+        iAppUid1 = Uid(L"12345678");
+        iAppUid2 = Uid(L"87654321");
+        TUid uid1;
+        uidToTUid(iAppUid1, uid1);
+        iAppId1 = uid1.iUid;
+        TUid uid2;
+        uidToTUid(iAppUid2, uid2);
+        iAppId2 = uid2.iUid;
+        TUidToUid(uid1, iAppUid1);
+        TUidToUid(uid2, iAppUid2);
+        iSecurityPolicy = GetSecurityPolicyL(0 /* security policy flags */, KNullDesC());
+        iUserPreferences = GetUserPreferencesL(0 /* user preferences flags */, *iSecurityPolicy);
+        iStorageHandler = new TestStorageHandler();
+    }
+
+    TEST_TEARDOWN()
+    {
+        if (iIterator)
+        {
+            delete iIterator;
+            iIterator = NULL;
+        }
+        delete iSecurityPolicy;
+        iSecurityPolicy = NULL;
+        if (iUserPreferences)
+        {
+            delete iUserPreferences;
+            iUserPreferences = NULL;
+        }
+        if (iStorageHandler)
+        {
+            iStorageHandler->cleanStorage(APPLICATION_PACKAGE_TABLE, iAppUid1);
+            iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+            iStorageHandler->cleanStorage(APPLICATION_PACKAGE_TABLE, iAppUid2);
+            iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid2);
+            delete iStorageHandler;
+            iStorageHandler = NULL;
+        }
+        if (iSuitePref1)
+        {
+            delete iSuitePref1;
+            iSuitePref1 = NULL;
+        }
+        if (iSuitePref2)
+        {
+            delete iSuitePref2;
+            iSuitePref2 = NULL;
+        }
+        if (iCustomAttr)
+        {
+            delete iCustomAttr;
+            iCustomAttr = NULL;
+        }
+    }
+};
+
+TEST(TestUserPreferences, TestUserPreferencesL)
+{
+    // no "known" suites
+    CHECK(iUserPreferences != NULL);
+    iIterator = iUserPreferences->IteratorL();
+    CHECK(iIterator != NULL);
+    while (iIterator->HasNext())
+    {
+        MMIDletSuiteUserPreferences* suitePref = iIterator->NextL();
+        CHECK(suitePref != NULL);
+        if (suitePref->Id() == iAppId1 || suitePref->Id() == iAppId2)
+        {
+            delete suitePref;
+            suitePref = NULL;
+            CHECK(false);
+        }
+        delete suitePref;
+        suitePref = NULL;
+    }
+    // call NextL when the Iterator has reached the end
+    int error;
+    TRAP(error, iIterator->NextL());
+    CHECK(error == KErrNotFound);
+    // two "known" midlet suites
+    delete iIterator;
+    iIterator = NULL;
+    iStorageHandler->cleanStorage(APPLICATION_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateApplicationPackageTable(iAppUid1, L"appName1", L"appVendor1", L"1.1.0");
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD");
+    iStorageHandler->cleanStorage(APPLICATION_PACKAGE_TABLE, iAppUid2);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid2);
+    iStorageHandler->populateApplicationPackageTable(iAppUid2, L"appName2", L"appVendor2", L"2.0.1");
+    iStorageHandler->populateMIDPPackageTable(iAppUid2, L"OPD");
+    iIterator = iUserPreferences->IteratorL();
+    CHECK(iIterator != NULL);
+    bool app1Found = false;
+    bool app2Found = false;
+    while (iIterator->HasNext())
+    {
+        MMIDletSuiteUserPreferences* suitePref = iIterator->NextL();
+        CHECK(suitePref != NULL);
+        TUint32 id = suitePref->Id();
+        if (id == iAppId1)
+        {
+            app1Found = true;
+            iSuitePref1 = suitePref;
+            continue;
+        }
+        else if (id == iAppId2)
+        {
+            app2Found = true;
+            iSuitePref2 = suitePref;
+            continue;
+        }
+        delete suitePref;
+        suitePref = NULL;
+    }
+    CHECK((app1Found == true) && (app2Found == true));
+    int error1, error2;
+    // check the unsupported methods
+    TRAP(error1, iSuitePref1->SecurityPreferencesL());
+    TRAP(error2, iSuitePref2->SecurityPreferencesL());
+    CHECK((error1 == KErrNotSupported) && (error2 == KErrNotSupported));
+    // null/unknown property
+    _LIT(KDummy, "dummy");
+    TPtrC value;
+    iSuitePref1->PropertyL(KNullDesC(), value);
+    CHECK(value.Length() == 0);
+    iSuitePref1->PropertyL(KDummy, value);
+    CHECK(value.Length() == 0);
+    // check the known properties
+    iSuitePref1->PropertyL(KMidletSuiteName, value);
+    CHECK(value.Compare(KAppName1) == 0);
+    iSuitePref1->PropertyL(KMidletSuiteVendor, value);
+    CHECK(value.Compare(KAppVendor1) == 0);
+    iSuitePref1->PropertyL(KMidletSuiteVersion, value);
+    CHECK(value.Compare(KAppVersion1) == 0);
+    iSuitePref2->PropertyL(KMidletSuiteName, value);
+    CHECK(value.Compare(KAppName2) == 0);
+    iSuitePref2->PropertyL(KMidletSuiteVendor, value);
+    CHECK(value.Compare(KAppVendor2) == 0);
+    iSuitePref2->PropertyL(KMidletSuiteVersion, value);
+    CHECK(value.Compare(KAppVersion2) == 0);
+}
+
+TEST(TestUserPreferences, TestCustomAttributesL)
+{
+    CHECK(iUserPreferences != NULL);
+    // two "known" suites
+    iStorageHandler->cleanStorage(APPLICATION_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateApplicationPackageTable(iAppUid1, L"appName1", L"appVendor1", L"1.1.0");
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD");
+    iStorageHandler->cleanStorage(APPLICATION_PACKAGE_TABLE, iAppUid2);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid2);
+    iStorageHandler->populateApplicationPackageTable(iAppUid2, L"appName2", L"appVendor2", L"2.0.1");
+    iStorageHandler->populateMIDPPackageTable(iAppUid2, L"OPD");
+    iCustomAttr = iUserPreferences->CustomAttributesL(iAppId1);
+    CHECK(iCustomAttr != NULL);
+    // unsupported methods
+    int error;
+    TRAP(error, iCustomAttr->AddL(KNullDesC(), KNullDesC(), 0));
+    CHECK(error == KErrNotSupported);
+    TRAP(error, iCustomAttr->RemoveAllL());
+    CHECK(error == KErrNotSupported);
+    // unknown attributes
+    _LIT(KDummy, "dummy");
+    TUint32 flags;
+    TRAP(error, iCustomAttr->GetL(KDummy(), flags));
+    CHECK(error == KErrNotSupported);
+    TRAP(error, iCustomAttr->UpdateL(KDummy(), KDummy(), flags));
+    CHECK(error == KErrNotSupported);
+    // retrieval of values for OnScreenKeyboardAttribute (unknown, "no", "gameactions", "navigationkeys")
+    bool success;
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD", L"unknown");
+    TRAP(error, iCustomAttr->GetL(KOnScreenKeyboardAttribute, flags));
+    CHECK(error == KErrNotFound);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD", L"3");
+    TRAP(error, iCustomAttr->GetL(KOnScreenKeyboardAttribute, flags));
+    CHECK(error == KErrNotFound);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD", L"0");
+    HBufC* attrValue;
+    attrValue = iCustomAttr->GetL(KOnScreenKeyboardAttribute, flags);
+    success = (attrValue->Compare(KValueNo()) == 0);
+    delete attrValue;
+    attrValue = NULL;
+    CHECK(success);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD", L"1");
+    attrValue = iCustomAttr->GetL(KOnScreenKeyboardAttribute, flags);
+    success = (attrValue->Compare(KValueGameactions()) == 0);
+    delete attrValue;
+    attrValue = NULL;
+    CHECK(success);
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD", L"2");
+    attrValue = iCustomAttr->GetL(KOnScreenKeyboardAttribute, flags);
+    success = (attrValue->Compare(KValueNavigationkeys()) == 0);
+    delete attrValue;
+    attrValue = NULL;
+    CHECK(success);
+    // updating with different values (unknown, "no", "gameactions", "navigationkeys")
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD");
+    iCustomAttr->UpdateL(KOnScreenKeyboardAttribute, KDummy, flags);
+    std::wstring value = L"";
+    iStorageHandler->readAttribute(MIDP_PACKAGE_TABLE, iAppUid1, ON_SCREEN_KEYPAD, value);
+    CHECK(value.size() == 0);
+    iCustomAttr->UpdateL(KOnScreenKeyboardAttribute, KValueNo, flags);
+    iStorageHandler->readAttribute(MIDP_PACKAGE_TABLE, iAppUid1, ON_SCREEN_KEYPAD, value);
+    CHECK(value.compare(L"0") == 0);
+    iCustomAttr->UpdateL(KOnScreenKeyboardAttribute, KValueGameactions, flags);
+    iStorageHandler->readAttribute(MIDP_PACKAGE_TABLE, iAppUid1, ON_SCREEN_KEYPAD, value);
+    CHECK(value.compare(L"1") == 0);
+    iCustomAttr->UpdateL(KOnScreenKeyboardAttribute, KValueNavigationkeys, flags);
+    iStorageHandler->readAttribute(MIDP_PACKAGE_TABLE, iAppUid1, ON_SCREEN_KEYPAD, value);
+    CHECK(value.compare(L"2") == 0);
+    // OnScreenKeyboardAttribute not found
+    iStorageHandler->cleanStorage(MIDP_PACKAGE_TABLE, iAppUid1);
+    iStorageHandler->populateMIDPPackageTable(iAppUid1, L"UTPD");
+    TRAP(error, iCustomAttr->GetL(KOnScreenKeyboardAttribute, flags));
+    CHECK(error == KErrNotFound);
+}
\ No newline at end of file