javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/GetComponentInfoTest.java
branchRCL_3
changeset 19 04becd199f91
child 47 f40128debb5d
equal deleted inserted replaced
16:f5050f1da672 19:04becd199f91
       
     1 /*
       
     2 * Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "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".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 package com.nokia.mj.impl.installer;
       
    20 
       
    21 import com.nokia.mj.impl.comms.CommsEndpoint;
       
    22 import com.nokia.mj.impl.comms.CommsServerEndpoint;
       
    23 import com.nokia.mj.impl.comms.CommsListener;
       
    24 import com.nokia.mj.impl.comms.CommsMessage;
       
    25 import com.nokia.mj.impl.installer.utils.InstallerMain;
       
    26 import com.nokia.mj.impl.installer.utils.Log;
       
    27 import com.nokia.mj.impl.installer.utils.Platform;
       
    28 
       
    29 import java.io.IOException;
       
    30 import java.util.Vector;
       
    31 
       
    32 import j2meunit.framework.Test;
       
    33 import j2meunit.framework.TestCase;
       
    34 import j2meunit.framework.TestMethod;
       
    35 import j2meunit.framework.TestSuite;
       
    36 
       
    37 /**
       
    38  * Test cases for GetComponentInfo.
       
    39  */
       
    40 public class GetComponentInfoTest extends TestCase implements InstallerMain
       
    41 {
       
    42     // Comms endpoint for the tests.
       
    43     private static final int TEST_ENDPOINT = 11000;
       
    44 
       
    45     private static String iInstalledApp = null;
       
    46     private CommsServerEndpoint iComms = null;
       
    47     private InstallerResultMessage iMsg = null;
       
    48     private InstallerTestUtils iItu = null;
       
    49     private Vector iDefaultOptions = null;
       
    50 
       
    51     // Begin j2meunit test framework setup
       
    52 
       
    53     public void installerMain(String[] aArgs)
       
    54     {
       
    55         TestSuite suite = new TestSuite(this.getClass().getName());
       
    56 
       
    57         suite.addTest(new GetComponentInfoTest("testComponentInfoJadNotFound", new TestMethod()
       
    58         {
       
    59             public void run(TestCase tc)
       
    60             {
       
    61                 ((GetComponentInfoTest)tc).testComponentInfoJadNotFound();
       
    62             }
       
    63         }));
       
    64 
       
    65         suite.addTest(new GetComponentInfoTest("testComponentInfoJarNotFound", new TestMethod()
       
    66         {
       
    67             public void run(TestCase tc)
       
    68             {
       
    69                 ((GetComponentInfoTest)tc).testComponentInfoJarNotFound();
       
    70             }
       
    71         }));
       
    72 
       
    73         suite.addTest(new GetComponentInfoTest("testComponentInfoUidNotFound", new TestMethod()
       
    74         {
       
    75             public void run(TestCase tc)
       
    76             {
       
    77                 ((GetComponentInfoTest)tc).testComponentInfoUidNotFound();
       
    78             }
       
    79         }));
       
    80 
       
    81         suite.addTest(new GetComponentInfoTest("testComponentInfoJadNoName", new TestMethod()
       
    82         {
       
    83             public void run(TestCase tc)
       
    84             {
       
    85                 ((GetComponentInfoTest)tc).testComponentInfoJadNoName();
       
    86             }
       
    87         }));
       
    88 
       
    89         suite.addTest(new GetComponentInfoTest("testComponentInfoJadNoJar", new TestMethod()
       
    90         {
       
    91             public void run(TestCase tc)
       
    92             {
       
    93                 ((GetComponentInfoTest)tc).testComponentInfoJadNoJar();
       
    94             }
       
    95         }));
       
    96 
       
    97         suite.addTest(new GetComponentInfoTest("testComponentInfoJad3Ok", new TestMethod()
       
    98         {
       
    99             public void run(TestCase tc)
       
   100             {
       
   101                 ((GetComponentInfoTest)tc).testComponentInfoJad3Ok();
       
   102             }
       
   103         }));
       
   104 
       
   105         suite.addTest(new GetComponentInfoTest("testComponentInfoJadOk", new TestMethod()
       
   106         {
       
   107             public void run(TestCase tc)
       
   108             {
       
   109                 ((GetComponentInfoTest)tc).testComponentInfoJadOk();
       
   110             }
       
   111         }));
       
   112 
       
   113         suite.addTest(new GetComponentInfoTest("testComponentInfoJarOk", new TestMethod()
       
   114         {
       
   115             public void run(TestCase tc)
       
   116             {
       
   117                 ((GetComponentInfoTest)tc).testComponentInfoJarOk();
       
   118             }
       
   119         }));
       
   120 
       
   121         suite.addTest(new GetComponentInfoTest("testComponentInfoMmNok", new TestMethod()
       
   122         {
       
   123             public void run(TestCase tc)
       
   124             {
       
   125                 ((GetComponentInfoTest)tc).testComponentInfoMmNok();
       
   126             }
       
   127         }));
       
   128 
       
   129         suite.addTest(new GetComponentInfoTest("testComponentInfoMmOk", new TestMethod()
       
   130         {
       
   131             public void run(TestCase tc)
       
   132             {
       
   133                 ((GetComponentInfoTest)tc).testComponentInfoMmOk();
       
   134             }
       
   135         }));
       
   136 
       
   137         suite.addTest(new GetComponentInfoTest("testComponentInfoUidOk", new TestMethod()
       
   138         {
       
   139             public void run(TestCase tc)
       
   140             {
       
   141                 ((GetComponentInfoTest)tc).testComponentInfoUidOk();
       
   142             }
       
   143         }));
       
   144 
       
   145         suite.addTest(new GetComponentInfoTest("testComponentInfoJadInstalledOk", new TestMethod()
       
   146         {
       
   147             public void run(TestCase tc)
       
   148             {
       
   149                 ((GetComponentInfoTest)tc).testComponentInfoJadInstalledOk();
       
   150             }
       
   151         }));
       
   152 
       
   153         suite.addTest(new GetComponentInfoTest("testComponentInfoUidAfterUninstallation", new TestMethod()
       
   154         {
       
   155             public void run(TestCase tc)
       
   156             {
       
   157                 ((GetComponentInfoTest)tc).testComponentInfoUidAfterUninstallation();
       
   158             }
       
   159         }));
       
   160 
       
   161         if (Platform.isS60())
       
   162         {
       
   163             suite.addTest(new GetComponentInfoTest("testComponentInfoJadInboxOk", new TestMethod()
       
   164             {
       
   165                 public void run(TestCase tc)
       
   166                 {
       
   167                     ((GetComponentInfoTest)tc).testComponentInfoJadInboxOk();
       
   168                 }
       
   169             }));
       
   170 
       
   171             suite.addTest(new GetComponentInfoTest("testComponentInfoJarInboxOk", new TestMethod()
       
   172             {
       
   173                 public void run(TestCase tc)
       
   174                 {
       
   175                     ((GetComponentInfoTest)tc).testComponentInfoJarInboxOk();
       
   176                 }
       
   177             }));
       
   178 
       
   179             suite.addTest(new GetComponentInfoTest("testComponentInfoMmInboxOk", new TestMethod()
       
   180             {
       
   181                 public void run(TestCase tc)
       
   182                 {
       
   183                     ((GetComponentInfoTest)tc).testComponentInfoMmInboxOk();
       
   184                 }
       
   185             }));
       
   186         }
       
   187 
       
   188         com.nokia.mj.impl.utils.OmjTestRunner.run(suite);
       
   189     }
       
   190 
       
   191     public GetComponentInfoTest()
       
   192     {
       
   193     }
       
   194 
       
   195     public GetComponentInfoTest(String aTestName, TestMethod aTestMethod)
       
   196     {
       
   197         super(aTestName, aTestMethod);
       
   198     }
       
   199 
       
   200     public void assertFalse(String aMsg, boolean aCondition)
       
   201     {
       
   202         assertTrue(aMsg, !aCondition);
       
   203     }
       
   204 
       
   205     // End j2meunit test framework setup
       
   206 
       
   207     protected void setUp()
       
   208     {
       
   209         iComms = new CommsServerEndpoint();
       
   210         iComms.start(TEST_ENDPOINT);
       
   211         iMsg = null;
       
   212         iItu = new InstallerTestUtils();
       
   213         iItu.init();
       
   214     }
       
   215 
       
   216     protected void tearDown()
       
   217     {
       
   218         if (iItu != null)
       
   219         {
       
   220             iItu.destroy();
       
   221         }
       
   222         if (iComms != null)
       
   223         {
       
   224             iComms.stop();
       
   225             iComms.destroy();
       
   226             iComms = null;
       
   227         }
       
   228     }
       
   229 
       
   230     public void assertResult(int aResult, int aExpectedResult)
       
   231     {
       
   232         assertTrue("Installer returned " + aResult +
       
   233                    ", expected " + aExpectedResult,
       
   234                    aResult == aExpectedResult);
       
   235     }
       
   236 
       
   237     public void assertResult(String aMsg, int aResult, int aExpectedResult)
       
   238     {
       
   239         assertTrue(aMsg + ": Installer returned " + aResult +
       
   240                    ", expected " + aExpectedResult,
       
   241                    aResult == aExpectedResult);
       
   242     }
       
   243 
       
   244     public void testComponentInfoJadNotFound()
       
   245     {
       
   246         Log.log("GetComponentInfoTest.testComponentInfoJadNotFound begins");
       
   247         iComms.registerListener(0, new ResultListener());
       
   248         String[] args = new String[]
       
   249         {
       
   250             "componentinfo",
       
   251             "-commsresult=" + TEST_ENDPOINT,
       
   252             "-jad=" + iItu.getTestDir() + "nonexisting.jad",
       
   253         };
       
   254         int result = Installer.mainWithResult(args);
       
   255         // Check result code.
       
   256         assertResult(result, Installer.ERR_NOT_FOUND);
       
   257         // Check result
       
   258         assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   259         assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NOT_FOUND);
       
   260     }
       
   261 
       
   262     public void testComponentInfoJarNotFound()
       
   263     {
       
   264         Log.log("GetComponentInfoTest.testComponentInfoJarNotFound begins");
       
   265         iComms.registerListener(0, new ResultListener());
       
   266         String[] args = new String[]
       
   267         {
       
   268             "componentinfo",
       
   269             "-commsresult=" + TEST_ENDPOINT,
       
   270             "-jad=" + iItu.getTestDir() + "nonexisting.jar",
       
   271         };
       
   272         int result = Installer.mainWithResult(args);
       
   273         // Check result code.
       
   274         assertResult(result, Installer.ERR_NOT_FOUND);
       
   275         // Check result
       
   276         assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   277         assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NOT_FOUND);
       
   278     }
       
   279 
       
   280     public void testComponentInfoUidNotFound()
       
   281     {
       
   282         Log.log("GetComponentInfoTest.testComponentInfoUidNotFound begins");
       
   283         iComms.registerListener(0, new ResultListener());
       
   284         String[] args = new String[]
       
   285         {
       
   286             "componentinfo",
       
   287             "-commsresult=" + TEST_ENDPOINT,
       
   288             "-uid=" + (Platform.isS60()? "0xe0000000": "0"),
       
   289         };
       
   290         int result = Installer.mainWithResult(args);
       
   291         // Check result code.
       
   292         assertResult(result, Installer.ERR_NOT_FOUND);
       
   293         // Check result
       
   294         assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   295         assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NOT_FOUND);
       
   296     }
       
   297 
       
   298     public void testComponentInfoJadNoName()
       
   299     {
       
   300         Log.log("GetComponentInfoTest.testComponentInfoJadNoName begins");
       
   301         iComms.registerListener(0, new ResultListener());
       
   302         String[] args = new String[]
       
   303         {
       
   304             "componentinfo",
       
   305             "-commsresult=" + TEST_ENDPOINT,
       
   306             "-jad=" + iItu.getTestDir() + "HelloWorld_NoName.jad",
       
   307         };
       
   308         int result = Installer.mainWithResult(args);
       
   309         // Check result code.
       
   310         assertResult(result, Installer.ERR_NONE);
       
   311         try
       
   312         {
       
   313             // Check result message
       
   314             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   315             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   316             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.INVALID_PACKAGE);
       
   317             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_AUTHENTICITY);
       
   318             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_NAME);
       
   319             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_VENDOR);
       
   320             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_VERSION);
       
   321             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_GID);
       
   322             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   323             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1);
       
   324             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1);
       
   325         }
       
   326         catch (Throwable t)
       
   327         {
       
   328             t.printStackTrace();
       
   329             assertTrue(t.toString(), false);
       
   330         }
       
   331     }
       
   332 
       
   333     public void testComponentInfoJadNoJar()
       
   334     {
       
   335         Log.log("GetComponentInfoTest.testComponentInfoJadNoJar begins");
       
   336         iComms.registerListener(0, new ResultListener());
       
   337         String[] args = new String[]
       
   338         {
       
   339             "componentinfo",
       
   340             "-commsresult=" + TEST_ENDPOINT,
       
   341             "-jad=" + iItu.getTestDir() + "HelloWorld_no_jar.jad",
       
   342         };
       
   343         int result = Installer.mainWithResult(args);
       
   344         // Check result code.
       
   345         assertResult(result, Installer.ERR_NONE);
       
   346         try
       
   347         {
       
   348             // Check result message
       
   349             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   350             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   351             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   352             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 0);
       
   353             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld_no_jar");
       
   354             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   355             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   356             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld_no_jar");
       
   357             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   358             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld_no_jar/HelloWorld");
       
   359             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   360             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   361         }
       
   362         catch (Throwable t)
       
   363         {
       
   364             t.printStackTrace();
       
   365             assertTrue(t.toString(), false);
       
   366         }
       
   367     }
       
   368 
       
   369     public void testComponentInfoJadOk()
       
   370     {
       
   371         Log.log("GetComponentInfoTest.testComponentInfoJadOk begins");
       
   372         iComms.registerListener(0, new ResultListener());
       
   373         String[] args = new String[]
       
   374         {
       
   375             "componentinfo",
       
   376             "-commsresult=" + TEST_ENDPOINT,
       
   377             "-jad=" + iItu.getTestDir() + "HelloWorld.jad",
       
   378         };
       
   379         int result = Installer.mainWithResult(args);
       
   380         // Check result code.
       
   381         assertResult(result, Installer.ERR_NONE);
       
   382         try
       
   383         {
       
   384             // Check result message
       
   385             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   386             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   387             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   388             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 1);
       
   389             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld");
       
   390             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   391             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   392             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld");
       
   393             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld/HelloWorld");
       
   394             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   395             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2);
       
   396             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2);
       
   397             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2);
       
   398             if (Platform.isS60())
       
   399             {
       
   400                 assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   401                 assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   402             }
       
   403         }
       
   404         catch (Throwable t)
       
   405         {
       
   406             t.printStackTrace();
       
   407             assertTrue(t.toString(), false);
       
   408         }
       
   409     }
       
   410 
       
   411     public void testComponentInfoJad3Ok()
       
   412     {
       
   413         Log.log("GetComponentInfoTest.testComponentInfoJad3Ok begins");
       
   414         iComms.registerListener(0, new ResultListener());
       
   415         String[] args = new String[]
       
   416         {
       
   417             "componentinfo",
       
   418             "-commsresult=" + TEST_ENDPOINT,
       
   419             "-jad=" + iItu.getTestDir() + "HelloWorld_3_midlets_no_ota_status.jad",
       
   420         };
       
   421         int result = Installer.mainWithResult(args);
       
   422         // Check result code.
       
   423         assertResult(result, Installer.ERR_NONE);
       
   424         try
       
   425         {
       
   426             // Check result message
       
   427             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   428             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   429             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   430             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 0);
       
   431             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld");
       
   432             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   433             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   434             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld");
       
   435             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   436             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld/HelloWorld");
       
   437             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   438             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2, "Nokia/HelloWorld/HelloWorld2");
       
   439             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2, "HelloWorld2");
       
   440             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2);
       
   441             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+3, "Nokia/HelloWorld/HelloWorld3");
       
   442             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+3, "HelloWorld3");
       
   443             if (Platform.isS60())
       
   444             {
       
   445                 assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1, 0xefef0001);
       
   446                 assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_UID+3, 0xefef0003);
       
   447             }
       
   448         }
       
   449         catch (Throwable t)
       
   450         {
       
   451             t.printStackTrace();
       
   452             assertTrue(t.toString(), false);
       
   453         }
       
   454     }
       
   455 
       
   456     public void testComponentInfoJarOk()
       
   457     {
       
   458         Log.log("GetComponentInfoTest.testComponentInfoJarOk begins");
       
   459         iComms.registerListener(0, new ResultListener());
       
   460         String[] args = new String[]
       
   461         {
       
   462             "componentinfo",
       
   463             "-commsresult=" + TEST_ENDPOINT,
       
   464             "-jar=" + iItu.getTestDir() + "HelloWorld.jar",
       
   465         };
       
   466         int result = Installer.mainWithResult(args);
       
   467         // Check result code.
       
   468         assertResult(result, Installer.ERR_NONE);
       
   469         try
       
   470         {
       
   471             // Check result message
       
   472             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   473             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   474             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   475             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 1);
       
   476             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld");
       
   477             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   478             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   479             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld");
       
   480             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   481             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld/HelloWorld");
       
   482             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   483             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   484             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2);
       
   485             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2);
       
   486             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2);
       
   487         }
       
   488         catch (Throwable t)
       
   489         {
       
   490             t.printStackTrace();
       
   491             assertTrue(t.toString(), false);
       
   492         }
       
   493     }
       
   494 
       
   495     public void testComponentInfoMmNok()
       
   496     {
       
   497         Log.log("GetComponentInfoTest.testComponentInfoMmNok begins");
       
   498         iComms.registerListener(0, new ResultListener());
       
   499         String[] args = new String[]
       
   500         {
       
   501             "componentinfo",
       
   502             "-commsresult=" + TEST_ENDPOINT,
       
   503             "-jar=" + iItu.getTestDir() + "helloworldmm_invalid.jar",
       
   504         };
       
   505         int result = Installer.mainWithResult(args);
       
   506         // Check result code.
       
   507         assertResult(result, Installer.ERR_GENERAL);
       
   508         try
       
   509         {
       
   510             // Check result message
       
   511             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   512             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_GENERAL);
       
   513             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS);
       
   514             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_AUTHENTICITY);
       
   515             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_NAME);
       
   516             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_VENDOR);
       
   517             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_VERSION);
       
   518             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_GID);
       
   519             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   520             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1);
       
   521             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   522             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1);
       
   523             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2);
       
   524             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2);
       
   525             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2);
       
   526         }
       
   527         catch (Throwable t)
       
   528         {
       
   529             t.printStackTrace();
       
   530             assertTrue(t.toString(), false);
       
   531         }
       
   532     }
       
   533 
       
   534     public void testComponentInfoMmOk()
       
   535     {
       
   536         Log.log("GetComponentInfoTest.testComponentInfoMmOk begins");
       
   537         iComms.registerListener(0, new ResultListener());
       
   538         String[] args = new String[]
       
   539         {
       
   540             "componentinfo",
       
   541             "-commsresult=" + TEST_ENDPOINT,
       
   542             "-jar=" + iItu.getTestDir() + "helloworldmm.jar",
       
   543         };
       
   544         int result = Installer.mainWithResult(args);
       
   545         // Check result code.
       
   546         assertResult(result, Installer.ERR_NONE);
       
   547         try
       
   548         {
       
   549             // Check result message
       
   550             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   551             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   552             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   553             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 1);
       
   554             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld");
       
   555             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   556             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   557             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld");
       
   558             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   559             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld/HelloWorld");
       
   560             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   561             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   562             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2);
       
   563             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2);
       
   564             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2);
       
   565         }
       
   566         catch (Throwable t)
       
   567         {
       
   568             t.printStackTrace();
       
   569             assertTrue(t.toString(), false);
       
   570         }
       
   571     }
       
   572 
       
   573     public void testComponentInfoUidOk()
       
   574     {
       
   575         Log.log("GetComponentInfoTest.testComponentInfoUidOk begins");
       
   576         iComms.registerListener(0, new ResultListener());
       
   577 
       
   578         // Install test application.
       
   579         String[] args = new String[]
       
   580         {
       
   581             "install",
       
   582             "-silent",
       
   583             "-commsresult=" + TEST_ENDPOINT,
       
   584             "-jad=" + iItu.getTestDir() + "HelloWorld_3_midlets_no_ota_status.jad",
       
   585         };
       
   586         int result = Installer.mainWithResult(args);
       
   587         // Check result code.
       
   588         assertResult(result, Installer.ERR_NONE);
       
   589         // Save the uid of the installed application.
       
   590         iInstalledApp = Installer.iInstalledApps[0].toString();
       
   591 
       
   592         // Get component info for the installed application.
       
   593         args = new String[]
       
   594         {
       
   595             "componentinfo",
       
   596             "-commsresult=" + TEST_ENDPOINT,
       
   597             "-uid=" + iInstalledApp,
       
   598         };
       
   599         result = Installer.mainWithResult(args);
       
   600         // Check result code.
       
   601         assertResult(result, Installer.ERR_NONE);
       
   602         try
       
   603         {
       
   604             // Check result message
       
   605             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   606             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   607             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.ALREADY_INSTALLED);
       
   608             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 0);
       
   609             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld");
       
   610             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   611             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   612             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld");
       
   613             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld/HelloWorld");
       
   614             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   615             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2, "Nokia/HelloWorld/HelloWorld2");
       
   616             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2, "HelloWorld2");
       
   617             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+3, "Nokia/HelloWorld/HelloWorld3");
       
   618             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+3, "HelloWorld3");
       
   619             if (Platform.isS60())
       
   620             {
       
   621                 assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_UID, 0x101b2bd2);
       
   622                 assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1, 0xefef0001);
       
   623                 assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2, 0x101631a4);
       
   624                 assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_UID+3, 0xefef0003);
       
   625             }
       
   626         }
       
   627         catch (Throwable t)
       
   628         {
       
   629             t.printStackTrace();
       
   630             assertTrue(t.toString(), false);
       
   631         }
       
   632     }
       
   633 
       
   634     public void testComponentInfoJadInstalledOk()
       
   635     {
       
   636         Log.log("GetComponentInfoTest.testComponentInfoJadInstalledOk begins");
       
   637         iComms.registerListener(0, new ResultListener());
       
   638         String[] args = new String[]
       
   639         {
       
   640             "componentinfo",
       
   641             "-commsresult=" + TEST_ENDPOINT,
       
   642             "-jad=" + iItu.getTestDir() + "HelloWorld.jad",
       
   643         };
       
   644         int result = Installer.mainWithResult(args);
       
   645         // Check result code.
       
   646         assertResult(result, Installer.ERR_NONE);
       
   647         try
       
   648         {
       
   649             // Check result message
       
   650             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   651             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   652             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.ALREADY_INSTALLED);
       
   653             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 1);
       
   654             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld");
       
   655             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   656             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   657             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorld");
       
   658             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorld/HelloWorld");
       
   659             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   660             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_GID+2);
       
   661             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+2);
       
   662             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+2);
       
   663             if (Platform.isS60())
       
   664             {
       
   665                 assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_UID, 0x101b2bd2);
       
   666                 assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1, 0xefef0001);
       
   667             }
       
   668         }
       
   669         catch (Throwable t)
       
   670         {
       
   671             t.printStackTrace();
       
   672             assertTrue(t.toString(), false);
       
   673         }
       
   674     }
       
   675 
       
   676     public void testComponentInfoUidAfterUninstallation()
       
   677     {
       
   678         Log.log("GetComponentInfoTest.testComponentInfoUidAfterUninstallation begins");
       
   679         iComms.registerListener(0, new ResultListener());
       
   680 
       
   681         // Uninstall test application.
       
   682         String[] args = new String[]
       
   683         {
       
   684             "uninstall",
       
   685             "-silent",
       
   686             "-iap=1",
       
   687             "-commsresult=" + TEST_ENDPOINT,
       
   688             "-uid=" + iInstalledApp,
       
   689         };
       
   690         int result = Installer.mainWithResult(args);
       
   691         // Check result code.
       
   692         assertResult(result, Installer.ERR_NONE);
       
   693 
       
   694         // Get component info after uninstallation.
       
   695         args = new String[]
       
   696         {
       
   697             "componentinfo",
       
   698             "-commsresult=" + TEST_ENDPOINT,
       
   699             "-uid=" + iInstalledApp,
       
   700         };
       
   701         result = Installer.mainWithResult(args);
       
   702         // Check result code.
       
   703         assertResult(result, Installer.ERR_NOT_FOUND);
       
   704         // Check result
       
   705         assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   706         assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NOT_FOUND);
       
   707     }
       
   708 
       
   709     public void testComponentInfoJadInboxOk()
       
   710     {
       
   711         Log.log("GetComponentInfoTest.testComponentInfoJadInboxOk begins");
       
   712         iComms.registerListener(0, new ResultListener());
       
   713         String startPath = "c:\\private\\1000484b\\Mail2\\00001001_S\\7\\00100007_F\\HelloWorld1.jad";
       
   714         String[] args = new String[]
       
   715         {
       
   716             "componentinfo",
       
   717             "-commsresult=" + TEST_ENDPOINT,
       
   718             "-jad=" + startPath,
       
   719         };
       
   720         int result = Installer.mainWithResult(args);
       
   721         // Check result code.
       
   722         assertResult(result, Installer.ERR_NONE);
       
   723         try
       
   724         {
       
   725             // Check result message
       
   726             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   727             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   728             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   729             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 0);
       
   730             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld1");
       
   731             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Unknown");
       
   732             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   733             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Unknown/HelloWorld1");
       
   734             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   735             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Unknown/HelloWorld1/HelloWorld1");
       
   736             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld1");
       
   737             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   738         }
       
   739         catch (Throwable t)
       
   740         {
       
   741             t.printStackTrace();
       
   742             assertTrue(t.toString(), false);
       
   743         }
       
   744     }
       
   745 
       
   746     public void testComponentInfoJarInboxOk()
       
   747     {
       
   748         Log.log("GetComponentInfoTest.testComponentInfoJarInboxOk begins");
       
   749         iComms.registerListener(0, new ResultListener());
       
   750         String startPath = "c:\\private\\1000484b\\Mail2\\00001001_S\\d\\0010000d_F\\HelloWorld2.jar";
       
   751         String[] args = new String[]
       
   752         {
       
   753             "componentinfo",
       
   754             "-commsresult=" + TEST_ENDPOINT,
       
   755             "-jar=" + startPath,
       
   756         };
       
   757         int result = Installer.mainWithResult(args);
       
   758         // Check result code.
       
   759         assertResult(result, Installer.ERR_NONE);
       
   760         try
       
   761         {
       
   762             // Check result message
       
   763             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   764             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   765             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   766             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 0);
       
   767             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorld2");
       
   768             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Unknown");
       
   769             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   770             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Unknown/HelloWorld2");
       
   771             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   772             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Unknown/HelloWorld2/HelloWorld2");
       
   773             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld2");
       
   774             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   775         }
       
   776         catch (Throwable t)
       
   777         {
       
   778             t.printStackTrace();
       
   779             assertTrue(t.toString(), false);
       
   780         }
       
   781     }
       
   782 
       
   783     public void testComponentInfoMmInboxOk()
       
   784     {
       
   785         Log.log("GetComponentInfoTest.testComponentInfoMmInboxOk begins");
       
   786         iComms.registerListener(0, new ResultListener());
       
   787         String startPath = "c:\\private\\1000484b\\Mail2\\00001001_S\\1\\00100011_F\\hwmm.jar";
       
   788         String[] args = new String[]
       
   789         {
       
   790             "componentinfo",
       
   791             "-commsresult=" + TEST_ENDPOINT,
       
   792             "-jar=" + startPath,
       
   793         };
       
   794         int result = Installer.mainWithResult(args);
       
   795         // Check result code.
       
   796         assertResult(result, Installer.ERR_NONE);
       
   797         try
       
   798         {
       
   799             // Check result message
       
   800             assertResultMessage(iMsg, InstallerResultMessage.NAME_OPERATION, 2);
       
   801             assertResultMessage(iMsg, InstallerResultMessage.NAME_RESULT, Installer.ERR_NONE);
       
   802             assertResultMessage(iMsg, InstallerResultMessage.NAME_INSTALL_STATUS, GetComponentInfo.NEW_COMPONENT);
       
   803             assertResultMessage(iMsg, InstallerResultMessage.NAME_AUTHENTICITY, 0);
       
   804             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_NAME, "HelloWorldMM");
       
   805             assertResultMessage(iMsg, InstallerResultMessage.NAME_VENDOR, "Nokia");
       
   806             assertResultMessage(iMsg, InstallerResultMessage.NAME_VERSION, "1.0");
       
   807             assertResultMessage(iMsg, InstallerResultMessage.NAME_SUITE_GID, "Nokia/HelloWorldMM");
       
   808             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_SUITE_UID);
       
   809             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_GID+1, "Nokia/HelloWorldMM/HelloWorld");
       
   810             assertResultMessage(iMsg, InstallerResultMessage.NAME_MIDLET_NAME+1, "HelloWorld");
       
   811             assertResultMessageNoValue(iMsg, InstallerResultMessage.NAME_MIDLET_UID+1);
       
   812         }
       
   813         catch (Throwable t)
       
   814         {
       
   815             t.printStackTrace();
       
   816             assertTrue(t.toString(), false);
       
   817         }
       
   818     }
       
   819 
       
   820     private class ResultListener implements CommsListener
       
   821     {
       
   822         public void processMessage(CommsMessage aMessage)
       
   823         {
       
   824             try
       
   825             {
       
   826                 iMsg = new InstallerResultMessage();
       
   827                 iMsg.parse(aMessage);
       
   828                 Log.log("ResultListener received " + iMsg);
       
   829                 CommsMessage response = new CommsMessage();
       
   830                 response.replyTo(aMessage);
       
   831                 response.setMessageId(602);
       
   832                 iComms.send(response);
       
   833                 Log.log("ResultListener sent " + response);
       
   834             }
       
   835             catch (Throwable t)
       
   836             {
       
   837                 t.printStackTrace();
       
   838             }
       
   839         }
       
   840     }
       
   841 
       
   842     private void assertResultMessage(InstallerResultMessage aMsg, String aName, int aValue)
       
   843     {
       
   844         assertTrue(aName + "!=" + aValue + " (" + aMsg.getIntValue(aName) + ")",
       
   845                    aMsg.getIntValue(aName) == aValue);
       
   846     }
       
   847 
       
   848     private void assertResultMessage(InstallerResultMessage aMsg, String aName, String aValue)
       
   849     {
       
   850         assertTrue(aName + "!=" + aValue + " (" + aMsg.getStringValue(aName) + ")",
       
   851                    aValue.equals(aMsg.getStringValue(aName)));
       
   852     }
       
   853 
       
   854     private void assertResultMessageNoValue(InstallerResultMessage aMsg, String aName)
       
   855     {
       
   856         try
       
   857         {
       
   858             String value = aMsg.getStringValue(aName);
       
   859             assertTrue("Unexpected value " + aName + "=" + value, false);
       
   860         }
       
   861         catch (IllegalArgumentException iae)
       
   862         {
       
   863             // Expected exception.
       
   864         }
       
   865         catch (Throwable t)
       
   866         {
       
   867             assertTrue("Incorrect exception for string value " + aName +
       
   868                        ": " + t, false);
       
   869         }
       
   870 
       
   871         try
       
   872         {
       
   873             int value = aMsg.getIntValue(aName);
       
   874             assertTrue("Unexpected value " + aName + "=" + value, false);
       
   875         }
       
   876         catch (IllegalArgumentException iae)
       
   877         {
       
   878             // Expected exception.
       
   879         }
       
   880         catch (Throwable t)
       
   881         {
       
   882             assertTrue("Incorrect exception for int value " + aName +
       
   883                        ": " + t, false);
       
   884         }
       
   885     }
       
   886 }