d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne/**
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * The contents of this file are subject to the terms of the Common Development and
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * Distribution License (the License). You may not use this file except in compliance with the
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * License.
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne *
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * specific language governing permission and limitations under the License.
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne *
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * When distributing Covered Software, include this CDDL Header Notice in each file and include
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * Header, with the fields enclosed by brackets [] replaced by your own identifying
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * information: "Portions copyright [year] [name of copyright owner]".
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne *
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * Copyright 2014-2015 ForgeRock AS.
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne */
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne/*global require, define, QUnit, $ */
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Brownedefine([
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne "org/forgerock/commons/ui/common/util/Constants",
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne "org/forgerock/commons/ui/common/main/Router",
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne "org/forgerock/commons/ui/common/main/EventManager",
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne "org/forgerock/openidm/ui/admin/managed/AddEditManagedView",
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne "org/forgerock/openidm/ui/common/delegates/ConfigDelegate",
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne "../mocks/resourceDetails"
c112934b5bf80ab7765a6a2a98fb7a93dd8038f0Jason Browne], function (constants, router, eventManager, addEditManagedView, ConfigDelegate, resourceDetails) {
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne return {
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne executeAll: function (server) {
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne module('Admin Managed Object UI Functions');
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne QUnit.asyncTest("Managed Objects Add/Edit", function () {
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne var stubbedSave,
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne saveCheck = false;
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne resourceDetails(server);
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne addEditManagedView.render([], function () {
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
1e80314f6b8449684f9baac9e8bcae33f0b4e507Jason Browne QUnit.equal(addEditManagedView.$el.find(".back-bar a").length, 1, "Return link loaded");
1e80314f6b8449684f9baac9e8bcae33f0b4e507Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne addEditManagedView.$el.find("#addManagedProperties").trigger("click");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
c6acaf789531718f174a4fc5b87aaed163b861dbJason Browne QUnit.equal(addEditManagedView.$el.find(".managed-property:visible").length, 1, "Add object type property successful");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel var removeConfirmed = $.Deferred();
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel // necessary for the confirm dialog
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel $(document).one("shown.bs.modal", function (e) {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel $(document).one("hidden.bs.modal", function (e) {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.equal(addEditManagedView.$el.find(".add-remove-block:visible").length, 0, "Delete object type property successful");
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel removeConfirmed.resolve();
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel });
c6acaf789531718f174a4fc5b87aaed163b861dbJason Browne $(".bootstrap-dialog .btn-primary").trigger("click");
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel });
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel addEditManagedView.$el.find(".managed-property:visible .remove-btn").trigger("click");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel removeConfirmed.then(function () {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel addEditManagedView.$el.find("#managedObjectName").val("testname");
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel addEditManagedView.$el.find("#managedObjectName").trigger("blur");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel $("#managedObjectName").val("role");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel _.delay(function () {
c6acaf789531718f174a4fc5b87aaed163b861dbJason Browne QUnit.ok(addEditManagedView.$el.find("#addEditManaged").is(":disabled") === false, "Submit button enabled");
c6acaf789531718f174a4fc5b87aaed163b861dbJason Browne addEditManagedView.$el.find("#addEditManaged").trigger("click");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel _.delay(function () {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.equal($("#managedErrorMessage").length, 1, "Duplicate name successfully detected");
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.ok(addEditManagedView.$el.find("#addEditManaged").is(":disabled") === true, "Submit button disabled");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel $("#managedObjectName").val("test1234");
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel addEditManagedView.$el.find("#managedObjectName").trigger("blur");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel _.delay(function () {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.ok(addEditManagedView.$el.find("#addEditManaged").is(":disabled") === false, "Submit button enabled after new name");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel // Create a complex Schema with nested values and set that to the JSONEditor instance
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel var jsonEditorFormat = {"title":"testTitle","description":"Test Description","properties":[{"propertyName":"stringString","title":"Test String","description":"Test string desciption","viewable":false,"searchable":false,"required":true,"type":""},{"propertyName":"testArrayOfStrings","title":"Test Array of String","description":"Description of the test array of strings","viewable":true,"searchable":true,"required":true,"type":{"itemType":""}},{"propertyName":"testBoolean","title":"Test Boolean","description":"Test boolean description","viewable":false,"searchable":true,"required":false,"type":""},{"propertyName":"testInteger","title":"Test Integer","description":"Description of the test integer","viewable":false,"searchable":false,"required":false,"type":""},{"propertyName":"testNumber","title":"Test Number","description":"Test Number description","viewable":true,"searchable":false,"required":false,"type":""},{"propertyName":"testObjectWithComplexProperties","title":"Test Object with Complex Properties","description":"The description for the test object containing complex properties","viewable":false,"searchable":false,"required":false,"type":[{"propertyName":"simpleProp","title":"","description":"","viewable":false,"searchable":false,"required":false,"type":""},{"propertyName":"complexArrayProp","title":"","description":"An array with an array of strings","viewable":false,"searchable":false,"required":false,"type":{"itemType":{"itemType":""}}}]},{"propertyName":"testResourceCollection","title":"Test Resource Collection","description":"Description of the test resource collection","viewable":false,"searchable":false,"required":false,"type":{"path":"test/path","label":"","query":{"queryFilter":"testQueryFilter","fields":["testField"],"sortKeys":["testKey","testKey2"]}}}]};
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel var jsonSchema = {"$schema":"http://forgerock.org/json-schema#","type":"object","title":"testTitle", "icon" :"", "description":"Test Description","properties":{"stringString":{"description":"Test string desciption","title":"Test String","viewable":false,"searchable":false,"type":"string"},"testArrayOfStrings":{"description":"Description of the test array of strings","title":"Test Array of String","viewable":true,"searchable":true,"type":"string"},"testBoolean":{"description":"Test boolean description","title":"Test Boolean","viewable":false,"searchable":true,"type":"string"},"testInteger":{"description":"Description of the test integer","title":"Test Integer","viewable":false,"searchable":false,"type":"string"},"testNumber":{"description":"Test Number description","title":"Test Number","viewable":true,"searchable":false,"type":"string"},"testObjectWithComplexProperties":{"description":"The description for the test object containing complex properties","title":"Test Object with Complex Properties","viewable":false,"searchable":false,"type":"string"},"testResourceCollection":{"description":"Description of the test resource collection","title":"Test Resource Collection","viewable":false,"searchable":false,"resourceCollection":{"path":"test/path","label":"","query":{"queryFilter":"testQueryFilter","fields":["testField"],"sortKeys":["testKey","testKey2"]}},"type":"string"}},"required":["stringString","testArrayOfStrings"],"order":["stringString","testArrayOfStrings","testBoolean","testInteger","testNumber","testObjectWithComplexProperties","testResourceCollection"]};
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel addEditManagedView.data.managedObjectSchema.setValue(jsonEditorFormat);
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel // On save JSONEditor format is converted into valid schema: http://forgerock.org/json-schema
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel stubbedSave = sinon.stub(ConfigDelegate, "updateEntity", function(name, managedObject){
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel if (name === "managed") {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel var savedObj = _.find(managedObject.objects, function(obj) {
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel return obj.name === "test1234";
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel });
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.deepEqual(savedObj.schema, jsonSchema, "JSONEditor JSON has converted properly into ForgeRock Schema");
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel }
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel saveCheck = true;
c6acaf789531718f174a4fc5b87aaed163b861dbJason Browne });
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel addEditManagedView.$el.find("#addEditManaged").trigger("click");
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.ok(saveCheck, "Save successful");
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel stubbedSave.restore();
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel QUnit.start();
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel }, 10);
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel }, 10);
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel }, 10);
5b719c5e4b473f6a92d3797251b95e04d2a2168cElizabeth Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel });
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne });
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne });
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne }
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne };
d1a2899a06be1eab885056aeda85adcd67c010b0Jason Browne
75d0e6897931d0d08f4d64dc1420ce03576b49cbJake Feasel});