blob: a1b94ddd0867d9f8789e6354aa0acd653b41be88 [file]
<?php
/*
*
* Copyright 2015 gRPC authors.
*
* 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.
*
*/
class ChannelCredentialsTest extends \PHPUnit\Framework\TestCase
{
public function setUp(): void
{
}
public function tearDown(): void
{
}
public function testCreateSslWith3Null()
{
$channel_credentials = Grpc\ChannelCredentials::createSsl(null, null,
null);
$this->assertNotNull($channel_credentials);
}
public function testCreateSslWith3NullString()
{
$channel_credentials = Grpc\ChannelCredentials::createSsl('', '', '');
$this->assertNotNull($channel_credentials);
}
public function testCreateSslHashingIsolation()
{
$cred1 = Grpc\ChannelCredentials::createSsl('ca1', 'key1', 'cert1');
$channel1 = new Grpc\Channel('localhost:1', ['credentials' => $cred1]);
if (!method_exists($channel1, 'getChannelInfo')) {
$this->markTestSkipped('GRPC_PHP_DEBUG not enabled');
}
$info1 = $channel1->getChannelInfo();
// Change CA
$cred2 = Grpc\ChannelCredentials::createSsl('ca2', 'key1', 'cert1');
$channel2 = new Grpc\Channel('localhost:1', ['credentials' => $cred2]);
$info2 = $channel2->getChannelInfo();
// Change Key
$cred3 = Grpc\ChannelCredentials::createSsl('ca1', 'key2', 'cert1');
$channel3 = new Grpc\Channel('localhost:1', ['credentials' => $cred3]);
$info3 = $channel3->getChannelInfo();
// Change Cert
$cred4 = Grpc\ChannelCredentials::createSsl('ca1', 'key1', 'cert2');
$channel4 = new Grpc\Channel('localhost:1', ['credentials' => $cred4]);
$info4 = $channel4->getChannelInfo();
// All Same
$cred5 = Grpc\ChannelCredentials::createSsl('ca1', 'key1', 'cert1');
$channel5 = new Grpc\Channel('localhost:1', ['credentials' => $cred5]);
$info5 = $channel5->getChannelInfo();
$this->assertNotEquals($info1['key'], $info2['key']);
$this->assertNotEquals($info1['key'], $info3['key']);
$this->assertNotEquals($info1['key'], $info4['key']);
$this->assertEquals($info1['key'], $info5['key']);
$channel1->close();
$channel2->close();
$channel3->close();
$channel4->close();
$channel5->close();
}
public function testCreateInsecure()
{
$channel_credentials = Grpc\ChannelCredentials::createInsecure();
$this->assertNull($channel_credentials);
}
public function testDefaultRootsPem()
{
Grpc\ChannelCredentials::setDefaultRootsPem("Pem-Content-Not-Verified");
$this->assertTrue(Grpc\ChannelCredentials::isDefaultRootsPemSet());
Grpc\ChannelCredentials::invalidateDefaultRootsPem();
$this->assertFalse(Grpc\ChannelCredentials::isDefaultRootsPemSet());
Grpc\ChannelCredentials::setDefaultRootsPem("Content-Not-Verified");
$this->assertTrue(Grpc\ChannelCredentials::isDefaultRootsPemSet());
}
public function testInvalidCreateSsl()
{
$this->expectException(\InvalidArgumentException::class);
$channel_credentials = Grpc\ChannelCredentials::createSsl([]);
}
public function testCreateCompositeWithDefault()
{
$cred1 = Grpc\ChannelCredentials::createDefault();
$cred2 = Grpc\CallCredentials::createFromPlugin(function($context) { return []; });
$channel_credentials = Grpc\ChannelCredentials::createComposite($cred1, $cred2);
$this->assertNotNull($channel_credentials);
}
public function testInvalidCreateComposite()
{
$this->expectException(\InvalidArgumentException::class);
$channel_credentials = Grpc\ChannelCredentials::createComposite(
'something', 'something');
}
}