!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/qr.picotech.app/public_html_v3_3/backup/vendor/google/gax/tests/Tests/Unit/   drwxr-xr-x
Free 23.6 GB of 117.98 GB (20%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     RequestBuilderTest.php (13.48 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Copyright 2016 Google Inc.
 *
 * Licensed 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.
 */

namespace Google\ApiCore\Tests\Unit;

use 
Google\ApiCore\RequestBuilder;
use 
Google\ApiCore\Testing\MockRequestBody;
use 
Google\Protobuf\BytesValue;
use 
Google\Protobuf\Duration;
use 
Google\Protobuf\FieldMask;
use 
Google\Protobuf\Int64Value;
use 
Google\Protobuf\ListValue;
use 
Google\Protobuf\StringValue;
use 
Google\Protobuf\Struct;
use 
Google\Protobuf\Timestamp;
use 
Google\Protobuf\Value;
use 
GuzzleHttp\Psr7;
use 
PHPUnit\Framework\TestCase;

/**
 * @group core
 */
class RequestBuilderTest extends TestCase
{
    const 
SERVICE_NAME 'test.interface.v1.api';

    public function 
setUp()
    {
        
$this->builder = new RequestBuilder(
            
'www.example.com',
            
__DIR__ '/testdata/test_service_rest_client_config.php'
        
);
    }

    public function 
testMethodWithUrlPlaceholder()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithUrlPlaceholder'$message);
        
$uri $request->getUri();

        
$this->assertEmpty($uri->getQuery());
        
$this->assertEmpty((string) $request->getBody());
        
$this->assertEquals('/v1/message/foo'$uri->getPath());
    }

    public function 
testMethodWithBody()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$nestedMessage = new MockRequestBody();
        
$nestedMessage->setName('nested/foo');
        
$message->setNestedMessage($nestedMessage);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithBodyAndUrlPlaceholder'$message);
        
$uri $request->getUri();

        
$this->assertEmpty($uri->getQuery());
        
$this->assertEquals('/v1/message/foo'$uri->getPath());
        
$this->assertEquals(
            [
'name' => 'message/foo''nestedMessage' => ['name' => 'nested/foo']],
            
json_decode($request->getBody(), true)
        );
    }

    public function 
testMethodWithNestedMessageAsBody()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$nestedMessage = new MockRequestBody();
        
$nestedMessage->setName('nested/foo');
        
$message->setNestedMessage($nestedMessage);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithNestedMessageAsBody'$message);
        
$uri $request->getUri();

        
$this->assertEmpty($uri->getQuery());
        
$this->assertEquals('/v1/message/foo'$uri->getPath());
        
$this->assertEquals(
            [
'name' => 'nested/foo'],
            
json_decode($request->getBody(), true)
        );
    }

    public function 
testMethodWithScalarBody()
    {
        
$message = new MockRequestBody();
        
$message->setName('foo');

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithScalarBody'$message);

        
$this->assertEquals(
            
'"foo"',
            (string) 
$request->getBody()
        );
    }

    public function 
testMethodWithEmptyMessageInBody()
    {
        
$message = new MockRequestBody();
        
$nestedMessage = new MockRequestBody();
        
$message->setNestedMessage($nestedMessage);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithBody'$message);

        
$this->assertEquals(
            
'{"nestedMessage":{}}',
            
$request->getBody()
        );
    }

    public function 
testMethodWithEmptyMessageInNestedMessageBody()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$nestedMessage = new MockRequestBody();
        
$message->setNestedMessage($nestedMessage);
        
$emptyMessage = new MockRequestBody();
        
$nestedMessage->setNestedMessage($emptyMessage);


        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithNestedMessageAsBody'$message);

        
$this->assertEquals(
            
'{"nestedMessage":{}}',
            
$request->getBody()
        );
    }

    public function 
testMethodWithNestedUrlPlaceholder()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$nestedMessage = new MockRequestBody();
        
$nestedMessage->setName('nested/foo');
        
