Skip to content

Commit

Permalink
Add the revisionnote to the Manage JSON
Browse files Browse the repository at this point in the history
  • Loading branch information
MKodde committed Aug 12, 2024
1 parent 72abbe2 commit 1778271
Show file tree
Hide file tree
Showing 10 changed files with 91 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public function generateForExistingEntity(
'type' => 'saml20_sp',
'id' => $entity->getId(),
];
$data['revisionnote'] = (string) new EntityEditRevisionNote(
$data['pathUpdates']['revisionnote'] = (string) new EntityEditRevisionNote(
$entity->getComments(),
$contact->getDisplayName(),
$contact->getEmailAddress(),
Expand Down Expand Up @@ -125,8 +125,6 @@ private function generateDataForNewEntity(ManageEntity $entity, string $workflow
$metadata += $this->generateAclData($entity);
$metadata['metadataurl'] = $entity->getMetaData()->getMetadataUrl();

$metadata['revisionnote'] = $entity->getRevisionNote();

return $metadata;
}

Expand Down Expand Up @@ -154,7 +152,6 @@ private function generateDataForExistingEntity(
}
$metadata = $this->generateArp($metadata, $entity);
$metadata['state'] = $workflowState;
$metadata['revisionnote'] = $entity->getRevisionNote();

// When publishing to production, the coin:exclude_from_push must be present and set to '1'. This prevents the
// entity from being pushed to EngineBlock. Once the entity is checked a final time, the flag is set to 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,11 @@ public function generateForExistingEntity(
ManageEntity $entity,
EntityDiff $differences,
string $workflowState,
Contact $contact,
string $updatedPart = '',
): array {
return $this->getStrategy($entity->getProtocol()->getProtocol())
->generateForExistingEntity($entity, $differences, $workflowState, $updatedPart);
->generateForExistingEntity($entity, $differences, $workflowState, $contact, $updatedPart);
}

public function generateEntityChangeRequest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public function generateForExistingEntity(
'type' => 'oidc10_rp',
'id' => $entity->getId(),
];
$data['revisionnote'] = (string) new EntityEditRevisionNote(
$data['pathUpdates']['revisionnote'] = (string) new EntityEditRevisionNote(
$entity->getComments(),
$contact->getDisplayName(),
$contact->getEmailAddress(),
Expand Down Expand Up @@ -155,7 +155,6 @@ private function generateDataForExistingEntity(
$this->privacyQuestionsMetadataGenerator->withMetadataPrefix();
$metadata += $this->privacyQuestionsMetadataGenerator->build($entity);

$metadata['revisionnote'] = $entity->getRevisionNote();
return $metadata;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public function generateForExistingEntity(
'type' => 'oidc10_rp',
'id' => $entity->getId(),
];
$data['revisionnote'] = (string) new EntityEditRevisionNote(
$data['pathUpdates']['revisionnote'] = (string) new EntityEditRevisionNote(
$entity->getComments(),
$contact->getDisplayName(),
$contact->getEmailAddress(),
Expand Down Expand Up @@ -159,8 +159,6 @@ private function generateDataForExistingEntity(
$this->privacyQuestionsMetadataGenerator->withMetadataPrefix();
$metadata += $this->privacyQuestionsMetadataGenerator->build($entity);

$metadata['revisionnote'] = $entity->getRevisionNote();

return $metadata;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public function generateForExistingEntity(
'active' => true,
'id' => $entity->getId(),
];
$data['revisionnote'] = (string) new EntityEditRevisionNote(
$data['pathUpdates']['revisionnote'] = (string) new EntityEditRevisionNote(
$entity->getComments(),
$contact->getDisplayName(),
$contact->getEmailAddress(),
Expand Down Expand Up @@ -143,8 +143,6 @@ private function generateDataForExistingEntity(
$this->privacyQuestionsMetadataGenerator->withMetadataPrefix();
$metadata += $this->privacyQuestionsMetadataGenerator->build($entity);

$metadata['revisionnote'] = $entity->getRevisionNote();

return $metadata;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ public function publish(
$entity,
$diff,
$this->manageConfig->getPublicationStatus()->getStatus(),
$contact,
$part
)
);
Expand Down
6 changes: 3 additions & 3 deletions tests/unit/Application/Metadata/JsonGeneratorStrategyTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ public function test_generate_for_existing_entity()

$entity->shouldReceive('getProtocol->getProtocol')->andReturn('saml');
$diff = m::mock(EntityDiff::class);
$result = $this->strategy->generateForExistingEntity($entity, $diff, 'prodaccepted');
$result = $this->strategy->generateForExistingEntity($entity, $diff, 'prodaccepted', m::mock(Contact::class));
$this->assertIsArray($result);

$entity->shouldReceive('getProtocol->getProtocol')->andReturn('oidcng');
$result = $this->strategy->generateForExistingEntity($entity, $diff, 'prodaccepted');
$result = $this->strategy->generateForExistingEntity($entity, $diff, 'prodaccepted', m::mock(Contact::class));
$this->assertIsArray($result);
}

Expand All @@ -104,6 +104,6 @@ public function test_add_invalid_strategy()
$this->expectException(JsonGeneratorStrategyNotFoundException::class);
$this->expectExceptionMessage('The requested JsonGenerator for protocol "saml30" is not registered');
$diff = m::mock(EntityDiff::class);
$this->strategy->generateForExistingEntity($entity, $diff, 'prodaccepted');
$this->strategy->generateForExistingEntity($entity, $diff, 'prodaccepted', m::mock(Contact::class));
}
}
55 changes: 43 additions & 12 deletions tests/unit/Application/Metadata/JsonGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,16 +133,19 @@ public function test_it_can_build_saml_metadata_for_existing_entities()
$entity = $this->createManageEntity();
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$metadata = $generator->generateForExistingEntity($entity, $diff, 'testaccepted');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('Alec Ann');
$contact->shouldReceive('getEmailAddress')->andReturn('aa@example.com');
$metadata = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact);
$metadata = $metadata['pathUpdates'];

$this->assertArrayNotHasKey('active', $metadata);
$this->assertArrayNotHasKey('type', $metadata);

$this->assertEquals('http://entityid', $metadata['entityid']);
$this->assertEquals('http://metadata', $metadata['metadataurl']);
$this->assertEquals('revisionnote', $metadata['revisionnote']);
$this->assertStringContainsString('Entity edited by user Alec Ann with email address "aa@example.com"', $metadata['revisionnote']);
$this->assertStringContainsString('revisionnote', $metadata['revisionnote']);
$this->assertEquals(['arp' => 'arp'], $metadata['arp']);


Expand Down Expand Up @@ -229,7 +232,11 @@ public function test_it_can_build_saml_data_for_existing_entities()
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact);

$expected = array (
'pathUpdates' =>
Expand All @@ -240,20 +247,23 @@ public function test_it_can_build_saml_data_for_existing_entities()
'metaDataFields.name:en' => 'Test Entity EN',
'metaDataFields.name:nl' => 'Test Entity NL',
'state' => 'testaccepted',
'revisionnote' => 'revisionnote',
'metaDataFields.contacts:2:givenName' => 'John Doe',
'metaDataFields.coin:exclude_from_push' => '0',
'privacy' => 'privacy',
),
'type' => 'saml20_sp',
'id' => 'manageId',

);

$this->addEmptyAscLocations(1, 'metaDataFields.', $expected['pathUpdates']);

$expected['pathUpdates']['metaDataFields.AssertionConsumerService:0:Binding'] = Constants::BINDING_HTTP_POST;
$expected['pathUpdates']['metaDataFields.AssertionConsumerService:0:Location'] = 'http://acs';

$this->assertStringContainsString('Entity edited by user John Doe with email address "jd@example.com"', $data['pathUpdates']['revisionnote']);
unset($data['pathUpdates']['revisionnote']);

$this->assertEquals($expected, $data);
}

Expand All @@ -269,7 +279,10 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_default_al
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact, 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(true, $data['pathUpdates']['allowedall']);
Expand All @@ -289,7 +302,10 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_allow_all(
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact, 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(true, $data['pathUpdates']['allowedall']);
Expand All @@ -309,7 +325,10 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_none()
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact, 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(false, $data['pathUpdates']['allowedall']);
Expand All @@ -330,7 +349,10 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_allow_sing
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact, 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(false, $data['pathUpdates']['allowedall']);
Expand Down Expand Up @@ -358,7 +380,10 @@ public function test_exclude_from_push_is_correctly_set()
->shouldReceive('isProduction')
->andReturn(true);

$data = $generator->generateForExistingEntity($entity, $diff, 'prodaccepted');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'prodaccepted', $contact);

$this->assertEquals('1', $data['pathUpdates']['metaDataFields.coin:exclude_from_push']);
}
Expand All @@ -382,7 +407,10 @@ public function test_exclude_from_push_is_correctly_set_include()
->shouldReceive('isProduction')
->andReturn(true);

$data = $generator->generateForExistingEntity($entity, $diff, 'prodaccepted');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'prodaccepted', $contact);

