|  | @@ 271-299 (lines=29) @@ | 
                                                            
                                    | 268 |  | 	 * | 
                                                            
                                    | 269 |  | 	 * @since 4.4.0 | 
                                                            
                                    | 270 |  | 	 */ | 
                                                            
                                    | 271 |  | 	public function test_disconnection_permission() { | 
                                                            
                                    | 272 |  |  | 
                                                            
                                    | 273 |  | 		$this->load_rest_endpoints_direct(); | 
                                                            
                                    | 274 |  |  | 
                                                            
                                    | 275 |  | 		// Current user doesn't have credentials, so checking permissions should fail | 
                                                            
                                    | 276 |  | 		$this->assertInstanceOf( 'WP_Error', Jetpack_Core_Json_Api_Endpoints::disconnect_site_permission_callback() ); | 
                                                            
                                    | 277 |  |  | 
                                                            
                                    | 278 |  | 		$user = $this->create_and_get_user(); | 
                                                            
                                    | 279 |  |  | 
                                                            
                                    | 280 |  | 		// Add Jetpack capability | 
                                                            
                                    | 281 |  | 		$user->add_cap( 'jetpack_disconnect' ); | 
                                                            
                                    | 282 |  |  | 
                                                            
                                    | 283 |  | 		// Setup global variables so this is the current user | 
                                                            
                                    | 284 |  | 		wp_set_current_user( $user->ID ); | 
                                                            
                                    | 285 |  |  | 
                                                            
                                    | 286 |  | 		// User is not admin, so this should still fail | 
                                                            
                                    | 287 |  | 		$this->assertInstanceOf( 'WP_Error', Jetpack_Core_Json_Api_Endpoints::manage_modules_permission_check() ); | 
                                                            
                                    | 288 |  |  | 
                                                            
                                    | 289 |  | 		// Set user as admin | 
                                                            
                                    | 290 |  | 		$user->set_role( 'administrator' ); | 
                                                            
                                    | 291 |  |  | 
                                                            
                                    | 292 |  | 		// Reset user and setup globals again to reflect the role change. | 
                                                            
                                    | 293 |  | 		wp_set_current_user( 0 ); | 
                                                            
                                    | 294 |  | 		wp_set_current_user( $user->ID ); | 
                                                            
                                    | 295 |  |  | 
                                                            
                                    | 296 |  | 		// User has capability so this should work this time | 
                                                            
                                    | 297 |  | 		$this->assertTrue( Jetpack_Core_Json_Api_Endpoints::disconnect_site_permission_callback() ); | 
                                                            
                                    | 298 |  |  | 
                                                            
                                    | 299 |  | 	} | 
                                                            
                                    | 300 |  |  | 
                                                            
                                    | 301 |  | 	/** | 
                                                            
                                    | 302 |  | 	 * Test permission to activate plugins. | 
                                                                                
                                |  | @@ 306-338 (lines=33) @@ | 
                                                            
                                    | 303 |  | 	 * | 
                                                            
                                    | 304 |  | 	 * @since 4.4.0 | 
                                                            
                                    | 305 |  | 	 */ | 
                                                            
                                    | 306 |  | 	public function test_plugin_activation_permission() { | 
                                                            
                                    | 307 |  |  | 
                                                            
                                    | 308 |  | 		$this->load_rest_endpoints_direct(); | 
                                                            
                                    | 309 |  |  | 
                                                            
                                    | 310 |  | 		// Current user doesn't have credentials, so checking permissions should fail | 
                                                            
                                    | 311 |  | 		$this->assertInstanceOf( 'WP_Error', REST_Connector::activate_plugins_permission_check() ); | 
                                                            
                                    | 312 |  |  | 
                                                            
                                    | 313 |  | 		$user = $this->create_and_get_user(); | 
                                                            
                                    | 314 |  |  | 
                                                            
                                    | 315 |  | 		// Add Jetpack capability | 
                                                            
                                    | 316 |  | 		$user->add_cap( 'jetpack_admin_page' ); | 
                                                            
                                    | 317 |  |  | 
                                                            
                                    | 318 |  | 		// Setup global variables so this is the current user | 
                                                            
                                    | 319 |  | 		wp_set_current_user( $user->ID ); | 
                                                            
                                    | 320 |  |  | 
                                                            
                                    | 321 |  | 		// Should fail because requires more capabilities | 
                                                            
                                    | 322 |  | 		$this->assertInstanceOf( 'WP_Error', REST_Connector::activate_plugins_permission_check() ); | 
                                                            
                                    | 323 |  |  | 
                                                            
                                    | 324 |  | 		// Add Jetpack capability | 
                                                            
                                    | 325 |  | 		$user->add_cap( 'activate_plugins' ); | 
                                                            
                                    | 326 |  | 		// Multisite's require additional primitive capabilities. | 
                                                            
                                    | 327 |  | 		if ( is_multisite() ) { | 
                                                            
                                    | 328 |  | 			$user->add_cap( 'manage_network_plugins' ); | 
                                                            
                                    | 329 |  | 		} | 
                                                            
                                    | 330 |  |  | 
                                                            
                                    | 331 |  | 		// Reset current user and setup global variables to refresh the capability we just added. | 
                                                            
                                    | 332 |  | 		wp_set_current_user( 0 ); | 
                                                            
                                    | 333 |  | 		wp_set_current_user( $user->ID ); | 
                                                            
                                    | 334 |  |  | 
                                                            
                                    | 335 |  | 		// User has capability so this should work this time | 
                                                            
                                    | 336 |  | 		$this->assertTrue( REST_Connector::activate_plugins_permission_check() ); | 
                                                            
                                    | 337 |  |  | 
                                                            
                                    | 338 |  | 	} | 
                                                            
                                    | 339 |  |  | 
                                                            
                                    | 340 |  | 	/** | 
                                                            
                                    | 341 |  | 	 * Test permission to disconnect Jetpack site for a user that is connected. |