$message->setNestedMessage($nestedMessage);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithNestedUrlPlaceholder'$message);
        
$uri $request->getUri();

        
$this->assertEmpty($uri->getQuery());
        
$this->assertEquals('/v1/nested/foo'$uri->getPath());
        
$this->assertEquals(
            [
'name' => 'message/foo''nestedMessage' => ['name' => 'nested/foo']],
            
json_decode($request->getBody(), true)
        );
    }

    public function 
testMethodWithUrlRepeatedField()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$message->setRepeatedField(['bar1''bar2']);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithUrlPlaceholder'$message);
        
$uri $request->getUri();

        
$this->assertEmpty((string) $request->getBody());
        
$this->assertEquals('/v1/message/foo'$uri->getPath());
        
$this->assertEquals('repeatedField=bar1&repeatedField=bar2'$uri->getQuery());
    }

    public function 
testMethodWithHeaders()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithUrlPlaceholder'$message, [
            
'header1' => 'value1',
            
'header2' => 'value2'
        
]);

        
$this->assertEquals('value1'$request->getHeaderLine('header1'));
        
$this->assertEquals('value2'$request->getHeaderLine('header2'));
        
$this->assertEquals('application/json'$request->getHeaderLine('Content-Type'));
    }

    public function 
testMethodWithColon()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithColonInUrl'$message);
        
$uri $request->getUri();

        
$this->assertEmpty($uri->getQuery());
        
$this->assertEquals('/v1/message/foo:action'$uri->getPath());
    }

    public function 
testMethodWithMultipleWildcardsAndColonInUrl()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$message->setNumber(10);

        
$request $this->builder->build(
            
self::SERVICE_NAME '/MethodWithMultipleWildcardsAndColonInUrl',
            
$message
        
);
        
$uri $request->getUri();

        
$this->assertEmpty($uri->getQuery());
        
$this->assertEquals('/v1/message/foo/number/10:action'$uri->getPath());
    }

    public function 
testMethodWithSimplePlaceholder()
    {
        
$message = new MockRequestBody();
        
$message->setName('message-name');

        
$request $this->builder->build(
            
self::SERVICE_NAME '/MethodWithSimplePlaceholder',
            
$message
        
);
        
$uri $request->getUri();

        
$this->assertEquals('/v1/message-name'$uri->getPath());
    }

    public function 
testMethodWithAdditionalBindings()
    {
        
$message = new MockRequestBody();
        
$message->setName('message/foo');
        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithAdditionalBindings'$message);

        
$this->assertEquals('/v1/message/foo/additional/bindings'$request->getUri()->getPath());

        
$message->setName('different/format/foo');
        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithAdditionalBindings'$message);

        
$this->assertEquals('/v1/different/format/foo/additional/bindings'$request->getUri()->getPath());

        
$nestedMessage = new MockRequestBody();
        
$nestedMessage->setName('nested/foo');
        
$message->setNestedMessage($nestedMessage);
        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithAdditionalBindings'$message);

        
$this->assertEquals('/v2/nested/foo/additional/bindings'$request->getUri()->getPath());
    }

    public function 
