Exemplo n.º 1
0
 function testEncodedParameters()
 {
     $url = new SimpleUrl("");
     $url->addRequestParameter("a", '?!"\'#~@[]{}:;<>,./|£$%^&*()_+-=');
     $this->assertIdentical($request = $url->getEncodedRequest(), "?a=%3F%21%22%27%23%7E%40%5B%5D%7B%7D%3A%3B%3C%3E%2C.%2F%7C%A3%24%25%5E%26%2A%28%29_%2B-%3D");
     $url = new SimpleUrl("?a=%3F%21%22%27%23%7E%40%5B%5D%7B%7D%3A%3B%3C%3E%2C.%2F%7C%A3%24%25%5E%26%2A%28%29_%2B-%3D");
     $request = $url->getRequest();
     $this->assertEqual($request["a"], '?!"\'#~@[]{}:;<>,./|£$%^&*()_+-=');
 }
Exemplo n.º 2
0
 function assertUrl($raw, $parts, $params = false, $coords = false)
 {
     if (!is_array($params)) {
         $params = array();
     }
     $url = new SimpleUrl($raw);
     $this->assertIdentical($url->getScheme(), $parts[0], "[{$raw}] scheme -> %s");
     $this->assertIdentical($url->getUsername(), $parts[1], "[{$raw}] username -> %s");
     $this->assertIdentical($url->getPassword(), $parts[2], "[{$raw}] password -> %s");
     $this->assertIdentical($url->getHost(), $parts[3], "[{$raw}] host -> %s");
     $this->assertIdentical($url->getPort(), $parts[4], "[{$raw}] port -> %s");
     $this->assertIdentical($url->getPath(), $parts[5], "[{$raw}] path -> %s");
     $this->assertIdentical($url->getTld(), $parts[6], "[{$raw}] tld -> %s");
     $this->assertIdentical($url->getEncodedRequest(), $parts[7], "[{$raw}] encoded -> %s");
     $this->assertIdentical($url->getFragment(), $parts[8], "[{$raw}] fragment -> %s");
     if ($coords) {
         $this->assertIdentical($url->getX(), $coords[0], "[{$raw}] x -> %s");
         $this->assertIdentical($url->getY(), $coords[1], "[{$raw}] y -> %s");
     }
 }
Exemplo n.º 3
0
 function assertUrl($raw, $parts, $params = false)
 {
     if (!is_array($params)) {
         $params = array();
     }
     $url = new SimpleUrl($raw);
     $this->assertIdentical($url->getScheme(), $parts[0], "[{$raw}] scheme->%s");
     $this->assertIdentical($url->getUsername(), $parts[1], "[{$raw}] username->%s");
     $this->assertIdentical($url->getPassword(), $parts[2], "[{$raw}] password->%s");
     $this->assertIdentical($url->getHost(), $parts[3], "[{$raw}] host->%s");
     $this->assertIdentical($url->getPort(), $parts[4], "[{$raw}] port->%s");
     $this->assertIdentical($url->getPath(), $parts[5], "[{$raw}] path->%s");
     $this->assertIdentical($url->getTld(), $parts[6], "[{$raw}] tld->%s");
     $this->assertIdentical($url->getEncodedRequest(), $parts[7], "[{$raw}] encoded->%s");
     $query = new SimpleQueryString();
     foreach ($params as $key => $value) {
         $query->add($key, $value);
     }
     $this->assertIdentical($url->getRequest(), $query, "[{$raw}] request->%s");
     $this->assertIdentical($url->getFragment(), $parts[8], "[{$raw}] fragment->%s");
 }
Exemplo n.º 4
0
 function testUrlWithRequestKeyEncoded()
 {
     $url = new SimpleUrl('/?foo%5B1%5D=bar');
     $this->assertEqual($url->getEncodedRequest(), '?foo%5B1%5D=bar');
     $url->addRequestParameter('a[1]', 'b[]');
     $this->assertEqual($url->getEncodedRequest(), '?foo%5B1%5D=bar&a%5B1%5D=b%5B%5D');
     $url = new SimpleUrl('/');
     $url->addRequestParameter('a[1]', 'b[]');
     $this->assertEqual($url->getEncodedRequest(), '?a%5B1%5D=b%5B%5D');
     // param name, looking like pair
     $url = new SimpleUrl('/');
     $url->addRequestParameter('foo[]=bar', '');
     $this->assertEqual($url->getEncodedRequest(), '?foo%5B%5D%3Dbar=');
     $url = new SimpleUrl('/?foo%5B%5D%3Dbar=');
     $this->assertEqual($url->getEncodedRequest(), '?foo%5B%5D%3Dbar=');
 }
Exemplo n.º 5
0
 /**
  * @param SimpleUrl
  * @param SimpleEncoding
  * @return k_ActingAsSimpleHttpResponse
  */
 protected function fetch(SimpleUrl $url, SimpleEncoding $parameters)
 {
     // extract primitives from SimpleTest abstractions
     $url_path = $url->getPath();
     $url_query = array();
     parse_str(str_replace('?', '', $url->getEncodedRequest()), $url_query);
     $method = $parameters->getMethod();
     $data = array();
     foreach ($parameters->getAll() as $pair) {
         $data[$pair->getKey()] = $pair->getValue();
     }
     if (!in_array($url->getHost(), array("", $this->servername))) {
         return new k_ActingAsSimpleHttpResponse($url, $data, array("HTTP/1.1 502"), "External URL requested: " . $url->asString(), $method);
     }
     // set up a mocked environment
     $server = array('SERVER_NAME' => $this->servername, 'REQUEST_METHOD' => $method, 'REQUEST_URI' => $url_path);
     $headers = new k_VirtualHeaders();
     $this->authenticator->addHeaders($headers, $url);
     foreach ($this->additional_headers as $line) {
         $headers->addHeaderLine($line);
     }
     $socket_buffer = new k_VirtualSocketBuffer();
     $parameters->writeHeadersTo($socket_buffer);
     foreach ($socket_buffer->getLines() as $line) {
         $headers->addHeaderLine($line);
     }
     $superglobals = new k_adapter_MockGlobalsAccess($url_query, $data, $server, $headers->headers());
     $response = k()->setContext(new k_HttpRequest("", null, $this->identity_loader, $this->language_loader, $this->translator_loader, $superglobals, $this->cookie_access, $this->session_access))->setComponentCreator($this->components)->setCharsetStrategy($this->charset_strategy)->run($this->root_class_name);
     $output = new k_SimpleOutputAccess();
     $response->out($output);
     return $output->toSimpleHttpResponse($url, $data, $method);
 }