diff -r f5050f1da672 -r 04becd199f91 javamanager/javaregistry/tsrc/registryserver/src/testinstalledappsregistryentry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javaregistry/tsrc/registryserver/src/testinstalledappsregistryentry.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,620 @@ +/* +* 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 +#include + +#include "TestHarness.h" + +#include "javastorage.h" +#include "javastorageexception.h" +#include "javastoragenames.h" +#include "javauid.h" +#include "javasymbianoslayer.h" + +#include "storagetestutils.h" +#include "javaregistry.h" +#include "javaregistryentry.h" +#include "logger.h" +#include "minstalledappsregistry.h" + +using namespace std; +using namespace Java; +using namespace java::storage; +using namespace java::util; + +TEST_GROUP(TestInstalledAppsRegistryEntry) +{ + JavaStorage* js; + JavaStorageTestUtils* jtu; + + TEST_SETUP() + { + js = JavaStorage::createInstance(); + jtu = new JavaStorageTestUtils(); + } + TEST_TEARDOWN() + { + try + { + js->rollbackTransaction(); + js->close(); + delete js; + js = NULL; + } + catch (...) + { + // No can do + } + + delete js; + js = 0; + delete jtu; + jtu = 0; + } +}; + +/** + * Test CInstalledAppsRegistryEntry::SizeL() method. + * 1. Test no application suite size set. 0 as size. + * 2. Test no application suite size set via application entry. 0 as size. + * 3. Test size set to 0. + * 4. Test size set to 12345. + * 5. Test size set to 12345. + */ +TEST(TestInstalledAppsRegistryEntry, TestSizeL) +{ + // This will always fail as size is not asked from server but it is + // calculated from file system which is not populated. + + /*LOG(EJavaStorage, EInfo, "+TestSizeL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + + JavaStorageApplicationEntry_t suite1; + JavaStorageEntry attr; + attr.setEntry(PACKAGE_NAME, L"TestMIDletByUidL"); + suite1.insert(attr); + + string tableName = APPLICATION_PACKAGE_TABLE; + Uid suite1Uid(L"[e1230043]"); + attr.setEntry(ID, suite1Uid.toString()); + suite1.insert(attr); + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, suite1)); + js->commitTransaction(); + + JavaStorageApplicationEntry_t midlet1; + attr.setEntry(NAME, L"MyMIDlet1"); + midlet1.insert(attr); + + attr.setEntry(PACKAGE_ID, suite1Uid.toString()); + midlet1.insert(attr); + + string appTableName = APPLICATION_TABLE; + Uid midlet1Uid(L"[e12a0078]"); + attr.setEntry(ID, midlet1Uid.toString()); + midlet1.insert(attr); + + js->startTransaction(); + CHECK(jtu->populate(*js, appTableName, midlet1)); + js->commitTransaction(); + + // 1. No suite size set. + TUid suiteUid; + uidToTUid(suite1Uid, suiteUid); + MInstalledAppsRegistryEntry* entry = appsRegistry->EntryL(suiteUid); + CleanupReleasePushL(*entry); + + CHECK(entry->SizeL() == 0); + + CleanupStack::PopAndDestroy(entry); + + // 1. No suite size set via application. + TUid midletUid; + uidToTUid(midlet1Uid, midletUid); + + entry = appsRegistry->EntryL(midletUid); + CleanupReleasePushL(*entry); + + CHECK(entry->SizeL() == 0); + CleanupStack::PopAndDestroy(entry); + + JavaStorageApplicationEntry_t updateEntry; + attr.setEntry(INITIAL_SIZE, L"0"); + updateEntry.insert(attr); + js->startTransaction(); + CHECK(jtu->update(*js, tableName, updateEntry, suite1)); + js->commitTransaction(); + + entry = appsRegistry->EntryL(suiteUid); + CleanupReleasePushL(*entry); + + CHECK(entry->SizeL() == 0); + CleanupStack::PopAndDestroy(entry); + + // 3. Test size set to 0. + uidToTUid(midlet1Uid, midletUid); + + entry = appsRegistry->EntryL(midletUid); + CleanupReleasePushL(*entry); + + CHECK(entry->SizeL() == 0); + CleanupStack::PopAndDestroy(entry); + + attr.setEntry(INITIAL_SIZE, L"12345"); + updateEntry.insert(attr); + js->startTransaction(); + CHECK(jtu->update(*js, tableName, updateEntry, suite1)); + js->commitTransaction(); + + // 4. Test size set to 12345. + entry = appsRegistry->EntryL(suiteUid); + CleanupReleasePushL(*entry); + + CHECK(entry->SizeL() == 12345); + CleanupStack::PopAndDestroy(entry); + + // 5. Test size set to 12345 via application. + uidToTUid(midlet1Uid, midletUid); + + entry = appsRegistry->EntryL(midletUid); + CleanupReleasePushL(*entry); + + CHECK(entry->SizeL() == 12345); + CleanupStack::PopAndDestroy(entry); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, tableName, suite1)); + CHECK(jtu->remove(*js, appTableName, midlet1)); + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestSizeL");*/ +} + +/** + * Test CInstalledAppsRegistryEntry::UidL() method. + * 1. Application uid. + * 2. Application suite uid. + * NOTE: Invalid Uid cannot be tested as it cannot be queried. + */ +TEST(TestInstalledAppsRegistryEntry, TestUidL) +{ + LOG(EJavaStorage, EInfo, "+TestUidL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + JavaStorageApplicationEntry_t midlet1; + JavaStorageEntry attr; + + Uid suite1Uid(L"[e22a4577]"); + + attr.setEntry(PACKAGE_ID, suite1Uid.toString()); + midlet1.insert(attr); + + Uid midlet1Uid(L"[e22a4588]"); + + attr.setEntry(ID, midlet1Uid.toString()); + midlet1.insert(attr); + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet1)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + suite1.insert(attr); + + attr.setEntry(ID, suite1Uid.toString()); + suite1.insert(attr); + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + + // 1. Application uid. + TUid midletUid; + uidToTUid(midlet1Uid, midletUid); + + MInstalledAppsRegistryEntry* entry = NULL; + TRAPD(err, entry = appsRegistry->EntryL(midletUid)); + // CHECK(entry != NULL); + CHECK(KErrNotFound == err); + // CleanupReleasePushL(*entry); + // CHECK(entry->UidL() == midletUid); + // CleanupStack::PopAndDestroy(entry); + + // 2. Application suite uid. + TUid suiteUid; + uidToTUid(suite1Uid, suiteUid); + + entry = appsRegistry->EntryL(suiteUid); + CHECK(entry != NULL); + CleanupReleasePushL(*entry); + + CHECK(entry->UidL() == suiteUid); + CleanupStack::PopAndDestroy(entry); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, midlet1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestUidL"); +} + +/** + * Test CInstalledAppsRegistryEntry::VersionL() method. + * 1. Test version set via suite. + * 2. Test version via application. + * 3. Test version not set via suite. Version is 0.0.0. + * 4. Test version not set via application. Version is 0.0.0. + */ +TEST(TestInstalledAppsRegistryEntry, TestVersionL) +{ + LOG(EJavaStorage, EInfo, "+TestVersionL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + + JavaStorageApplicationEntry_t midlet1; + JavaStorageEntry attr; + + Uid suite1Uid(L"[e22a4577]"); + + attr.setEntry(PACKAGE_ID, suite1Uid.toString()); + midlet1.insert(attr); + + Uid midlet1Uid(L"[e22a4588]"); + + attr.setEntry(ID, midlet1Uid.toString()); + midlet1.insert(attr); + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet1)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + suite1.insert(attr); + + wstring vendor = L"SuiteVendor"; + attr.setEntry(VENDOR, vendor); + suite1.insert(attr); + + attr.setEntry(VERSION, L"0.1"); + suite1.insert(attr); + + attr.setEntry(ID, suite1Uid.toString()); + suite1.insert(attr); + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + + TUid suiteUid; + uidToTUid(suite1Uid, suiteUid); + MInstalledAppsRegistryEntry* entry = appsRegistry->EntryL(suiteUid); + CHECK(entry != NULL); + + CleanupReleasePushL(*entry); + + TAppVersion appVersion = entry->VersionL(); + + TAppVersion refVersion(0, 1, 0); + + CHECK(appVersion.iMajor == refVersion.iMajor); + CHECK(appVersion.iMinor == refVersion.iMinor); + CHECK(appVersion.iBuild == refVersion.iBuild); + + CleanupStack::PopAndDestroy(entry); + + + TUid midletUid; + uidToTUid(midlet1Uid, midletUid); + TRAPD(err, entry = appsRegistry->EntryL(midletUid)); + CHECK(KErrNotFound == err); + // CHECK(entry != NULL); + // CleanupReleasePushL(*entry); + + // appVersion = entry->VersionL(); + // CHECK(appVersion.iMajor == refVersion.iMajor); + // CHECK(appVersion.iMinor == refVersion.iMinor); + // CHECK(appVersion.iBuild == refVersion.iBuild); + + // CleanupStack::PopAndDestroy(entry); + + Uid suite2Uid(L"[e22b4577]"); + + JavaStorageApplicationEntry_t suite2; + attr.setEntry(PACKAGE_NAME, L"MySuite2"); + suite2.insert(attr); + + attr.setEntry(VENDOR, L"Inc. inc."); + suite2.insert(attr); + + attr.setEntry(ID, suite2Uid.toString()); + suite2.insert(attr); + attr.setEntry(MEDIA_ID, L"-124614446"); + suite2.insert(attr); + + JavaStorageApplicationEntry_t midlet2; + + attr.setEntry(PACKAGE_ID, suite2Uid.toString()); + midlet2.insert(attr); + + Uid midlet2Uid(L"[e22b4588]"); + + attr.setEntry(ID, midlet2Uid.toString()); + midlet2.insert(attr); + + js->startTransaction(); + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet2)); + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite2)); + js->commitTransaction(); + + uidToTUid(suite2Uid, suiteUid); + + TAppVersion refVersion2(0, 0, 0); + + entry = appsRegistry->EntryL(suiteUid); + CHECK(entry != NULL); + CleanupReleasePushL(*entry); + + appVersion = entry->VersionL(); + CHECK(appVersion.iMajor == refVersion2.iMajor); + CHECK(appVersion.iMinor == refVersion2.iMinor); + CHECK(appVersion.iBuild == refVersion2.iBuild); + + CleanupStack::PopAndDestroy(entry); + + uidToTUid(midlet2Uid, midletUid); + TRAP(err, entry = appsRegistry->EntryL(midletUid)); + CHECK(KErrNotFound == err); // Only suite can be get via EntryL + // CHECK(entry != NULL); + // CleanupReleasePushL(*entry); + + // appVersion = entry->VersionL(); + // CHECK(appVersion.iMajor == refVersion2.iMajor); + // CHECK(appVersion.iMinor == refVersion2.iMinor); + // CHECK(appVersion.iBuild == refVersion2.iBuild); + + // CleanupStack::PopAndDestroy(entry); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, midlet1)); + CHECK(jtu->remove(*js, APPLICATION_TABLE, midlet2)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite2)); + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestVersionL"); +} + +/** + * Test CInstalledAppsRegistryEntry::DriveL() method. + * 1. Test application suite drive. + * 2. Test application drive. + */ +TEST(TestInstalledAppsRegistryEntry, TestDriveL) +{ + LOG(EJavaStorage, EInfo, "+TestDriveL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + JavaStorageApplicationEntry_t midlet1; + JavaStorageEntry attr; + + Uid suite1Uid(L"[eaaa4577]"); + + attr.setEntry(PACKAGE_ID, suite1Uid.toString()); + midlet1.insert(attr); + + Uid midlet1Uid(L"[eaaa4588]"); + + attr.setEntry(ID, midlet1Uid.toString()); + midlet1.insert(attr); + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet1)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(ID, suite1Uid.toString()); + suite1.insert(attr); + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + attr.setEntry(ROOT_PATH, L"e:\\private\\MIDlets\\[eaaa4577]"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + + // 1. Application uid. + TUid midletUid; + uidToTUid(midlet1Uid, midletUid); + + MInstalledAppsRegistryEntry* entry = NULL; + TRAPD(err, entry = appsRegistry->EntryL(midletUid)); + // CHECK(entry != NULL); + CHECK(KErrNotFound == err); // Only suite can be get. + + // CleanupReleasePushL(*entry); + // CHECK(entry->DriveL() == 'E'); + // CleanupStack::PopAndDestroy(entry); + + TUid suiteUid; + uidToTUid(suite1Uid, suiteUid); + + entry = appsRegistry->EntryL(suiteUid); + CHECK(entry != NULL); + + CleanupReleasePushL(*entry); + + CHECK(entry->DriveL() == 'E'); + + CleanupStack::PopAndDestroy(entry); + + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, midlet1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestDriveL"); +} + +/** + * Test CInstalledAppsRegistryEntry::IsInRomL() method. + * 1. Test application suite not in ROM. + * 2. Test application not in ROM. + * 3. Test application suite in ROM. + * 4. Test application in ROM. + */ +TEST(TestInstalledAppsRegistryEntry, TestIsInRomL) +{ + LOG(EJavaStorage, EInfo, "+TestIsInRomL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + + JavaStorageApplicationEntry_t midlet1; + JavaStorageEntry attr; + + Uid suite1Uid(L"[e0004577]"); + + attr.setEntry(PACKAGE_ID, suite1Uid.toString()); + midlet1.insert(attr); + + Uid midlet1Uid(L"[e0004588]"); + + attr.setEntry(ID, midlet1Uid.toString()); + midlet1.insert(attr); + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet1)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(ID, suite1Uid.toString()); + suite1.insert(attr); + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + attr.setEntry(JAR_PATH, L"e:\\private\\MIDlets\\[e0004577]"); + suite1.insert(attr); + + attr.setEntry(ROOT_PATH, L"e:\\private\\MIDlets\\[e0004577]"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + + TUid midletUid; + uidToTUid(midlet1Uid, midletUid); + MInstalledAppsRegistryEntry* entry = NULL; + TRAPD(err, entry = appsRegistry->EntryL(midletUid)); + + // CHECK(KErrNotFound == err); + // CHECK(entry != NULL); + // CleanupReleasePushL(*entry); + + // 2. Test application not in ROM. + // CHECK(entry->IsInRomL() == EFalse); + + // CleanupStack::PopAndDestroy(entry); + + TUid suiteUid; + uidToTUid(suite1Uid, suiteUid); + + // 1. Test application suite not in ROM. + entry = appsRegistry->EntryL(suiteUid); + CHECK(entry != NULL); + + CleanupReleasePushL(*entry); + CHECK(entry->IsInRomL() == EFalse); + + CleanupStack::PopAndDestroy(entry); + + // Move suite to ROM. + JavaStorageApplicationEntry_t updateEntry; + attr.setEntry(JAR_PATH, L"z:\\private\\MIDlets\\[e0004577]"); + updateEntry.insert(attr); + + attr.setEntry(ROOT_PATH, L"z:\\private\\MIDlets\\[e0004577]"); + suite1.insert(attr); + + js->startTransaction(); + CHECK(jtu->update(*js, APPLICATION_PACKAGE_TABLE, updateEntry, suite1)); + js->commitTransaction(); + + // TRAP(err, entry = appsRegistry->EntryL(midletUid)); + //CHECK(KErrNotFound == err); + // CHECK(entry != NULL); + // CleanupReleasePushL(*entry); + + // 4. Test application in ROM. + // CHECK(entry->IsInRomL() == true); + // CleanupStack::PopAndDestroy(entry); + + entry = appsRegistry->EntryL(suiteUid); + CHECK(entry != NULL); + CleanupReleasePushL(*entry); + + // 3. Test application suite in ROM. + // CHECK(entry->IsInRomL() == true); + + // According to current implementation when application is installed + // to system using S60 JavaIntaller (as always) isInRom is always set + // to EFalse thus it cannot be set ETrue after that. + CHECK(entry->IsInRomL() == false); + + CleanupStack::PopAndDestroy(entry); + + suite1.clear(); + attr.setEntry(ID, suite1Uid.toString()); + suite1.insert(attr); + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + + + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, midlet1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestIsInRomL"); +}