2017-07-20 5 views
-1

Ich versuche, eine Anfrage in PHPUnit zu schaffen, aber ich bin nicht sicher, wie diese Variable in der Anfrage einen Anwendungsfehler Dies wird gebenwie HTTP_CTVFNTUSERNAME in guzzle hinzufügen

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()); 
    } 

ich passieren Fehler, ist erwähnen HTTP_CTVFNTUSERNAME wird vermisst.

Ich kann sehen, PHP SERVER Variable hat keine dieser definiert.

Update

$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"); 

print_r von $_SERVER keine HTTP_ Header nicht zeigen, ich gesetzt haben.

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

Ich denke, es ist eine gute Idee, auch die eigentliche Fehlermeldung hinzufügen, die Sie auf die Frage erhalten. In PHP-CLI enthält '$ _SERVER' keine HTTP-Header-Einträge (die oft mit' HTTP_' beginnen), die nur FYI. – hakre

+0

ich bekomme keine php oder guzzle Fehler, es ist eher eine Anwendung Fehlerprüfung für diese Header. wenn guzzle curl verwendet, können diese headers gesetzt werden, also wie kann ich es mit guzzle einstellen? – shorif2000

Antwort

2

Sie setzen bereits den Header Accept. Fügen Sie einfach alle Fehlenden:

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

Ihre Bewerbung erwähnt HTTP_CTVFNTUSERNAME wie das ist, wie PHP speichert Namen in der $_SERVER globale Variable Header. Der aktuelle Header hat kein HTTP_ Präfix.

+0

Ich habe dies versucht, aber ich sehe nicht die Kopfzeile, siehe Update – shorif2000

+0

Werfen Sie einen Blick zurück. Fügen Sie Ihre Header in den "headers" -Parameter ein (genau wie den Accept-Header), anstatt nach außen. Willst du jemanden abstimmen, der dir wirklich helfen wollte, wie du dich hier verhalten willst? –

+0

versehentlich gedrückt, und es gesperrt, wenn Sie die Antwort bearbeiten, kann ich es ändern – shorif2000