public function testToArrayRemovesSshSession() { $server = Server::create(array('name' => 'appServer1.foo.bar', 'host' => 'foo.bar', 'port' => 22, 'username' => 'root', 'password' => '12341234')); /** @var Session $session */ $session = $this->getMockBuilder('Ssh\\Session')->disableOriginalConstructor()->getMock(); $server->setSession($session); $this->assertArrayNotHasKey('session', $server->toArray()); }
/** * Creates a server instance. * * @param array $server Server * * @return Server */ public function create(array $server) { $server = array_filter($server, function ($value) { return !is_null($value) || !empty($value); }); if (!array_key_exists('host', $server)) { throw new \DomainException('Host is missing for passed server.'); } if (!array_key_exists('name', $server)) { throw new \DomainException('Name is missing for passed server.'); } if (!array_key_exists('password', $server) && !array_key_exists('privateKey', $server)) { throw new \DomainException(sprintf("No password and no private key file given for server '%s'.", $server['name'])); } if (array_key_exists('password', $server) && array_key_exists('privateKey', $server)) { throw new \DomainException(sprintf("Both password and private key file given for server '%s'. Choose only one.", $server['name'])); } if (array_key_exists('password', $server) && !array_key_exists('username', $server)) { throw new \DomainException(sprintf("Password given but username is missing for server '%s'.", $server['name'])); } if (array_key_exists('privateKey', $server) && !array_key_exists('username', $server)) { throw new \DomainException(sprintf("Private key file given but username missing for server '%s'.", $server['name'])); } if (array_key_exists('privateKey', $server) && !array_key_exists('publicKey', $server)) { throw new \DomainException(sprintf("Private key file given but public key file missing for server '%s'.", $server['name'])); } if (array_key_exists('publicKey', $server) && !array_key_exists('privateKey', $server)) { throw new \DomainException(sprintf("Public key file given but private key file missing for server '%s'.", $server['name'])); } if (!array_key_exists('tags', $server) || empty($server['tags'])) { $server['tags'] = array('all'); } if (!array_key_exists('port', $server) || empty($server['port'])) { $server['port'] = 22; } $server = Server::create($server); $session = $this->sessionFactory->createFromServer($server); $server->setSession($session); return $server; }