Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
01/10/2018 06:59:00 PM (9 years ago)
Author:
djpaul
Message:

Activity: add function to check if a user has access to a single activity.

This change extracts the existing logic from bp_activity_screen_single_activity_permalink() into a new function, allowing it to be used in multiple places, such as the REST API, or a WP-CLI extension.

Fixes #7048

Props espellcaste

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/testcases/activity/functions.php

    r11737 r11806  
    14761476        }
    14771477
     1478        /**
     1479         * @group bp_activity_user_can_read
     1480         */
     1481        public function test_user_can_access_their_own_activity() {
     1482                $u = self::factory()->user->create();
     1483
     1484                $a = self::factory()->activity->create( array(
     1485                        'user_id' => $u,
     1486                ) );
     1487
     1488                $o = self::factory()->activity->get_object_by_id( $a );
     1489
     1490                $this->assertTrue( bp_activity_user_can_read( $o, $u ) );
     1491        }
     1492
     1493        /**
     1494         * @group bp_activity_user_can_read
     1495         */
     1496        public function test_user_cannot_access_someone_elses_activity() {
     1497                $u = self::factory()->user->create();
     1498                $u2 = self::factory()->user->create();
     1499
     1500                $a = self::factory()->activity->create( array(
     1501                        'user_id' => $u2,
     1502                ) );
     1503
     1504                $o = self::factory()->activity->get_object_by_id( $a );
     1505
     1506                $this->assertFalse( bp_activity_user_can_read( $o, $u ) );
     1507                $this->assertTrue( bp_activity_user_can_read( $o, $u2 ) );
     1508        }
     1509
     1510        /**
     1511         * @group bp_activity_user_can_read
     1512         */
     1513        public function test_admin_can_access_someone_elses_activity() {
     1514                $u = self::factory()->user->create();
     1515                $u2 = self::factory()->user->create( array( 'role' => 'administrator' ) );
     1516
     1517                $a = self::factory()->activity->create( array(
     1518                        'user_id' => $u,
     1519                ) );
     1520
     1521                $o = self::factory()->activity->get_object_by_id( $a );
     1522
     1523                $this->assertTrue( bp_activity_user_can_read( $o, $u ) );
     1524
     1525                $this->set_current_user( $u2 );
     1526                $this->assertTrue( bp_activity_user_can_read( $o, $u2 ) );
     1527        }
     1528
     1529        /**
     1530         * @group bp_activity_user_can_read
     1531         */
     1532        public function test_group_admin_access_someone_elses_activity_in_a_grou() {
     1533                $u  = self::factory()->user->create();
     1534                $u2 = self::factory()->user->create();
     1535
     1536                $g  = self::factory()->group->create();
     1537
     1538                $a = self::factory()->activity->create( array(
     1539                        'component' => buddypress()->groups->id,
     1540                        'user_id'   => $u,
     1541                        'item_id'   => $g,
     1542                ) );
     1543
     1544                $o = self::factory()->activity->get_object_by_id( $a );
     1545
     1546                $this->assertTrue( bp_activity_user_can_read( $o, $u ) );
     1547
     1548                self::add_user_to_group( $u2, $g );
     1549
     1550                $m1 = new BP_Groups_Member( $u2, $g );
     1551                $m1->promote( 'admin' );
     1552
     1553                $this->assertTrue( bp_activity_user_can_read( $o, $u2 ) );
     1554        }
     1555
     1556        /**
     1557         * @group bp_activity_user_can_read
     1558         */
     1559        public function test_non_member_can_access_to_someone_elses_activity_in_a_group() {
     1560                $u  = self::factory()->user->create();
     1561                $u2 = self::factory()->user->create();
     1562
     1563                $g  = self::factory()->group->create();
     1564
     1565                self::add_user_to_group( $u, $g );
     1566
     1567                $a = self::factory()->activity->create( array(
     1568                        'component' => buddypress()->groups->id,
     1569                        'user_id'   => $u,
     1570                        'item_id'   => $g,
     1571                ) );
     1572
     1573                $o = self::factory()->activity->get_object_by_id( $a );
     1574
     1575                $this->assertTrue( bp_activity_user_can_read( $o, $u ) );
     1576                $this->assertTrue( bp_activity_user_can_read( $o, $u2 ) );
     1577        }
     1578
     1579        /**
     1580         * @group bp_activity_user_can_read
     1581         */
     1582        public function test_user_access_to_his_activity_in_disabled_group() {
     1583                $u  = self::factory()->user->create();
     1584                $g  = self::factory()->group->create();
     1585
     1586                self::add_user_to_group( $u, $g );
     1587
     1588                $a = self::factory()->activity->create( array(
     1589                        'component' => buddypress()->groups->id,
     1590                        'user_id'   => $u,
     1591                        'item_id'   => $g,
     1592                ) );
     1593
     1594                $o = self::factory()->activity->get_object_by_id( $a );
     1595
     1596                groups_edit_group_settings( $g, 0, 'hidden' );
     1597
     1598                $this->assertTrue( bp_activity_user_can_read( $o, $u ) );
     1599
     1600                groups_edit_group_settings( $g, 0, 'private' );
     1601
     1602                $this->assertTrue( bp_activity_user_can_read( $o, $u ) );
     1603        }
     1604
    14781605        public function check_activity_caches() {
    14791606                foreach ( $this->acaches as $k => $v ) {
Note: See TracChangeset for help on using the changeset viewer.