48b8489b429f257d882d9ca20c357d74d3254cdd
[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         $page = curl_exec($ch);
74         curl_close($ch);
75
76         $this->assertNotFalse($page);
77         $this->assertNotContains('Fatal error', $page);
78         $this->assertNotContains('Notice:', $page);
79
80         return $page;
81     }
82
83     public function testAgeSort()
84     {
85         $page = $this->request('client/agesort.php');
86     }
87
88     public function testClient()
89     {
90         $page = $this->request('client/client.php');
91
92         // we could test many more calls to the client demo, but the upstream server is gone anyway...
93
94         $page = $this->request('client/client.php', 'POST', array('stateno' => '1'));
95     }
96
97     public function testComment()
98     {
99         $page = $this->request('client/comment.php');
100         $page = $this->request('client/client.php', 'POST', array('storyid' => '1'));
101     }
102
103     public function testIntrospect()
104     {
105         $page = $this->request('client/introspect.php');
106     }
107
108     public function testMail()
109     {
110         $page = $this->request('client/mail.php');
111         $page = $this->request('client/client.php', 'POST', array(
112             'server' => '',
113             "mailto" => '',
114             "mailsub" => '',
115             "mailmsg" => '',
116             "mailfrom" => '',
117             "mailcc" => '',
118             "mailbcc" => '',
119         ));
120     }
121
122     public function testSimpleCall()
123     {
124         $page = $this->request('client/simple_call.php');
125     }
126
127     public function testWhich()
128     {
129         $page = $this->request('client/which.php');
130     }
131
132     public function testWrap()
133     {
134         $page = $this->request('client/wrap.php');
135     }
136
137     public function testZopeTest()
138     {
139         $page = $this->request('client/zopetest.php');
140     }
141
142     public function testDiscussServer()
143     {
144         $page = $this->request('server/discuss.php');
145         $this->assertContains('<name>faultCode</name>', $page);
146         $this->assertContains('<int>105</int>', $page);
147     }
148
149     public function testProxyServer()
150     {
151         $page = $this->request('server/proxy.php');
152         $this->assertContains('<name>faultCode</name>', $page);
153         $this->assertContains('<int>105</int>', $page);
154     }
155 }