testMethodWithSpecialJsonMapping()
    {
        
$bytesValue = (new BytesValue)
            ->
setValue('\000');
        
$durationValue = (new Duration)
            ->
setSeconds(9001)
            ->
setNanos(500000);

        
$fieldMask = (new FieldMask)
            ->
setPaths(['path1''path2']);
        
$int64Value = (new Int64Value)
            ->
setValue(100);
        
$listValue = (new ListValue)
            ->
setValues([
                (new 
Value)->setStringValue('val1'),
                (new 
Value)->setStringValue('val2')
            ]);
        
$stringValue = (new StringValue)
            ->
setValue('some-value');
        
$structValue = (new Struct)
            ->
setFields([
                
'test' => (new Value)->setStringValue('val5')
            ]);
        
$timestampValue = (new Timestamp)
            ->
setSeconds(9001);
        
$valueValue = (new Value)
            ->
setStringValue('some-value');

        
$message = (new MockRequestBody())
            ->
setBytesValue($bytesValue)
            ->
setDurationValue($durationValue)
            ->
setFieldMask($fieldMask)
            ->
setInt64Value($int64Value)
            ->
setListValue($listValue)
            ->
setStringValue($stringValue)
            ->
setStructValue($structValue)
            ->
setTimestampValue($timestampValue)
            ->
setValueValue($valueValue);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithSpecialJsonMapping'$message);
        
$uri $request->getUri();

        
$this->assertContains('listValue=val1&listValue=val2', (string) $uri);

        
$query Psr7\parse_query($uri->getQuery());


        
$this->assertEquals('XDAwMA=='$query['bytesValue']);
        
// @todo (dwsupplee) Investigate differences in native protobuf implementation
        // between v3.7.0 and v3.9.0 - this passed previously with the value
        // "9001.000500000s".
        
if (extension_loaded('protobuf')) {
            
$this->assertEquals('9001.000500000s'$query['durationValue']);
        } else {
            
$this->assertEquals('9001.000500s'$query['durationValue']);
        }
        
$this->assertEquals('path1,path2'$query['fieldMask']);
        
$this->assertEquals(100$query['int64Value']);
        
$this->assertEquals(['val1''val2'], $query['listValue']);
        
$this->assertEquals('some-value'$query['stringValue']);
        
$this->assertEquals('val5'$query['structValue.test']);
        
$this->assertEquals('1970-01-01T02:30:01Z'$query['timestampValue']);
        
$this->assertEquals('some-value'$query['valueValue']);
    }

    public function 
testMethodWithoutPlaceholders()
    {
        
$stringValue = (new StringValue)
            ->
setValue('some-value');

        
$fieldMask = (new FieldMask)
            ->
setPaths(['path1''path2']);

        
$message = (new MockRequestBody())
            ->
setStringValue($stringValue)
            ->
setFieldMask($fieldMask);

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithoutPlaceholders'$message);
        
$query Psr7\parse_query($request->getUri()->getQuery());

        
$this->assertEquals('path1,path2'$query['fieldMask']);
        
$this->assertEquals('some-value'$query['stringValue']);
    }

    public function 
testMethodWithComplexMessageInQueryString()
    {
        
$message = (new MockRequestBody())
            ->
setNestedMessage(
                (new 
MockRequestBody)
                    ->
setName('some-name')
                    ->
setNumber(10)
            );

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithoutPlaceholders'$message);
        
$query Psr7\parse_query($request->getUri()->getQuery());

        
$this->assertEquals('some-name'$query['nestedMessage.name']);
        
$this->assertEquals(10$query['nestedMessage.number']);
    }

    public function 
testMethodWithOneOfInQueryString()
    {
        
$message = (new MockRequestBody())
            ->
setField1('some-value');

        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithoutPlaceholders'$message);
        
$query Psr7\parse_query($request->getUri()->getQuery());

        
$this->assertEquals('some-value'$query['field1']);
    }

    
/**
     * @expectedException \Google\ApiCore\ValidationException
     * @expectedExceptionMessage Could not map bindings for test.interface.v1.api/MethodWithAdditionalBindings to any Uri template.
     */
    
public function testThrowsExceptionWithNonMatchingFormat()
    {
        
$message = new MockRequestBody();
        
$message->setName('invalid/name/format');
        
$request $this->builder->build(self::SERVICE_NAME '/MethodWithAdditionalBindings'$message);
    }

    
/**
     * @expectedException \Google\ApiCore\ValidationException
     * @expectedExceptionMessage Failed to build request, as the provided path (myResource/doesntExist) was not found in the configuration.
     */
    
public function testThrowsExceptionWithNonExistantMethod()
    {
        
$message = new MockRequestBody();
        
$this->builder->build('myResource/doesntExist'$message);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0043 ]--