diff --git a/manage-gui/src/components/metadata/ARP.jsx b/manage-gui/src/components/metadata/ARP.jsx index 93f36b41..55962d41 100644 --- a/manage-gui/src/components/metadata/ARP.jsx +++ b/manage-gui/src/components/metadata/ARP.jsx @@ -98,7 +98,7 @@ export default class ARP extends React.Component { if (arpConf.multiplicity) { this.setState({addInput: true, keyForNewInput: key}); } else { - this.onChange(key, [{value: "*", source: "idp", motivation: "", releaseAs: "", useAsNameId: false}]); + this.onChange(key, [{value: "*", source: "idp", motivation: "", release_as: "", use_as_nameid: false}]); this.setState({newArpAttributeAddedKey: key}); } }; @@ -110,9 +110,15 @@ export default class ARP extends React.Component { } else { const currentArpValues = [...this.props.arp.attributes[key] || []]; const motivation = this.getArpAttribute(currentArpValues, "motivation"); - const releaseAs = this.getArpAttribute(currentArpValues, "release_as"); - const useAsNameId = this.getArpAttribute(currentArpValues, "use_as_name_id", true); - currentArpValues.push({value: value, source: "idp", motivation: motivation, releaseAs: releaseAs, useAsNameId:useAsNameId}); + const release_as = this.getArpAttribute(currentArpValues, "release_as"); + const use_as_nameid = this.getArpAttribute(currentArpValues, "use_as_nameid", true); + currentArpValues.push({ + value: value, + source: "idp", + motivation: motivation, + release_as: release_as, + use_as_nameid: use_as_nameid + }); this.setState({addInput: false, keyForNewInput: undefined, value: "", newArpAttributeAddedKey: key}); this.onChange(key, currentArpValues); } @@ -121,7 +127,7 @@ export default class ARP extends React.Component { arpAttributeChange = (key, attribute, boolean = false) => e => { const value = boolean ? e.target.checked : e.target.value; const {attributes :arpAttributes} = this.props.arp; - if (attribute === "use_as_name_id") { + if (attribute === "use_as_nameid") { const newArpAttributes = {...arpAttributes}; Object.keys(newArpAttributes).forEach(arpKey => { arpAttributes[arpKey].forEach(arpValue => { @@ -290,8 +296,8 @@ export default class ARP extends React.Component { colSpan={2}>{I18n.t("arp.new_attribute_use_as_nameid", {key: this.nameOfKey(display, attributeKey)})} + onChange={this.arpAttributeChange(attributeKey, "use_as_nameid", true)} + value={this.getArpAttribute(attributeValues, "use_as_nameid", true)}/> } ) diff --git a/manage-server/src/test/java/manage/control/DatabaseControllerTest.java b/manage-server/src/test/java/manage/control/DatabaseControllerTest.java index 85c386cf..544dd57d 100644 --- a/manage-server/src/test/java/manage/control/DatabaseControllerTest.java +++ b/manage-server/src/test/java/manage/control/DatabaseControllerTest.java @@ -3,7 +3,9 @@ import manage.AbstractIntegrationTest; import org.junit.Test; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static io.restassured.RestAssured.given; import static org.apache.http.HttpStatus.SC_OK; @@ -12,6 +14,7 @@ public class DatabaseControllerTest extends AbstractIntegrationTest { @Test + @SuppressWarnings("unchecked") public void pushPreview() throws Exception { Map connections = given() .when() @@ -30,6 +33,17 @@ public void pushPreview() throws Exception { .get("coin")) .get("imported_from_edugain"); assertEquals(importFromEdugain, "1"); + + //ensure the correct ARP is exported + List> arpGivenNames = (List>) ((Map) ((Map) ((Map) connections.get("connections")) + .get("11")) + .get("arp_attributes")) + .get("urn:mace:dir:attribute-def:givenName"); + Map arpGivenName = arpGivenNames.get(0); + List keys = arpGivenName.keySet().stream().sorted().collect(Collectors.toList()); + assertEquals(List.of("motivation", "release_as", "use_as_nameid", "value"), keys); + assertEquals("aliasGivenName", arpGivenName.get("release_as")); + assertEquals(true, arpGivenName.get("use_as_nameid")); } } diff --git a/manage-server/src/test/resources/json/meta_data_seed.json b/manage-server/src/test/resources/json/meta_data_seed.json index 8e2bd5d0..c23275aa 100644 --- a/manage-server/src/test/resources/json/meta_data_seed.json +++ b/manage-server/src/test/resources/json/meta_data_seed.json @@ -558,7 +558,9 @@ { "source": "idp", "value": "*", - "motivation": "1234" + "motivation": "1234", + "release_as": "aliasGivenName", + "use_as_nameid": true } ] }, diff --git a/manage-server/src/test/resources/push/push.expected_connections.json b/manage-server/src/test/resources/push/push.expected_connections.json index a02f70f6..93adc742 100644 --- a/manage-server/src/test/resources/push/push.expected_connections.json +++ b/manage-server/src/test/resources/push/push.expected_connections.json @@ -7,7 +7,9 @@ "urn:mace:dir:attribute-def:givenName": [ { "value": "*", - "motivation": "1234" + "motivation": "1234", + "release_as": "aliasGivenName", + "use_as_nameid": true } ] },