Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

security exception while testing wifi on robotium

I am currently working on android testing with Robotium , When i execute following testcase in Android 2.3 emulator i'm getting an error " java.lang.SecurityException:WifiService: Neither user 10038 nor current process has android.permission.CHANGE_WIFI_STATE.".

Test code :

public void testScheduledPayments()
    {
        solo.clickOnButton(0);
        solo.enterText(0, "demo");
        solo.enterText(1,"password");
        solo.clickOnButton("Log In");
        WifiManager wifiMan = (WifiManager)   solo.getCurrentActivity().getSystemService(Context.WIFI_SERVICE);
        wifiMan.setWifiEnabled(false);
        solo.clickOnText("Payments");
        solo.clickInList(2);
        solo.waitForText("Loading paymnets");
        solo.clickInList(0);
        solo.clickOnMenuItem("Logout");
        solo.clickOnButton("Logout");
        solo.finishOpenedActivities();
    }

At My Manifest file :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tesaptra"
    android:versionCode="1"
    android:versionName="1.0">
        <uses-sdk android:minSdkVersion="10" />


    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.info.native" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />

    </application>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

</manifest>

And Here's My log cat file

java.lang.SecurityException: WifiService: Neither user 10038 nor current process has android.permission.CHANGE_WIFI_STATE.
at android.os.Parcel.readException(Parcel.java:1322)
at android.os.Parcel.readException(Parcel.java:1276)
at android.net.wifi.IWifiManager$Stub$Proxy.setWifiEnabled(IWifiManager.java:614)
at android.net.wifi.WifiManager.setWifiEnabled(WifiManager.java:713)
at com.testaptra.Payments.testScheduledPaymnets(Payments.java:113)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

I have added all the permissions to manifest.xml but no luck.Could you please help me if you are familiar with below issue?

Thanks in advance

like image 452
Valamburi Nadhan Avatar asked Jun 05 '13 06:06

Valamburi Nadhan


Video Answer


1 Answers

Permission must be set in target application. Permissions in test application are totally ignored. It means that instrumnetation apk has never more privileges than target application.

like image 152
maszter Avatar answered Oct 11 '22 15:10

maszter