/** * Delete selected exchanges. * If exchanges == "*" get list of exchange from rabbitmq API * * @param $vhost * @param $exchanges */ public function deleteExchanges($vhost, $exchanges) { if ('*' === $exchanges) { //so you want to destroy all exchanges, as you whish, let me time to list'em all $exchanges = $this->exchangeManager->getAll(urlencode($vhost)); foreach ($exchanges as $key => $exchange) { if (0 === strpos($exchange['name'], 'amq') || !$exchange['name']) { unset($exchanges[$key]); } } } elseif (!$vhost) { throw new \InvalidArgumentException('If you want to delete certain exchange(s) you have to provide vhost'); } else { //few exchanges to delete, let stack them in array $exchanges = explode(',', $exchanges); array_walk($exchanges, function (&$item, $key, $vhost) { $item = ['vhost' => $vhost, 'name' => trim($item)]; }, $vhost); } if (0 == count($exchanges)) { $this->logger->error('No exchange found.'); return; } foreach ($exchanges as $exchange) { if (false === strpos($exchange['name'], 'amq') && $exchange['name']) { $this->exchangeManager->delete(urlencode($exchange['vhost']), $exchange['name']); } } }
/** * @dataProvider providerGetAll * @param $vhost * @param $expectedUrl */ public function testGetAll($vhost, $expectedUrl) { $manager = new ExchangeManager(); $manager->setClient($this->client); $this->client->expects($this->once())->method('query')->with(ClientInterface::METHOD_GET, $expectedUrl)->willReturn(json_encode(['exchanges' => 'test'])); $this->assertEquals(['exchanges' => 'test'], $manager->getAll($vhost)); }