Skip to content

Commit 469848f

Browse files
nikhilbalyancpg
authored andcommitted
Add AndroidManifest Permissions Test (#166)
1 parent 267cb0e commit 469848f

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ dependencies {
124124
}
125125
provided "com.squareup.dagger:dagger-compiler:1.2.5"
126126

127+
testCompile 'org.robolectric:robolectric:3.1.2'
128+
testCompile 'junit:junit:4.12'
129+
testCompile 'org.robolectric:shadows-multidex:3.0'
127130
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
128131
androidTestCompile 'com.android.support.test:runner:0.5'
129132
androidTestCompile 'com.android.support:support-annotations:25.3.1'
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package org.amahi.anywhere;
2+
3+
import org.hamcrest.Description;
4+
import org.hamcrest.StringDescription;
5+
import org.junit.Test;
6+
import org.junit.runner.RunWith;
7+
import org.robolectric.RobolectricTestRunner;
8+
import org.robolectric.annotation.Config;
9+
import org.robolectric.manifest.AndroidManifest;
10+
import org.robolectric.res.Fs;
11+
12+
import java.util.List;
13+
14+
/**
15+
* Test for checking permissions in {@link AndroidManifest}
16+
*/
17+
@RunWith(RobolectricTestRunner.class) // for the test suite when we will want to run this from the test suite
18+
@Config(constants = BuildConfig.class, sdk = 23)
19+
public class PermissionTest {
20+
21+
@Test
22+
public void permissionCheck() {
23+
AndroidManifest androidManifest = new AndroidManifest(Fs.fileFromPath("build/intermediates/manifests/full/debug/AndroidManifest.xml"), null, null);
24+
List<String> permissions = androidManifest.getUsedPermissions();
25+
26+
//List of expected permissions to be present in AndroidManifest.xml
27+
String[] expectedPermissions = {
28+
"android.permission.ACCESS_NETWORK_STATE",
29+
"android.permission.DOWNLOAD_WITHOUT_NOTIFICATION",
30+
"android.permission.INTERNET",
31+
"android.permission.READ_EXTERNAL_STORAGE",
32+
"android.permission.WRITE_EXTERNAL_STORAGE",
33+
"android.permission.AUTHENTICATE_ACCOUNTS",
34+
"android.permission.GET_ACCOUNTS",
35+
"android.permission.MANAGE_ACCOUNTS",
36+
"android.permission.USE_CREDENTIALS",
37+
"android.permission.WAKE_LOCK"
38+
};
39+
40+
//Checking expected permissions one by one
41+
for (String permission : expectedPermissions) {
42+
if (!permissions.contains(permission)) {
43+
showError(permission);
44+
}
45+
}
46+
}
47+
48+
/**
49+
* Method to display missing permission error.
50+
*/
51+
private void showError(String permission) {
52+
Description description = new StringDescription();
53+
description.appendText("Expected permission ")
54+
.appendText(permission)
55+
.appendText(" is missing from AndroidManifest.xml");
56+
57+
throw new AssertionError(description.toString());
58+
}
59+
}
60+
61+

0 commit comments

Comments
 (0)