90 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php declare(strict_types=1);
 | 
						|
class AdminPageTest extends ShimmiePHPUnitTestCase
 | 
						|
{
 | 
						|
    public function testAuth()
 | 
						|
    {
 | 
						|
        send_event(new UserLoginEvent(User::by_name(self::$anon_name)));
 | 
						|
        $page = $this->get_page('admin');
 | 
						|
        $this->assertEquals(403, $page->code);
 | 
						|
        $this->assertEquals("Permission Denied", $page->title);
 | 
						|
 | 
						|
        send_event(new UserLoginEvent(User::by_name(self::$user_name)));
 | 
						|
        $page = $this->get_page('admin');
 | 
						|
        $this->assertEquals(403, $page->code);
 | 
						|
        $this->assertEquals("Permission Denied", $page->title);
 | 
						|
 | 
						|
        send_event(new UserLoginEvent(User::by_name(self::$admin_name)));
 | 
						|
        $page = $this->get_page('admin');
 | 
						|
        $this->assertEquals(200, $page->code);
 | 
						|
        $this->assertEquals("Admin Tools", $page->title);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testLowercaseAndSetCase()
 | 
						|
    {
 | 
						|
        // Create a problem
 | 
						|
        $ts = time(); // we need a tag that hasn't been used before
 | 
						|
        send_event(new UserLoginEvent(User::by_name(self::$admin_name)));
 | 
						|
        $image_id_1 = $this->post_image("tests/pbx_screenshot.jpg", "TeStCase$ts");
 | 
						|
 | 
						|
        // Validate problem
 | 
						|
        $page = $this->get_page("post/view/$image_id_1");
 | 
						|
        $this->assertEquals("Post $image_id_1: TeStCase$ts", $page->title);
 | 
						|
 | 
						|
        // Fix
 | 
						|
        send_event(new AdminActionEvent('lowercase_all_tags'));
 | 
						|
 | 
						|
        // Validate fix
 | 
						|
        $this->get_page("post/view/$image_id_1");
 | 
						|
        $this->assert_title("Post $image_id_1: testcase$ts");
 | 
						|
 | 
						|
        // Change
 | 
						|
        $_POST["tag"] = "TestCase$ts";
 | 
						|
        send_event(new AdminActionEvent('set_tag_case'));
 | 
						|
 | 
						|
        // Validate change
 | 
						|
        $this->get_page("post/view/$image_id_1");
 | 
						|
        $this->assert_title("Post $image_id_1: TestCase$ts");
 | 
						|
    }
 | 
						|
 | 
						|
    # FIXME: make sure the admin tools actually work
 | 
						|
    public function testRecount()
 | 
						|
    {
 | 
						|
        global $database;
 | 
						|
 | 
						|
        // Create a problem
 | 
						|
        $ts = time(); // we need a tag that hasn't been used before
 | 
						|
        send_event(new UserLoginEvent(User::by_name(self::$admin_name)));
 | 
						|
        $database->execute(
 | 
						|
            "INSERT INTO tags(tag, count) VALUES(:tag, :count)",
 | 
						|
            ["tag"=>"tes$ts", "count"=>42]
 | 
						|
        );
 | 
						|
 | 
						|
        // Fix
 | 
						|
        send_event(new AdminActionEvent('recount_tag_use'));
 | 
						|
 | 
						|
        // Validate fix
 | 
						|
        $this->assertEquals(
 | 
						|
            0,
 | 
						|
            $database->get_one(
 | 
						|
                "SELECT count FROM tags WHERE tag = :tag",
 | 
						|
                ["tag"=>"tes$ts"]
 | 
						|
            )
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCommands()
 | 
						|
    {
 | 
						|
        send_event(new UserLoginEvent(User::by_name(self::$admin_name)));
 | 
						|
        ob_start();
 | 
						|
        send_event(new CommandEvent(["index.php", "help"]));
 | 
						|
        send_event(new CommandEvent(["index.php", "get-page", "post/list"]));
 | 
						|
        send_event(new CommandEvent(["index.php", "post-page", "post/list", "foo=bar"]));
 | 
						|
        send_event(new CommandEvent(["index.php", "get-token"]));
 | 
						|
        send_event(new CommandEvent(["index.php", "regen-thumb", "42"]));
 | 
						|
        ob_end_clean();
 | 
						|
 | 
						|
        // don't crash
 | 
						|
        $this->assertTrue(true);
 | 
						|
    }
 | 
						|
}
 |