acceptance_test.php

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 1,633 行 · 第 1/5 页

PHP
1,633
字号
        $this->assertText('e=[&\'"<>]');
        $this->assertText("i=[']");
    }
    
    function testFormActionRespectsBaseTag() {
        $this->get($this->samples() . 'base_tag/form.html');
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('go=[Go!]');
        $this->assertText('a=[]');
    }
}

class TestOfLiveMultiValueWidgets extends SimpleTestAcceptanceTest {
    function setUp() {
        $this->addHeader('User-Agent: SimpleTest ' . SimpleTest::getVersion());
    }
    
    function testDefaultFormValueSubmission() {
        $this->get($this->samples() . 'multiple_widget_form.html');
        $this->assertFieldByName('a', array('a2', 'a3'));
        $this->assertFieldByName('b', array('b2', 'b3'));
        $this->assertFieldByName('c[]', array('c2', 'c3'));
        $this->assertFieldByName('d', array('2', '3'));
        $this->assertFieldByName('e', array('2', '3'));
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('a=[a2, a3]');
        $this->assertText('b=[b2, b3]');
        $this->assertText('c=[c2, c3]');
        $this->assertText('d=[2, 3]');
        $this->assertText('e=[2, 3]');
    }
    
    function testSubmittingMultipleValues() {
        $this->get($this->samples() . 'multiple_widget_form.html');
        $this->setFieldByName('a', array('a1', 'a4'));
        $this->assertFieldByName('a', array('a1', 'a4'));
        $this->assertFieldByName('a', array('a4', 'a1'));
        $this->setFieldByName('b', array('b1', 'b4'));
        $this->assertFieldByName('b', array('b1', 'b4'));
        $this->setFieldByName('c[]', array('c1', 'c4'));
        $this->assertField('c[]', array('c1', 'c4'));
        $this->setFieldByName('d', array('1', '4'));
        $this->assertField('d', array('1', '4'));
        $this->setFieldByName('e', array('e1', 'e4'));
        $this->assertField('e', array('1', '4'));
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('a=[a1, a4]');
        $this->assertText('b=[b1, b4]');
        $this->assertText('c=[c1, c4]');
        $this->assertText('d=[1, 4]');
        $this->assertText('e=[1, 4]');
    }
    
    function testSettingByOptionValue() {
        $this->get($this->samples() . 'multiple_widget_form.html');
        $this->setFieldByName('d', array('1', '4'));
        $this->assertField('d', array('1', '4'));
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('d=[1, 4]');
    }
      
    function testSubmittingMultipleValuesByLabel() {
        $this->get($this->samples() . 'multiple_widget_form.html');
        $this->setField('Multiple selection A', array('a1', 'a4'));
        $this->assertField('Multiple selection A', array('a1', 'a4'));
        $this->assertField('Multiple selection A', array('a4', 'a1'));
        $this->setField('multiple selection C', array('c1', 'c4'));
        $this->assertField('multiple selection C', array('c1', 'c4'));
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('a=[a1, a4]');
        $this->assertText('c=[c1, c4]');
    }
  
    function testSavantStyleHiddenFieldDefaults() {
        $this->get($this->samples() . 'savant_style_form.html');
        $this->assertFieldByName('a', array('a0'));
        $this->assertFieldByName('b', array('b0'));
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('a=[a0]');
        $this->assertText('b=[b0]');
    }
    
    function testSavantStyleHiddenDefaultsAreOverridden() {
        $this->get($this->samples() . 'savant_style_form.html');
        $this->assertTrue($this->setFieldByName('a', array('a1')));
        $this->assertTrue($this->setFieldByName('b', 'b1'));
        $this->assertTrue($this->clickSubmit('Go!'));
        $this->assertText('a=[a1]');
        $this->assertText('b=[b1]');
    }
    
    function testSavantStyleFormSettingById() {
        $this->get($this->samples() . 'savant_style_form.html');
        $this->assertFieldById(1, array('a0'));
        $this->assertFieldById(4, array('b0'));
        $this->assertTrue($this->setFieldById(2, 'a1'));
        $this->assertTrue($this->setFieldById(5, 'b1'));
        $this->assertTrue($this->clickSubmitById(99));
        $this->assertText('a=[a1]');
        $this->assertText('b=[b1]');
    }
}