$this->assertEquals('0', $data['pathUpdates']['metaDataFields.coin:exclude_from_push']);
}
Expand All @@ -400,7 +428,10 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_allow_mult
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$contact = m::mock(Contact::class);
$contact->shouldReceive('getDisplayName')->andReturn('John Doe');
$contact->shouldReceive('getEmailAddress')->andReturn('jd@example.com');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $contact, 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(false, $data['pathUpdates']['allowedall']);
Expand Down
34 changes: 25 additions & 9 deletions tests/unit/Application/Metadata/OidcngJsonGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

use Mockery as m;
use Mockery\Adapter\Phpunit\MockeryTestCase;
use Mockery\MockInterface;
use Surfnet\ServiceProviderDashboard\Application\Metadata\JsonGenerator;
use Surfnet\ServiceProviderDashboard\Application\Metadata\JsonGenerator\ArpGenerator;
use Surfnet\ServiceProviderDashboard\Application\Metadata\JsonGenerator\PrivacyQuestionsMetadataGenerator;
Expand Down Expand Up @@ -81,7 +82,14 @@ public function test_it_can_build_oidcng_entity_data_for_new_entities()
$entity = $this->createManageEntity();
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact());

$note = $data['pathUpdates']['revisionnote'];
// First test the revisionnote (date part is not tested, it is not using a static (test) clock so only the first part is tested,
$this->assertStringContainsString('Entity edited by user John Doe with email address "j.doe@example.com"', $note);
// Then remove the revisiononte from the data and expected data.
unset($data['pathUpdates']['revisionnote']);

