Skip to content

Commit

Permalink
Merge pull request #240 from SURFnet/feature/update-service-status-on…
Browse files Browse the repository at this point in the history
…-entity-publication

Update the production connection status on publication
  • Loading branch information
MKodde authored Feb 21, 2019
2 parents 12f24ff + fa86eba commit dcac7ae
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@
use Surfnet\ServiceProviderDashboard\Application\Exception\NotAuthenticatedException;
use Surfnet\ServiceProviderDashboard\Application\Service\TicketService;
use Surfnet\ServiceProviderDashboard\Domain\Entity\Entity;
use Surfnet\ServiceProviderDashboard\Domain\Entity\Service;
use Surfnet\ServiceProviderDashboard\Domain\Mailer\Mailer;
use Surfnet\ServiceProviderDashboard\Domain\Repository\EntityRepository;
use Surfnet\ServiceProviderDashboard\Domain\Repository\PublishEntityRepository;
use Surfnet\ServiceProviderDashboard\Domain\Repository\ServiceRepository;
use Surfnet\ServiceProviderDashboard\Domain\ValueObject\Ticket;
use Surfnet\ServiceProviderDashboard\Infrastructure\DashboardBundle\Factory\MailMessageFactory;
use Surfnet\ServiceProviderDashboard\Infrastructure\Manage\Exception\PublishMetadataException;
Expand All @@ -41,6 +43,11 @@ class PublishEntityProductionCommandHandler implements CommandHandler
*/
private $repository;

/**
* @var EntityRepository
*/
private $serviceRepository;

/**
* @var PublishEntityRepository
*/
Expand Down Expand Up @@ -87,6 +94,7 @@ class PublishEntityProductionCommandHandler implements CommandHandler

/**
* @param EntityRepository $entityRepository
* @param ServiceRepository $serviceRepository
* @param PublishEntityRepository $publishClient
* @param TicketService $ticketService
* @param FlashBagInterface $flashBag
Expand All @@ -97,6 +105,7 @@ class PublishEntityProductionCommandHandler implements CommandHandler
*/
public function __construct(
EntityRepository $entityRepository,
ServiceRepository $serviceRepository,
PublishEntityRepository $publishClient,
TicketService $ticketService,
FlashBagInterface $flashBag,
Expand All @@ -107,6 +116,7 @@ public function __construct(
) {
Assert::stringNotEmpty($issueType, 'Please set "jira_issue_type_publication_request" in parameters.yml');
$this->repository = $entityRepository;
$this->serviceRepository = $serviceRepository;
$this->publishClient = $publishClient;
$this->ticketService = $ticketService;
$this->mailFactory = $mailFactory;
Expand Down Expand Up @@ -183,6 +193,14 @@ public function handle(PublishEntityProductionCommand $command)
if (array_key_exists('id', $publishResponse)) {
// Set entity status to published
$entity->setStatus(Entity::STATE_PUBLISHED);

// Also update the service status to requested, but only if current status is not-requested
$service = $entity->getService();
if ($service->getConnectionStatus() == Service::CONNECTION_STATUS_NOT_REQUESTED) {
$service->setConnectionStatus(Service::CONNECTION_STATUS_REQUESTED);
$this->serviceRepository->save($service);
}

$this->logger->info(sprintf('Updating status of "%s" to published', $entity->getNameEn()));
// Save changes made to entity
$this->repository->save($entity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ services:
class: Surfnet\ServiceProviderDashboard\Application\CommandHandler\Entity\PublishEntityProductionCommandHandler
arguments:
- '@Surfnet\ServiceProviderDashboard\Infrastructure\DashboardBundle\Repository\EntityRepository'
- '@Surfnet\ServiceProviderDashboard\Infrastructure\DashboardBundle\Repository\ServiceRepository'
- '@surfnet.manage.client.publish_client.prod_environment'
- '@Surfnet\ServiceProviderDashboard\Application\Service\TicketService'
- '@session.flash_bag'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
use Surfnet\ServiceProviderDashboard\Domain\Mailer\Message;
use Surfnet\ServiceProviderDashboard\Domain\Repository\EntityRepository;
use Surfnet\ServiceProviderDashboard\Domain\Repository\PublishEntityRepository;
use Surfnet\ServiceProviderDashboard\Domain\Repository\ServiceRepository;
use Surfnet\ServiceProviderDashboard\Infrastructure\DashboardBundle\Factory\MailMessageFactory;
use Surfnet\ServiceProviderDashboard\Infrastructure\DashboardSamlBundle\Security\Authentication\Token\SamlToken;
use Surfnet\ServiceProviderDashboard\Infrastructure\DashboardSamlBundle\Security\Identity;
Expand Down Expand Up @@ -82,10 +83,16 @@ class PublishEntityProductionCommandHandlerTest extends MockeryTestCase
*/
private $mailFactory;

/**
* @var ServiceRepository|Mock
*/
private $serviceRepository;

public function setUp()
{

$this->repository = m::mock(EntityRepository::class);
$this->serviceRepository = m::mock(ServiceRepository::class);
$this->publishEntityClient = m::mock(PublishEntityRepository::class);
$this->ticketService = m::mock(TicketService::class);
$this->flashBag = m::mock(FlashBagInterface::class);
Expand All @@ -96,6 +103,7 @@ public function setUp()

$this->commandHandler = new PublishEntityProductionCommandHandler(
$this->repository,
$this->serviceRepository,
$this->publishEntityClient,
$this->ticketService,
$this->flashBag,
Expand Down Expand Up @@ -132,6 +140,8 @@ public function test_it_can_publish()
$entity
->shouldReceive('setStatus')
->with(Entity::STATE_PUBLISHED);
$entity
->shouldReceive('getService->getConnectionStatus');

$issue = m::mock(Issue::class)->makePartial();
$issue->key = 'CXT-999';
Expand Down Expand Up @@ -199,6 +209,8 @@ public function test_it_can_republish()
$entity
->shouldReceive('setStatus')
->with(Entity::STATE_PUBLISHED);
$entity
->shouldReceive('getService->getConnectionStatus');

$issue = m::mock(Issue::class)->makePartial();
$issue->key = 'CXT-999';
Expand Down

0 comments on commit dcac7ae

Please sign in to comment.