class TestOfFileUploads extends SimpleTestAcceptanceTest {
    function setUp() {
        $this->addHeader('User-Agent: SimpleTest ' . SimpleTest::getVersion());
    }

    function testSingleFileUpload() {
        $this->get($this->samples() . 'upload_form.html');
        $this->assertTrue($this->setField('Content:',
                dirname(__FILE__) . '/support/upload_sample.txt'));
        $this->assertField('Content:', dirname(__FILE__) . '/support/upload_sample.txt');
        $this->click('Go!');
        $this->assertText('Sample for testing file upload');
    }
    
    function testMultipleFileUpload() {
        $this->get($this->samples() . 'upload_form.html');
        $this->assertTrue($this->setField('Content:',
                dirname(__FILE__) . '/support/upload_sample.txt'));
        $this->assertTrue($this->setField('Supplemental:',
                dirname(__FILE__) . '/support/supplementary_upload_sample.txt'));
        $this->assertField('Supplemental:',
                dirname(__FILE__) . '/support/supplementary_upload_sample.txt');
        $this->click('Go!');
        $this->assertText('Sample for testing file upload');
        $this->assertText('Some more text content');
    }
    
    function testBinaryFileUpload() {
        $this->get($this->samples() . 'upload_form.html');
        $this->assertTrue($this->setField('Content:',
                dirname(__FILE__) . '/support/latin1_sample'));
        $this->click('Go!');
        $this->assertText(
                implode('', file(dirname(__FILE__) . '/support/latin1_sample')));
    }
}

class TestOfLiveHistoryNavigation extends SimpleTestAcceptanceTest {        
    function setUp() {
        $this->addHeader('User-Agent: SimpleTest ' . SimpleTest::getVersion());
    }
    
    function testRetry() {
        $this->get($this->samples() . 'cookie_based_counter.php');
        $this->assertPattern('/count: 1/i');
        $this->retry();
        $this->assertPattern('/count: 2/i');
        $this->retry();
        $this->assertPattern('/count: 3/i');
    }
    
    function testOfBackButton() {
        $this->get($this->samples() . '1.html');
        $this->clickLink('2');
        $this->assertTitle('2');
        $this->assertTrue($this->back());
        $this->assertTitle('1');
        $this->assertTrue($this->forward());
        $this->assertTitle('2');
        $this->assertFalse($this->forward());
    }
    
    function testGetRetryResubmitsData() {
        $this->assertTrue($this->get(
                $this->samples() . 'network_confirm.php?a=aaa'));
        $this->assertPattern('/Request method.*?<dd>GET<\/dd>/');
        $this->assertText('a=[aaa]');
        $this->retry();
        $this->assertPattern('/Request method.*?<dd>GET<\/dd>/');
        $this->assertText('a=[aaa]');
    }
    
    function testGetRetryResubmitsExtraData() {
        $this->assertTrue($this->get(
                $this->samples() . 'network_confirm.php',
                array('a' => 'aaa')));
        $this->assertPattern('/Request method.*?<dd>GET<\/dd>/');
        $this->assertText('a=[aaa]');
        $this->retry();
        $this->assertPattern('/Request method.*?<dd>GET<\/dd>/');
        $this->assertText('a=[aaa]');
    }
    
    function testPostRetryResubmitsData() {
        $this->assertTrue($this->post(
                $this->samples() . 'network_confirm.php',
                array('a' => 'aaa')));
        $this->assertPattern('/Request method.*?<dd>POST<\/dd>/');
        $this->assertText('a=[aaa]');
        $this->retry();
        $this->assertPattern('/Request method.*?<dd>POST<\/dd>/');
        $this->assertText('a=[aaa]');
    }
    
    function testGetRetryResubmitsRepeatedData() {
        $this->assertTrue($this->get(
                $this->samples() . 'network_confirm.php?a=1&a=2'));
        $this->assertPattern('/Request method.*?<dd>GET<\/dd>/');
        $this->assertText('a=[1, 2]');
        $this->retry();
        $this->assertPattern('/Request method.*?<dd>GET<\/dd>/');
        $this->assertText('a=[1, 2]');
    }
}

