!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_tdfonline/php/3ros/shindig/test/gadgets/   drwxr-xr-x
Free 14.58 GB of 61.93 GB (23.54%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     MakeRequestTest.php (11.88 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/**
 * Provides an implementation of RemoteContentFetcher which can be controlled
 * by unit tests and does not actually make any external requests.
 * RemoteContentRequest objects added to this class are added to an internal
 * FIFO queue.  Every time a request is sent to fetchRequest, the next
 * RemoteContentRequest object in the queue is returned as a response.
 * Requests sent to fetchRequest are also stored in a queue for later retrieval
 * and examination.
 */
class MockMakeRequestFetcher extends RemoteContentFetcher {
  private 
$responses;
  private 
$requests;

  
/**
   * Constructor.
   */
  
public function __construct() {
    
$this->responses = array();
    
$this->requests = array();
  }

  
/**
   * Adds a response object to an internal queue of responses.
   * @param RemoteContentRequest $response The response to return.
   */
  
public function enqueueResponse(RemoteContentRequest $response) {
    
$this->responses[] = $response;
  }

  
/**
   * Returns a request object that was sent to fetchRequest.  If multiple
   * requests have been sent to fetchRequest, they are returned by this
   * method in the order they were requested.
   * @return RemoteContentRequest
   */
  
public function dequeueRequest() {
    return 
array_shift($this->requests);
  }

  
/**
   * Fakes a content request to a remote server.
   * @param RemoteContentRequest $request  The external request information.
   * @return RemoteContentRequest The next response which was enqueued by
   *     calling enqueueResponse.
   */
  
public function fetchRequest(RemoteContentRequest $request) {
    
$this->requests[] = $request;
    return 
array_shift($this->responses);
  }

  
/**
   * Fakes multiple requests to a remote server.  Calls fetchRequest for
   * each request passed to this method.
   * @param array $requests An array of RemoteContentRequests.
   * @return An array of RemoteContentRequests corresponging to the responses
   *    returned for each of the request inputs.
   */
  
public function multiFetchRequest(Array $requests) {
    
$responses = array();
    foreach (
$requests as $key => $request) {
      
$responses[$key] = $this->fetchRequest($request);
    }
    return 
$responses;
  }
}

/**
 * Unit tests for the MakeRequest class.
 */
class MakeRequestTest extends PHPUnit_Framework_TestCase {
  private 
$fetcher;
  private 
$makeRequest;
  private 
$context;
  private 
$response;
  
  
/**
   * Prepares the environment before running a test.
   */
  
protected function setUp() {
    
parent::setUp();
    
$this->fetcher = new MockMakeRequestFetcher();
    
$this->makeRequest = new MakeRequest($this->fetcher);
    
$this->context = new GadgetContext('GADGET');

    
$this->response = new RemoteContentRequest('http://www.example.com');
    
$this->response->setHttpCode(200);
    
$this->response->setResponseContent("Basic response");
  }

  
/**
   * Cleans up the environment after running a test.
   */
  
protected function tearDown() {
    
parent::tearDown();
  }

  
/**
   * Executes a makeRequest call and returns the request object which would
   * have been sent externally (as opposed to the response).
   *
   * @param MakeRequestOptions $params
   * @param RemoteContentRequest $response The response to return for this
   *     request.
   * @return RemoteContentRequest The request object.
   */
  
protected function catchRequest(MakeRequestOptions $paramsRemoteContentRequest $response) {
    
$this->fetcher->enqueueResponse($response);
    
$result $this->makeRequest->fetch($this->context$params);
    return 
$this->fetcher->dequeueRequest();
  }

  
/**
   * Tests that makeRequest calls with an invalid url throw an exception.
   */
  
public function testInvalidUrl() {
    try {
      
$params = new MakeRequestOptions('invalidurl');
      
$this->makeRequest->fetch($params);
      
$this->fail("Calling makeRequest with an invalid url should throw an exception.");
    } catch (
Exception $ex) { }
  }

  
/**
   * Tests that normal requests specify a GET to the supplied URL.
   */
  
public function testBasicRequest() {
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setNoCache(true);

    
$request $this->catchRequest($params$this->response);
    
$this->assertContains($request->getUrl(), 'http://www.example.com');
    
$this->assertEquals('GET'$request->getMethod());
  }

  
/**
   * Tests that signed requests generate appropriate oauth_ and opensocial_
   * parameters.
   */
  
public function testSignedRequest() {
    
$token BasicSecurityToken::createFromValues('owner''viewer''app''domain''appUrl''1''default');
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setAuthz('SIGNED')
           ->
setNoCache(true)
           ->
setSecurityTokenString(urlencode(base64_encode($token->toSerialForm())));

    
$request $this->catchRequest($params$this->response);

    
$this->assertContains('oauth_signature'$request->getUrl());
    
$this->assertContains('oauth_signature_method=RSA-SHA1'$request->getUrl());
    
$this->assertContains('opensocial_app_url=appUrl'$request->getUrl());
    
$this->assertContains('opensocial_viewer_id=viewer'$request->getUrl());
    
$this->assertContains('opensocial_owner_id=owner'$request->getUrl());
    
$this->assertEquals('GET'$request->getMethod());
  }

  
/**
   * Tests that setting "sign_viewer" = false does not include viewer
   * information in the request.
   */
  
public function testSignedNoViewerRequest() {
    
$token BasicSecurityToken::createFromValues('owner''viewer''app''domain''appUrl''1''default');
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setAuthz('SIGNED')
           ->
setNoCache(true)
           ->
setSignViewer(false)
           ->
setSecurityTokenString(urlencode(base64_encode($token->toSerialForm())));

    
$request $this->catchRequest($params$this->response);

    
$this->assertContains('oauth_signature'$request->getUrl());
    
$this->assertNotContains('opensocial_viewer_id=viewer'$request->getUrl());
    
$this->assertContains('opensocial_owner_id=owner'$request->getUrl());
  }

  
/**
   * Tests that setting "format" = "FEED" parses an atom feed into a JSON
   * structure.
   */
  
public function testFeedRequest() {
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setResponseFormat('FEED')
           ->
setNoCache(true)
           ->
setNumEntries(2);

    
$sampleAtomPath realpath(dirname(__FILE__) . "/../misc/sampleAtomFeed.xml");
    
$sampleAtom file_get_contents($sampleAtomPath);
    
$this->response->setResponseContent($sampleAtom);
    
$this->fetcher->enqueueResponse($this->response);
    
$result $this->makeRequest->fetch($this->context$params);
    
$feedJson json_decode($result->getResponseContent(), true);

    
$this->assertArrayHasKey('Entry'$feedJson);
    
$this->assertEquals(2count($feedJson['Entry']));
    
$this->assertArrayHasKey('Title'$feedJson['Entry'][0]);
    
$this->assertEquals("Atom-Powered Robots Run Amok"$feedJson['Entry'][0]['Title']);
  }

  
/**
   * Tests that setting request headers are passed in the outgoing request.
   */
  
public function testRequestHeaders(){
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setRequestHeaders(array(
      
"Content-Type" => "application/json",
      
"Accept-Language" => "en-us"
    
));
    
$params->setNoCache(true);

    
$request $this->catchRequest($params$this->response);
    
$this->assertTrue($request->hasHeaders());
    
$this->assertEquals('application/json'$request->getHeader('Content-Type'));
    
$this->assertEquals('en-us'$request->getHeader('Accept-Language'));
  }

  
/**
   * Tests that setting invalid request headers are not passed in the outgoing
   * request.
   */
  
public function testInvalidRequestHeaders(){
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setRequestHeaders(array(
      
"Content-Type" => "application/json",
      
"Accept-Language" => "en-us",
      
"Host" => "http://www.evil.com",
      
"host" => "http://www.evil.com",
      
"HOST" => "http://www.evil.com",
      
"Accept" => "blah",
      
"Accept-Encoding" => "blah"
    
));
    
$params->setNoCache(true);

    
$request $this->catchRequest($params$this->response);
    
$this->assertTrue($request->hasHeaders());
    
$this->assertEquals('application/json'$request->getHeader('Content-Type'));
    
$this->assertEquals('en-us'$request->getHeader('Accept-Language'));

    
$this->assertNull($request->getHeader('Host'));
    
$this->assertNull($request->getHeader('Accept'));
    
$this->assertNull($request->getHeader('Accept-Encoding'));
  }

  
/**
   * Tests that setting request headers in a form urlencoded way are passed in the outgoing request.
   */
  
public function testFormEncodedRequestHeaders(){
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setFormEncodedRequestHeaders("Content-Type=application%2Fx-www-form-urlencoded&Accept-Language=en-us");
    
$params->setNoCache(true);

    
$request $this->catchRequest($params$this->response);
    
$this->assertTrue($request->hasHeaders());
    
$this->assertEquals('application/x-www-form-urlencoded'$request->getHeader('Content-Type'));
  }

  public function 
testResponseHeaders() {
    
$params = new MakeRequestOptions('http://www.example.com');
    
$params->setNoCache(true);

    
$headers = array(
      
'Content-Type' => 'text/plain'
    
);
    
$this->response->setResponseHeaders($headers);
    
$this->fetcher->enqueueResponse($this->response);

    
$result $this->makeRequest->fetch($this->context$params);
    
$response_headers $result->getResponseHeaders();

    
$this->assertArrayHasKey('Content-Type'$response_headers);
    
$this->assertEquals('text/plain'$response_headers['Content-Type']);
  }

  public function 
testCleanResponseHeaders() {
    
$response_headers = array(
      
'Content-Type' => 'text/plain',
      
'Set-Cookie' => 'blah',
      
'set-cookie' => 'blah',
      
'SET-COOKIE' => 'blah',
      
'sEt-cOoKiE' => 'blah',
      
'Accept-Ranges' => 'blah',
      
'Vary' => 'blah',
      
'Expires' => 'blah',
      
'Date' => 'blah',
      
'Pragma' => 'blah',
      
'Cache-Control' => 'blah',
      
'Transfer-Encoding' => 'blah',
      
'WWW-Authenticate' => 'blah'
    
);
    
    
$cleaned_headers $this->makeRequest->cleanResponseHeaders($response_headers);

    
$this->assertArrayHasKey('Content-Type'$cleaned_headers);
    
$this->assertEquals('text/plain'$cleaned_headers['Content-Type']);
    
$this->assertArrayNotHasKey('Set-Cookie'$cleaned_headers);
    
$this->assertArrayNotHasKey('set-cookie'$cleaned_headers);
    
$this->assertArrayNotHasKey('SET-COOKIE'$cleaned_headers);
    
$this->assertArrayNotHasKey('sEt-cOoKiE'$cleaned_headers);
    
$this->assertArrayNotHasKey('Accept-Ranges'$cleaned_headers);
    
$this->assertArrayNotHasKey('Vary'$cleaned_headers);
    
$this->assertArrayNotHasKey('Expires'$cleaned_headers);
    
$this->assertArrayNotHasKey('Date'$cleaned_headers);
    
$this->assertArrayNotHasKey('Pragma'$cleaned_headers);
    
$this->assertArrayNotHasKey('Cache-Control'$cleaned_headers);
    
$this->assertArrayNotHasKey('Transfer-Encoding'$cleaned_headers);
    
$this->assertArrayNotHasKey('WWW-Authenticate'$cleaned_headers);
  }
}


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.6542 ]--