6291fefb0a07371517ee9c05d0e258e1df6cc31e
[plcapi.git] / tests / 6DebuggerTest.php
1 <?php
2
3 include_once __DIR__ . '/parse_args.php';
4
5 class DebuggerTest extends PHPUnit_Framework_TestCase
6 {
7     public $args = array();
8
9     protected $baseUrl;
10
11     protected $testId;
12     /** @var boolean $collectCodeCoverageInformation */
13     protected $collectCodeCoverageInformation;
14     protected $coverageScriptUrl;
15
16     public function run(PHPUnit_Framework_TestResult $result = NULL)
17     {
18         $this->testId = get_class($this) . '__' . $this->getName();
19
20         if ($result === NULL) {
21             $result = $this->createResult();
22         }
23
24         $this->collectCodeCoverageInformation = $result->getCollectCodeCoverageInformation();
25
26         parent::run($result);
27
28         if ($this->collectCodeCoverageInformation) {
29             $coverage = new PHPUnit_Extensions_SeleniumCommon_RemoteCoverage(
30                 $this->coverageScriptUrl,
31                 $this->testId
32             );
33             $result->getCodeCoverage()->append(
34                 $coverage->get(), $this
35             );
36         }
37
38         // do not call this before to give the time to the Listeners to run
39         //$this->getStrategy()->endOfTest($this->session);
40
41         return $result;
42     }
43
44     public function setUp()
45     {
46         $this->args = argParser::getArgs();
47
48         $this->baseUrl = $this->args['LOCALSERVER'] . str_replace( '/demo/server/server.php', '/debugger/', $this->args['URI'] );
49
50         $this->coverageScriptUrl = 'http://' . $this->args['LOCALSERVER'] . '/' . str_replace( '/demo/server/server.php', 'tests/phpunit_coverage.php', $this->args['URI'] );
51     }
52
53     protected function request($file, $method = 'GET', $payload = '')
54     {
55         $url = $this->baseUrl . $file;
56
57         $ch = curl_init($url);
58         curl_setopt_array($ch, array(
59             CURLOPT_RETURNTRANSFER => true,
60             CURLOPT_FAILONERROR => true
61         ));
62         if ($method == 'POST')
63         {
64             curl_setopt_array($ch, array(
65                 CURLOPT_POST => true,
66                 CURLOPT_POSTFIELDS => $payload
67             ));
68         }
69         if ($this->collectCodeCoverageInformation)
70         {
71             curl_setopt($ch, CURLOPT_COOKIE, 'PHPUNIT_SELENIUM_TEST_ID=true');
72         }
73         if ($this->args['DEBUG'] > 0) {
74             curl_setopt($ch, CURLOPT_VERBOSE, 1);
75         }
76         $page = curl_exec($ch);
77         curl_close($ch);
78
79         $this->assertNotFalse($page);
80         $this->assertNotContains('Fatal error', $page);
81         $this->assertNotContains('Notice:', $page);
82
83         return $page;
84     }
85
86     public function testController()
87     {
88         $page = $this->request('controller.php');
89     }
90
91     /**
92      * @todo test:
93      * - list methods
94      * - describe a method
95      * - execute a method
96      * - wrap a method
97      */
98     public function testAction()
99     {
100         $page = $this->request('action.php');
101     }
102 }