class TestOfLiveAuthentication extends SimpleTestAcceptanceTest {
    function setUp() {
        $this->addHeader('User-Agent: SimpleTest ' . SimpleTest::getVersion());
    }
    
    function testChallengeFromProtectedPage() {
        $this->get($this->samples() . 'protected/');
        $this->assertResponse(401);
        $this->assertAuthentication('Basic');
        $this->assertRealm('SimpleTest basic authentication');
        $this->assertRealm(new PatternExpectation('/simpletest/i'));
        $this->authenticate('test', 'secret');
        $this->assertResponse(200);
        $this->retry();
        $this->assertResponse(200);
    }
    
    function testTrailingSlashImpliedWithinRealm() {
        $this->get($this->samples() . 'protected/');
        $this->authenticate('test', 'secret');
        $this->assertResponse(200);
        $this->get($this->samples() . 'protected');
        $this->assertResponse(200);
    }
    
    function testTrailingSlashImpliedSettingRealm() {
        $this->get($this->samples() . 'protected');
        $this->authenticate('test', 'secret');
        $this->assertResponse(200);
        $this->get($this->samples() . 'protected/');
        $this->assertResponse(200);
    }
    
    function testEncodedAuthenticationFetchesPage() {
        $this->get('http://test:secret@www.lastcraft.com/test/protected/');
        $this->assertResponse(200);
    }

    function testEncodedAuthenticationFetchesPageAfterTrailingSlashRedirect() {
        $this->get('http://test:secret@www.lastcraft.com/test/protected');
        $this->assertResponse(200);
    }

    function testRealmExtendsToWholeDirectory() {
        $this->get($this->samples() . 'protected/1.html');
        $this->authenticate('test', 'secret');
        $this->clickLink('2');
        $this->assertResponse(200);
        $this->clickLink('3');
        $this->assertResponse(200);
    }
    
    function testRedirectKeepsAuthentication() {
        $this->get($this->samples() . 'protected/local_redirect.php');
        $this->authenticate('test', 'secret');
        $this->assertTitle('Simple test target file');
    }
    
    function testRedirectKeepsEncodedAuthentication() {
        $this->get('http://test:secret@www.lastcraft.com/test/protected/local_redirect.php');
        $this->assertResponse(200);
        $this->assertTitle('Simple test target file');
    }
    
    function testSessionRestartLosesAuthentication() {
        $this->get($this->samples() . 'protected/');
        $this->authenticate('test', 'secret');
        $this->assertResponse(200);
        $this->restart();
        $this->get($this->samples() . 'protected/');
        $this->assertResponse(401);
    }
}

class TestOfLoadingFrames extends SimpleTestAcceptanceTest {
    function setUp() {
        $this->addHeader('User-Agent: SimpleTest ' . SimpleTest::getVersion());
    }
    
    function testNoFramesContentWhenFramesDisabled() {
        $this->ignoreFrames();
        $this->get($this->samples() . 'one_page_frameset.html');
        $this->assertTitle('Frameset for testing of SimpleTest');
        $this->assertText('This content is for no frames only');
    }
    
    function testPatternMatchCanReadTheOnlyFrame() {
        $this->get($this->samples() . 'one_page_frameset.html');
        $this->assertText('A target for the SimpleTest test suite');
        $this->assertNoText('This content is for no frames only');
    }
    
    function testMessyFramesetResponsesByName() {
        $this->assertTrue($this->get(
                $this->samples() . 'messy_frameset.html'));
        $this->assertTitle('Frameset for testing of SimpleTest');
        
        $this->assertTrue($this->setFrameFocus('Front controller'));
        $this->assertResponse(200);
        $this->assertText('Simple test front controller');
        
        $this->assertTrue($this->setFrameFocus('One'));
        $this->assertResponse(200);
        $this->assertLink('2');
        
        $this->assertTrue($this->setFrameFocus('Frame links'));
        $this->assertResponse(200);
        $this->assertLink('Set one to 2');
        
        $this->assertTrue($this->setFrameFocus('Counter'));
        $this->assertResponse(200);
        $this->assertText('Count: 1');
        
        $this->assertTrue($this->setFrameFocus('Redirected'));
        $this->assertResponse(200);
        $this->assertText('r=rrr');
        
        $this->assertTrue($this->setFrameFocus('Protected'));
        $this->assertResponse(401);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?