reconTests.js revision 0e2f85c75c270eec9d148bab17911441d8843a2a
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne/**
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne *
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * Copyright (c) 2014 ForgeRock AS. All Rights Reserved
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne *
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * The contents of this file are subject to the terms
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * of the Common Development and Distribution License
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * (the License). You may not use this file except in
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * compliance with the License.
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne *
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * You can obtain a copy of the License at
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * http://forgerock.org/license/CDDLv1.0.html
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * See the License for the specific language governing
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * permission and limitations under the License.
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne *
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * When distributing Covered Code, include this CDDL
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * Header Notice in each file and include the License file
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * at http://forgerock.org/license/CDDLv1.0.html
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * If applicable, add the following below the CDDL Header,
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * with the fields enclosed by brackets [] replaced by
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * your own identifying information:
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne * "Portions Copyrighted [year] [name of copyright owner]"
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne */
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne/*global require, define, QUnit, $ */
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Brownedefine([
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne "sinon",
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne "org/forgerock/commons/ui/common/main/EventManager",
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne "org/forgerock/openidm/ui/admin/sync/SituationPolicyView",
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel "org/forgerock/openidm/ui/common/delegates/ConfigDelegate"
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel], function (sinon, eventManager, SituationPolicyView, ConfigDelegate) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne $("body").append("<div id='policyPattern'></div>");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne return {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne executeAll: function (server) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne // These three constants come from MappingBaseView and are the arguments passed into the SituationPolicyView render function.
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne // Should those arguments change than these need to be updated.
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne var sync = [{"target":"managed/user","properties":[{"target":"displayName","source":"cn"},{"target":"description","source":"description"},{"target":"givenName","source":"givenName"},{"target":"mail","source":"mail"},{"target":"telephoneNumber","source":"telephoneNumber"},{"target":"sn","source":"sn"},{"target":"userName","source":"uid"}],"source":"system/ldap/account","policies":[{"action":"UPDATE","situation":"CONFIRMED"},{"action":"UPDATE","situation":"FOUND"},{"action":"CREATE","situation":"ABSENT"},{"action":"EXCEPTION","situation":"AMBIGUOUS"},{"action":"CREATE","situation":"MISSING"},{"action":"DELETE","situation":"SOURCE_MISSING"},{"action":"IGNORE","situation":"UNQUALIFIED"},{"action":"IGNORE","situation":"UNASSIGNED"}],"name":"systemLdapAccounts_managedUser"},{"target":"system/ldap/account","links":"systemLdapAccounts_managedUser","properties":[{"target":"givenName","source":"givenName"},{"target":"sn","source":"sn"},{"target":"cn","source":"","transform":{"type":"text/javascript","source":"source.displayName || (source.givenName + ' ' + source.sn);"}},{"target":"uid","source":"userName"},{"target":"description","source":"description","condition":{"type":"text/javascript","source":"!!object.description"}},{"target":"mail","source":"mail"},{"target":"userPassword","transform":{"type":"text/javascript","source":"openidm.decrypt(source);"},"source":"password","condition":{"type":"text/javascript","source":"object.password != null"}},{"target":"telephoneNumber","source":"telephoneNumber","condition":{"type":"text/javascript","source":"!!object.telephoneNumber"}}],"source":"managed/user","onCreate":{"type":"text/javascript","source":"target.dn = 'uid=' + source.userName + ',ou=People,dc=example,dc=com';"},"policies":[{"action":"UPDATE","situation":"CONFIRMED"},{"action":"LINK","situation":"FOUND"},{"action":"CREATE","situation":"ABSENT"},{"action":"IGNORE","situation":"AMBIGUOUS"},{"action":"IGNORE","situation":"MISSING"},{"action":"DELETE","situation":"SOURCE_MISSING"},{"action":"IGNORE","situation":"UNQUALIFIED"},{"action":"IGNORE","situation":"UNASSIGNED"}],"name":"managedUser_systemLdapAccounts"}],
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne mapping = {"target":"managed/user","properties":[{"target":"displayName","source":"cn"},{"target":"description","source":"description"},{"target":"givenName","source":"givenName"},{"target":"mail","source":"mail"},{"target":"telephoneNumber","source":"telephoneNumber"},{"target":"sn","source":"sn"},{"target":"userName","source":"uid"}],"source":"system/ldap/account","policies":[{"action":"UPDATE","situation":"CONFIRMED"},{"action":"UPDATE","situation":"FOUND"},{"action":"CREATE","situation":"ABSENT"},{"action":"EXCEPTION","situation":"AMBIGUOUS"},{"action":"CREATE","situation":"MISSING"},{"action":"DELETE","situation":"SOURCE_MISSING"},{"action":"IGNORE","situation":"UNQUALIFIED"},{"action":"IGNORE","situation":"UNASSIGNED"}],"name":"systemLdapAccounts_managedUser"},
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne mappingName = "systemLdapAccounts_managedUser";
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne module("Admin Mapping tab, Recon sub-tab tests");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.asyncTest("Situational Policy Renders", function () {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.equal(SituationPolicyView.$el.children().length, 0, "There are no children in the container before render.");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne SituationPolicyView.render({sync: sync, mapping: mapping, mappingName: mappingName}, function() {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.ok(SituationPolicyView.$el.children().length > 0, "After rendering there are now child elements");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne // -1 because of the source row used to create the others is still on the page but hidden
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel QUnit.equal(SituationPolicyView.$el.find("#situationalPolicies table tbody tr.event-hook").length,
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne _.size(SituationPolicyView.model.allPatterns["Default Actions"].policies),
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel "All default situations are present");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.equal(_.size(SituationPolicyView.model.allPatterns),
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne SituationPolicyView.$el.find("#policyPatterns option").length,
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne "Patterns rendered are the same as the stored patterns");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel var messages = true;
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne _.each(SituationPolicyView.model.allPatterns["Default Actions"].policies, function(situation, index) {
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel if ($.t(situation.note) !== SituationPolicyView.$el.find("#situationalPolicies table tbody tr.event-hook:eq("+index+") td:eq(1) [data-title]").attr("data-title")) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne messages = false;
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.ok(messages, "The help tooltips have been set");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel QUnit.equal(SituationPolicyView.$el.find("#situationalPolicies table tbody .failure-display").length, 7, "There are 7 situations with error classes");
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel QUnit.equal(SituationPolicyView.$el.find("#situationalPolicies table tbody .warning-display").length, 3, "There are 3 situations with warning classes");
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel QUnit.equal(SituationPolicyView.$el.find("#situationalPolicies table tbody .success-display").length, 3, "There are 3 situations with success classes");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne var readOnly = true, defaultActions = true;
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne SituationPolicyView.$el.find("#policyPatterns").val("Read-only").change();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne _.each(SituationPolicyView.$el.find(".situationRow"), function(row, index) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne if ($(row).find(".action").val() !== "ASYNC" && index < SituationPolicyView.model.allPatterns["Read-only"].policies.length) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne readOnly = false
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.ok(readOnly, "When the pattern changes to Read-Only all actions are set to Async");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne SituationPolicyView.$el.find("#policyPatterns").val("Default Actions").change();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne _.each(SituationPolicyView.$el.find(".situationRow"), function(row, index) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne if ($(row).find(".action :selected").text().indexOf("★") < 0 && index < SituationPolicyView.model.allPatterns["Read-only"].policies.length) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne defaultActions = false
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.ok(defaultActions, "When the pattern changes to Default-Actions all actions are set to the starred value");
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel/*
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne SituationPolicyView.$el.find(".ABSENT .action").val("LINK");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne var callback = sinon.spy(eventManager, "sendEvent"),
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne mappingUpdated = false,
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne deferredRead = $.Deferred(),
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne deferredWrite = $.Deferred(),
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne stubbedRead = sinon.stub(ConfigDelegate, "readEntity", function () {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne return deferredRead.promise();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }),
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne stubbedWrite = sinon.stub(ConfigDelegate, "updateEntity", function (name, data) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne _.each(data.mappings, function(mapping) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne if(mapping.name === mappingName) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne _.each(mapping.policies, function(policy) {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne if (policy.action === "LINK" && policy.situation === "ABSENT") {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne mappingUpdated = true;
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.ok(mappingUpdated, "The policy mapping was updated properly.");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne return deferredWrite.promise();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne deferredRead.done(function() {
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne deferredWrite.resolve();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne SituationPolicyView.$el.find(".savePolicy").click();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne deferredRead.resolve({mappings: sync});
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.ok(callback.called, "The policy successfully saves");
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne stubbedRead.restore();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne stubbedWrite.restore();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne $("#policyPattern").remove();
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel */
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne QUnit.start();
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne });
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne }
7ed4684789d023e1d4ede1b0d4468b9724587466Elizabeth Browne };
01a229e011c0d84be34e967cf517d35a476c541aJake Feasel});