2017-07-20 28 views
-1

我想創建PHPUnit中的請求,但我不知道如何在請求如何添加HTTP_CTVFNTUSERNAME在狂飲

use PHPUnit\Framework\TestCase; 
use CCP\Models\Services; 
use CCP\Models\ServicesUsers; 
use GuzzleHttp\Client; 

class ServicesTest extends TestCase { 

    protected $id; 
    protected $client; 

    protected function setUp(){ 
     $this->client = new Client([ 
       'base_uri' => 'http://10.97.109.103:8080', 
     ]); 
    } 

    public function testViewServiceUsers(){ 
     $response = $this->client->get('/api/user/services/owners/id/269/format/xml',[ 
       'headers' => [ 
         'Accept' => 'application/xml', 

       ] 
     ]); 
     $this->assertEquals(200, $response->getStatusCode()); 
     print_r($response->getBody()->getContents()); 
    } 

這是給我的錯誤應用程序錯誤通過這些變量,提的是HTTP_CTVFNTUSERNAME不見了。

我可以看到php SERVER變量沒有任何這些定義。

更新

$response = $this->client->get("/api/user/services/owners/id/{$id}/format/xml",[ 
       'headers' => [ 
         'Accept' => 'application/xml', 
       ], 
       //'Authorization' => ['Basic '.$credentials] 
       'CTVFNTDOMAIN'=>'vf-root', 
       'CTVFAPPLICATIONACCESS'=>'ALL,EROOM,IDM,VF_USER,SURVEY', 

       'CTVFNTUSERNAME' => 'UddinS2', 
     ]); 
     $this->assertEquals(200, $response->getStatusCode()); 
     $responseXml = \simplexml_load_string($response->getBody()->getContents(), "SimpleXMLElement", LIBXML_NOCDATA); 
     print_r($_SERVER); 
     $this->assertEquals('false', (string) $responseXml->header->error, "Error has been found"); 
     $this->assertEquals(1, (int) $responseXml->body->recordset->metadata->num_rows , "More than number of rows expected"); 
     $this->assertEquals($id, $responseXml->body->recordset->record->SERVICE_ID, "Record ID does not match"); 

$_SERVER的print_r不顯示我已設置的任何HTTP_頭。

Array 
(
    [USER] => wwwrun 
    [HOME] => /opt/SP/wwwrun/home 
    [ORACLE_HOME] => /usr/lib/oracle/12.1/client64/lib 
    [SCRIPT_NAME] => /index-api.php 
    [REQUEST_URI] => /api/user/services/owners/id/4126/format/xml 
    [QUERY_STRING] => url=user/services/owners/id/4126/format/xml 
    [REQUEST_METHOD] => GET 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [REDIRECT_QUERY_STRING] => url=user/services/owners/id/4126/format/xml 
    [REDIRECT_URL] => /api/user/services/owners/id/4126/format/xml 
    [REMOTE_PORT] => 57159 
    [SCRIPT_FILENAME] => /var/httpd/ccp-test/ccp-test.domain.com/docs/index-api.php 
    [SERVER_ADMIN] => [email protected] 
    [CONTEXT_DOCUMENT_ROOT] => /var/SP/httpd/ccp-test/ccp-test.domain.com/docs 
    [CONTEXT_PREFIX] => 
    [REQUEST_SCHEME] => http 
    [DOCUMENT_ROOT] => /var/SP/httpd/ccp-test/ccp-test.domain.com/docs 
    [REMOTE_ADDR] => x 
    [SERVER_PORT] => 80 
    [SERVER_ADDR] => x 
    [SERVER_NAME] => ccp-test.domain.com 
    [SERVER_SOFTWARE] => Apache 
    [SERVER_SIGNATURE] => 
    [LD_LIBRARY_PATH] => /opt/SP/apache-2.4/lib 
    [PATH] => /opt/SP/php7/bin:/opt/SP/php7/sbin:/opt/SP/php7/bin:/opt/SP/php7/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/networker/bin:/opt/networker/sbin:/opt/VRTSvcs/bin:/opt/VRTS/bin 
    [HTTP_ACCEPT] => application/xml 
    [HTTP_HOST] => x:8080 
    [HTTP_USER_AGENT] => GuzzleHttp/6.2.1 curl/7.29.0 PHP/7.0.17 
    [REDIRECT_STATUS] => 200 
    [FCGI_ROLE] => RESPONDER 
    [PHP_SELF] => /index-api.php 
    [REQUEST_TIME_FLOAT] => 1500890812.0252 
    [REQUEST_TIME] => 1500890812 
    [argv] => Array 
     (
      [0] => url=user/services/owners/id/4126/format/xml 
     ) 

    [argc] => 1 
) 
+1

我認爲這是一個好主意,以及添加到你的問題的實際錯誤信息。在PHP CLI中,'$ _SERVER'不包含HTTP頭條目(通常用'HTTP_'開始),這只是FYI。 – hakre

+0

我沒有得到任何php或guzzle錯誤,它更多的應用程序錯誤檢查這些頭。如果guzzle使用捲曲,這些標題可以設置,所以我怎麼可以設置它與guzzle? – shorif2000

回答

2

您已經設置了標頭Accept。只需添加任何缺少的:

$this->client->get('/api/user/services/owners/id/269/format/xml', [ 
    'headers' => [ 
     'Accept' => 'application/xml', 
     'CTVFNTUSERNAME' => 'some username', 
    ] 
]); 

你的申請提到HTTP_CTVFNTUSERNAME,因爲這是PHP店頭如何在$_SERVER全局變量名。實際的標題沒有HTTP_前綴。

+0

我已經試過這個,但我沒有看到標題,看到更新 – shorif2000

+0

再次看看。將標題放入「標題」參數(就像Accept標頭),而不是外部。 投降的人試圖幫助你,你真的想在這裏表現得如何? –

+0

意外按下,並鎖定,如果你編輯答案我可以改變它 – shorif2000