4e790533e7dd1b1a6ae2d1a251d0f03d6fcebc97
[plcapi.git] / tests / 5DemofilesTest.php
1 <?php
2
3 include_once __DIR__ . '/parse_args.php';
4
5 class DemoFilesTest 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', '/demo/', $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 testAgeSort()
87     {
88         $page = $this->request('client/agesort.php');
89     }
90
91     public function testClient()
92     {
93         $page = $this->request('client/client.php');
94
95         // we could test many more calls to the client demo, but the upstream server is gone anyway...
96
97         $page = $this->request('client/client.php', 'POST', array('stateno' => '1'));
98     }
99
100     public function testComment()
101     {
102         $page = $this->request('client/comment.php');
103         $page = $this->request('client/client.php', 'POST', array('storyid' => '1'));
104     }
105
106     public function testIntrospect()
107     {
108         $page = $this->request('client/introspect.php');
109     }
110
111     public function testMail()
112     {
113         $page = $this->request('client/mail.php');
114         $page = $this->request('client/client.php', 'POST', array(
115             'server' => '',
116             "mailto" => '',
117             "mailsub" => '',
118             "mailmsg" => '',
119             "mailfrom" => '',
120             "mailcc" => '',
121             "mailbcc" => '',
122         ));
123     }
124
125     public function testSimpleCall()
126     {
127         $page = $this->request('client/simple_call.php');
128     }
129
130     public function testWhich()
131     {
132         $page = $this->request('client/which.php');
133     }
134
135     public function testWrap()
136     {
137         $page = $this->request('client/wrap.php');
138     }
139
140     public function testZopeTest()
141     {
142         $page = $this->request('client/zopetest.php');
143     }
144
145     public function testDiscussServer()
146     {
147         $page = $this->request('server/discuss.php');
148         $this->assertContains('<name>faultCode</name>', $page);
149         $this->assertRegexp('#<int>10(5|3)</int>#', $page);
150     }
151
152     public function testProxyServer()
153     {
154         $page = $this->request('server/proxy.php');
155         $this->assertContains('<name>faultCode</name>', $page);
156         $this->assertRegexp('#<int>10(5|3)</int>#', $page);
157     }
158 }