2018-05-16 15:25:48 +08:00
< ? php
/*
* This file is part of Flarum .
*
2020-02-05 05:11:08 +08:00
* For detailed copyright and license information , please view the
* LICENSE file that was distributed with this source code .
2018-05-16 15:25:48 +08:00
*/
2019-01-02 05:17:09 +08:00
namespace Flarum\Tests\integration\api\Controller ;
2018-05-16 15:25:48 +08:00
2019-01-31 04:15:27 +08:00
use Carbon\Carbon ;
2018-05-16 15:25:48 +08:00
use Flarum\Api\Controller\ShowDiscussionController ;
use Flarum\Discussion\Discussion ;
2019-01-31 04:15:27 +08:00
use Flarum\User\User ;
2018-05-16 15:25:48 +08:00
class ShowDiscussionControllerTest extends ApiControllerTestCase
{
protected $controller = ShowDiscussionController :: class ;
/**
* @ var Discussion
*/
protected $discussion ;
2019-01-31 04:15:27 +08:00
public function setUp ()
2018-05-16 15:25:48 +08:00
{
2019-01-31 04:15:27 +08:00
parent :: setUp ();
$this -> prepareDatabase ([
'discussions' => [
[ 'id' => 1 , 'title' => 'Empty discussion' , 'created_at' => Carbon :: now () -> toDateTimeString (), 'user_id' => 2 , 'first_post_id' => null , 'comment_count' => 0 , 'is_private' => 0 ],
[ 'id' => 2 , 'title' => 'Discussion with post' , 'created_at' => Carbon :: now () -> toDateTimeString (), 'user_id' => 2 , 'first_post_id' => 1 , 'comment_count' => 1 , 'is_private' => 0 ],
[ 'id' => 3 , 'title' => 'Private discussion' , 'created_at' => Carbon :: now () -> toDateTimeString (), 'user_id' => 2 , 'first_post_id' => null , 'comment_count' => 0 , 'is_private' => 1 ],
],
'posts' => [
[ 'id' => 1 , 'discussion_id' => 2 , 'created_at' => Carbon :: now () -> toDateTimeString (), 'user_id' => 2 , 'type' => 'comment' , 'content' => '<t><p>a normal reply - too-obscure</p></t>' ],
],
'users' => [
$this -> normalUser (),
],
'groups' => [
$this -> guestGroup (),
$this -> memberGroup (),
],
'group_user' => [
[ 'user_id' => 2 , 'group_id' => 3 ],
],
'group_permission' => [
[ 'permission' => 'viewDiscussions' , 'group_id' => 2 ],
[ 'permission' => 'viewDiscussions' , 'group_id' => 3 ],
]
]);
2018-05-16 15:25:48 +08:00
}
/**
* @ test
*/
public function author_can_see_discussion ()
{
2019-01-31 04:15:27 +08:00
$this -> actor = User :: find ( 2 );
2018-05-16 15:25:48 +08:00
2019-01-31 04:15:27 +08:00
$response = $this -> callWith ([], [ 'id' => 1 ]);
2018-05-16 15:25:48 +08:00
$this -> assertEquals ( 200 , $response -> getStatusCode ());
}
/**
* @ test
*/
public function guest_cannot_see_empty_discussion ()
{
2019-01-31 04:15:27 +08:00
$response = $this -> callWith ([], [ 'id' => 1 ]);
2018-05-16 15:25:48 +08:00
2019-08-10 05:57:33 +08:00
$this -> assertEquals ( 404 , $response -> getStatusCode ());
2018-05-16 15:25:48 +08:00
}
/**
* @ test
*/
public function guest_can_see_discussion ()
{
2019-01-31 04:15:27 +08:00
$response = $this -> callWith ([], [ 'id' => 2 ]);
2018-05-16 15:25:48 +08:00
$this -> assertEquals ( 200 , $response -> getStatusCode ());
}
/**
* @ test
*/
public function guests_cannot_see_private_discussion ()
{
2019-08-10 05:57:33 +08:00
$response = $this -> callWith ([], [ 'id' => 3 ]);
2019-07-30 06:09:10 +08:00
2019-08-10 05:57:33 +08:00
$this -> assertEquals ( 404 , $response -> getStatusCode ());
2018-05-16 15:25:48 +08:00
}
}