$this->assertEquals(
[
'type' => 'oidc10_rp',
Expand All @@ -94,7 +102,6 @@ public function test_it_can_build_oidcng_entity_data_for_new_entities()
'metaDataFields.contacts:2:surName' => 'Doe',
'metaDataFields.OrganizationName:nl' => 'Drop Supplies',
'metaDataFields.OrganizationDisplayName:en' => 'Drop Supplies',
'revisionnote' => 'revisionnote',
'privacy' => 'privacy'
],
],
Expand All @@ -117,8 +124,10 @@ public function test_it_can_build_oidcng_data_for_existing_entities()
$entity = $this->createManageEntity();
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact());

$this->assertStringContainsString('Entity edited by user John Doe with email address "j.doe@example.com"', $data['pathUpdates']['revisionnote']);
unset($data['pathUpdates']['revisionnote']);
$this->assertEquals(
array(
'pathUpdates' =>
Expand All @@ -132,7 +141,6 @@ public function test_it_can_build_oidcng_data_for_existing_entities()
'allowedResourceServers' => [

],
'revisionnote' => 'revisionnote',
'privacy' => 'privacy'
),
'type' => 'oidc10_rp',
Expand All @@ -155,7 +163,7 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_default_al
$entity = $this->createManageEntity();
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact(), 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(true, $data['pathUpdates']['allowedall']);
Expand All @@ -179,7 +187,7 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_allow_all(
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact(), 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(true, $data['pathUpdates']['allowedall']);
Expand All @@ -203,7 +211,7 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_none()
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact(), 'ACL');


$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
Expand All @@ -229,7 +237,7 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_allow_sing
]);
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact(), 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(false, $data['pathUpdates']['allowedall']);
Expand Down Expand Up @@ -257,7 +265,7 @@ public function test_it_can_build_acl_whitelist_for_existing_entities_allow_mult
$changedEntity = $this->createChangedManageEntity();
$diff = $entity->diff($changedEntity);

$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', 'ACL');
$data = $generator->generateForExistingEntity($entity, $diff, 'testaccepted', $this->getContact(), 'ACL');

$this->assertArrayHasKey('allowedall', $data['pathUpdates']);
$this->assertSame(false, $data['pathUpdates']['allowedall']);
Expand Down Expand Up @@ -334,4 +342,12 @@ private function createChangedManageEntity()
$entity = m::mock($entity);
return $entity;
}

private function getContact(): MockInterface&Contact
{
$mock = m::mock(Contact::class);
$mock->shouldReceive('getEmailAddress')->andReturn('j.doe@example.com');
$mock->shouldReceive('getDisplayName')->andReturn('John Doe');
return $mock;
}
}
Loading

0 comments on commit 1778271

Please sign in to comment.