1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
<?php
namespace PhpAmqpLib\Tests\Unit\Connection;
use PhpAmqpLib\Connection\AMQPConnectionConfig;
use PhpAmqpLib\Connection\AMQPConnectionFactory;
use PhpAmqpLib\Exception\AMQPIOException;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\TestCase;
class AMQPConnectionConfigTest extends TestCase
{
#[Test]
public function check_default_connection_name()
{
$config = new AMQPConnectionConfig();
$this->assertEquals('', $config->getConnectionName());
}
#[Test]
public function set_get_connection_name()
{
$config = new AMQPConnectionConfig();
$name = 'Connection_01';
$config->setConnectionName($name);
$this->assertEquals($name, $config->getConnectionName());
}
#[Test]
public function external_auth_with_user_credentials()
{
$this->expectException(\InvalidArgumentException::class);
$config = new AMQPConnectionConfig();
$config->setUser('');
$config->setPassword('');
$config->setLoginMethod(AMQPConnectionConfig::AUTH_EXTERNAL);
$config = new AMQPConnectionConfig();
$config->setLoginMethod(AMQPConnectionConfig::AUTH_EXTERNAL);
}
#[Test]
public function secure_with_incorrect_crypto_method()
{
$this->expectException(AMQPIOException::class);
$cert_dir = realpath(__DIR__ . "/../../certs");
$config = new AMQPConnectionConfig();
$config->setHost(HOST);
$config->setPort(5671);
$config->setUser(USER);
$config->setPassword(PASS);
$config->setVhost(VHOST);
$config->setIsSecure(true);
$config->setSslCryptoMethod(STREAM_CRYPTO_METHOD_ANY_SERVER);
$config->setSslVerify(true);
// CommonName is different make sure to not check
$config->setSslVerifyName(false);
$config->setSslCaCert($cert_dir . "/ca_certificate.pem");
$config->setSslKey($cert_dir . "/client_key.pem");
$config->setSslCert($cert_dir . "/client_certificate.pem");
AMQPConnectionFactory::create($config);
}
#[RequiresPhpunit('< 11')]
#[Test]
public function secure_with_correct_crypto_method()
{
$cert_dir = realpath(__DIR__ . "/../../certs");
$config = new AMQPConnectionConfig();
$config->setHost(HOST);
$config->setPort(5671);
$config->setUser(USER);
$config->setPassword(PASS);
$config->setVhost(VHOST);
$config->setSslCaCert($cert_dir . "/ca_certificate.pem");
$config->setSslKey($cert_dir . "/client_key.pem");
$config->setSslCert($cert_dir . "/client_certificate.pem");
// setIsSecure now also set correct crypto method to tls
$config->setIsSecure(true);
$config->setSslVerify(true);
// CommonName is different make sure to not check
$config->setSslVerifyName(false);
$connection = AMQPConnectionFactory::create($config);
$this->assertEquals(true, $connection->isConnected());
}
#[RequiresPhpunit('< 11')]
#[Test]
public function insecure_connection()
{
$config = new AMQPConnectionConfig();
$config->setHost(HOST);
$config->setPort(5671);
$config->setUser(USER);
$config->setPassword(PASS);
$config->setVhost(VHOST);
$config->setIsSecure(true);
// This will set sslverifyname to false
$config->setSslVerify(false);
$connection = AMQPConnectionFactory::create($config);
$this->assertEquals(true, $connection->isConnected());
}
#[Test]
public function check_invalid_port_number()
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Port number must be greater than 0');
$config = new AMQPConnectionConfig();
$config->setPort(-1);
}
#[Test]
public function check_invalid_login_method()
{
$this->expectException(\InvalidArgumentException::class);
$config = new AMQPConnectionConfig();
$config->setLoginMethod('INVALID_METHOD');
}
#[Test]
public function set_invalid_amqp_protocol()
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('AMQP protocol can be either "0.9.1" or "8.0"');
$config = new AMQPConnectionConfig();
$protocol = "invalid_protocol";
$config->setAMQPProtocol($protocol);
}
#[Test]
public function set_invalid_stream_context()
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Resource must be valid stream context');
$config = new AMQPConnectionConfig();
$invalidResource = tmpfile();
$config->setStreamContext($invalidResource);
}
}
|