@@ -26,6 +26,42 @@ def teardown
26
26
save_reports ( @driver )
27
27
end
28
28
29
+ # @since Appium 1.12.0
30
+ def test_permissions
31
+ @driver = @core . start_driver
32
+
33
+ package = 'io.appium.android.apis'
34
+ type = {
35
+ denied : 'denied' ,
36
+ granted : 'granted' ,
37
+ requested : 'requested'
38
+ }
39
+
40
+ action = {
41
+ grant : 'grant' ,
42
+ revoke : 'revoke'
43
+ }
44
+
45
+ granted_permissions = @driver . execute_script 'mobile: getPermissions' , { type : type [ :granted ] , appPackage : package }
46
+ assert granted_permissions . size == 14
47
+
48
+ assert @driver . execute_script ( 'mobile: getPermissions' , { type : type [ :denied ] , appPackage : package } ) . empty?
49
+ assert @driver . execute_script ( 'mobile: getPermissions' , { type : type [ :requested ] , appPackage : package } ) . size == 14
50
+
51
+ permissions = [ 'android.permission.READ_CONTACTS' ]
52
+ @driver . execute_script 'mobile: changePermissions' ,
53
+ { action : action [ :revoke ] , appPackage : package , permissions : permissions }
54
+
55
+ granted_permissions = @driver . execute_script 'mobile: getPermissions' , { type : type [ :granted ] , appPackage : package }
56
+ assert !granted_permissions . member? ( permissions . first )
57
+
58
+ @driver . execute_script 'mobile: changePermissions' ,
59
+ { action : action [ :grant ] , appPackage : package , permissions : permissions }
60
+
61
+ granted_permissions = @driver . execute_script 'mobile: getPermissions' , { type : type [ :granted ] , appPackage : package }
62
+ assert granted_permissions . member? ( permissions . first )
63
+ end
64
+
29
65
# @since Appium 1.10.0
30
66
def test_toast
31
67
skip unless @core . automation_name == :espresso
0 commit comments