diff --git a/build-system/pom.xml b/build-system/pom.xml index ffd76e1170e..46ec9da9861 100644 --- a/build-system/pom.xml +++ b/build-system/pom.xml @@ -133,6 +133,12 @@ org.reflections reflections ${reflections.version} + + + com.google.guava + guava + + @@ -1375,6 +1381,10 @@ io.netty netty-all + + com.google.guava + guava + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index d453442ee02..2e571a53a31 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -2287,9 +2287,6 @@ public boolean isMenuActive(WebPage page) { private void addCollectionsMenuItems(List menu, QName type, Class redirectToPage) { List objectViews = getCompiledUserProfile().findAllApplicableObjectCollectionViews(type); - if (objectViews == null) { - return; - } List collectionMenuItems = new ArrayList<>(objectViews.size()); objectViews.forEach(objectView -> { CollectionRefSpecificationType collectionRefSpec = objectView.getCollection(); diff --git a/icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/DummyObject.java b/icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/DummyObject.java index 5019df8318a..d251bd30f2e 100644 --- a/icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/DummyObject.java +++ b/icf-connectors/dummy-resource/src/main/java/com/evolveum/icf/dummy/resource/DummyObject.java @@ -466,6 +466,9 @@ public String debugDump(int indent) { DebugUtil.indentDebugDump(sb, indent); sb.append(getClass().getSimpleName()); sb.append(": ").append(name); + if (id != null && !id.equals(name)) { + sb.append(" (").append(id).append(")"); + } if (!auxiliaryObjectClassNames.isEmpty()) { sb.append("\n"); DebugUtil.debugDumpWithLabelToString(sb, "Auxiliary object classes", auxiliaryObjectClassNames, indent + 1); diff --git a/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java b/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java index a4c8005fa43..6fd81244ee9 100644 --- a/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java +++ b/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java @@ -437,7 +437,6 @@ public interface Item extends It PartiallyResolvedItem findPartial(ItemPath path); - /** * Creates specific subclass of ItemDelta appropriate for type of item that this definition * represents (e.g. PropertyDelta, ContainerDelta, ...) @@ -448,7 +447,6 @@ public interface Item extends It /** * Accepts a visitor that visits each item/value on the way to the structure root. - * @param visitor */ void acceptParentVisitor(@NotNull Visitor visitor); @@ -479,7 +477,8 @@ public interface Item extends It static Collection cloneCollection(Collection items) { Collection clones = new ArrayList<>(items.size()); for (T item: items) { - clones.add((T)item.clone()); + //noinspection unchecked + clones.add((T)item.clone()); } return clones; } @@ -488,9 +487,11 @@ static Collection cloneCollection(Collection items) { * Sets all parents to null. This is good if the items are to be "transplanted" into a * different Containerable. */ + @SuppressWarnings("unused") static Collection resetParentCollection(Collection items) { for (T item: items) { - item.setParent(null); + //noinspection unchecked + item.setParent(null); } return items; } @@ -527,6 +528,7 @@ static Collection resetParentCollection(Collection items) boolean hasNoValues(); + @SuppressWarnings("unused") static boolean hasNoValues(Item item) { return item == null || item.getValues().isEmpty(); } diff --git a/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/equivalence/ParameterizedEquivalenceStrategy.java b/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/equivalence/ParameterizedEquivalenceStrategy.java index f21187991eb..403d3c908b1 100644 --- a/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/equivalence/ParameterizedEquivalenceStrategy.java +++ b/infra/prism-api/src/main/java/com/evolveum/midpoint/prism/equivalence/ParameterizedEquivalenceStrategy.java @@ -23,6 +23,7 @@ * Basically, REAL_VALUE is oriented towards the effective content of the item or value. * Contrary to IGNORE_METADATA it ignores element names and reference filters (if OID is present). */ +@SuppressWarnings("unused") public class ParameterizedEquivalenceStrategy implements EquivalenceStrategy { /** @@ -183,6 +184,18 @@ private static void putIntoNiceNames(ParameterizedEquivalenceStrategy strategy, private boolean consideringReferenceFilters; // F private boolean compareElementNames; // E + /** + * Whether we hash runtime-schema items. Setting this to "true" is dangerous because these can hold unparsed (raw) values + * so hashing them can break equals-hashcode contract. (See MID-5851.) Note that although statically (compile-time) + * defined items can hold raw values as well the probability is much lesser. + * + * This excludes e.g. attributes, extension items and resource/connector configuration elements. + * + * On the other hand we must be a bit careful because if we exclude too much from hashing, we can run into + * performance issues (see MID-5852). + */ + private boolean hashRuntimeSchemaItems; // R + public String getDescription() { return (literalDomComparison ? "L" : "-") + (consideringOperationalData ? "O" : "-") + @@ -190,10 +203,10 @@ public String getDescription() { (consideringDifferentContainerIds ? "i" : "-") + (consideringValueOrigin ? "o" : "-") + (consideringReferenceFilters ? "F" : "-") + - (compareElementNames ? "E" : "-"); + (compareElementNames ? "E" : "-") + + (hashRuntimeSchemaItems ? "R" : "-"); } - @Override public boolean equals(Item first, Item second) { return first == second || first != null && second != null && first.equals(second, this); @@ -258,6 +271,7 @@ public void setConsideringDifferentContainerIds(boolean consideringDifferentCont this.consideringDifferentContainerIds = consideringDifferentContainerIds; } + @SuppressWarnings("BooleanMethodIsAlwaysInverted") public boolean isConsideringOperationalData() { return consideringOperationalData; } @@ -274,6 +288,14 @@ public void setConsideringReferenceFilters(boolean consideringReferenceFilters) this.consideringReferenceFilters = consideringReferenceFilters; } + public boolean isHashRuntimeSchemaItems() { + return hashRuntimeSchemaItems; + } + + public void setHashRuntimeSchemaItems(boolean hashRuntimeSchemaItems) { + this.hashRuntimeSchemaItems = hashRuntimeSchemaItems; + } + @Override public String toString() { String desc = getDescription(); diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java index 96dc651aa70..d2fd444478a 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java @@ -815,10 +815,14 @@ public int hashCode(@NotNull EquivalenceStrategy equivalenceStrategy) { @Override public int hashCode(@NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { + if (definition != null && definition.isRuntimeSchema() && !equivalenceStrategy.isHashRuntimeSchemaItems()) { + //System.out.println("HashCode is 0 because of runtime: " + this); + return 0; + } int valuesHash = MiscUtil.unorderedCollectionHashcode(values, null); if (valuesHash == 0) { - // empty or non-significant container. We do not want this to destroy hashcode of - // parent item + // empty or non-significant container. We do not want this to destroy hashcode of parent item + //System.out.println("HashCode is 0 because values hashCode is 0: " + this); return 0; } final int prime = 31; @@ -828,6 +832,7 @@ public int hashCode(@NotNull ParameterizedEquivalenceStrategy equivalenceStrateg result = prime * result + ((localElementName == null) ? 0 : localElementName.hashCode()); } result = prime * result + valuesHash; + //System.out.println("HashCode is " + result + " for: " + this); return result; } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyContainerImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyContainerImpl.java index 5dece79c009..ea4b631a25b 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyContainerImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyContainerImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2019 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 @@ -46,10 +46,10 @@ public class DummyContainerImpl implements PrismContainer { private static final long serialVersionUID = 1L; - private final ItemPath path; + @NotNull private final ItemPath path; private final PrismContainer realContainer; - public DummyContainerImpl(PrismContainer realContainer, ItemPath path) { + public DummyContainerImpl(PrismContainer realContainer, @NotNull ItemPath path) { this.realContainer = realContainer; this.path = path; } @@ -70,7 +70,7 @@ public Class getCompileTimeClass() { return realContainer.getCompileTimeClass(); } - public boolean canRepresent(Class compileTimeClass) { + public boolean canRepresent(@NotNull Class compileTimeClass) { return realContainer.canRepresent(compileTimeClass); } @@ -86,15 +86,17 @@ public String getDisplayName() { return realContainer.getDisplayName(); } + @NotNull public Collection getRealValues() { return realContainer.getRealValues(); } + @NotNull public C getRealValue() { return realContainer.getRealValue(); } - public void setValue(PrismContainerValue value) throws SchemaException { + public void setValue(@NotNull PrismContainerValue value) throws SchemaException { realContainer.setValue(value); } @@ -199,6 +201,7 @@ public return realContainer.findCreateItem(itemQName, type, create); } + @NotNull public ItemPath getPath() { return path; } @@ -212,6 +215,7 @@ public Item findItem( return realContainer.findItem(path); } + @NotNull public Map getUserData() { return realContainer.getUserData(); } @@ -314,7 +318,7 @@ public boolean isSingleValue() { return realContainer.isSingleValue(); } - public boolean add(PrismContainerValue newValue, boolean checkUniqueness) throws SchemaException { + public boolean add(@NotNull PrismContainerValue newValue, boolean checkUniqueness) throws SchemaException { return realContainer.add(newValue, checkUniqueness); } @@ -335,7 +339,7 @@ public void assertDefinitions(boolean tolarateRaw, String sourceDescription) thr realContainer.assertDefinitions(tolarateRaw, sourceDescription); } - public boolean add(PrismContainerValue newValue) throws SchemaException { + public boolean add(@NotNull PrismContainerValue newValue) throws SchemaException { return realContainer.add(newValue); } @@ -351,7 +355,7 @@ public List diffModifications(PrismContainer other) { return realContainer.diffModifications(other); } - public boolean add(PrismContainerValue newValue, EquivalenceStrategy equivalenceStrategy) + public boolean add(@NotNull PrismContainerValue newValue, @NotNull EquivalenceStrategy equivalenceStrategy) throws SchemaException { return realContainer.add(newValue, equivalenceStrategy); } @@ -403,7 +407,7 @@ public boolean remove(PrismContainerValue value) { return realContainer.remove(value); } - public boolean remove(PrismContainerValue value, EquivalenceStrategy strategy) { + public boolean remove(PrismContainerValue value, @NotNull EquivalenceStrategy strategy) { return realContainer.remove(value, strategy); } @@ -432,11 +436,11 @@ public boolean equals(Object obj) { return realContainer.equals(obj); } - public boolean equals(Object obj, EquivalenceStrategy equivalenceStrategy) { + public boolean equals(Object obj, @NotNull EquivalenceStrategy equivalenceStrategy) { return realContainer.equals(obj, equivalenceStrategy); } - public boolean equals(Object obj, ParameterizedEquivalenceStrategy equivalenceStrategy) { + public boolean equals(Object obj, @NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { return realContainer.equals(obj, equivalenceStrategy); } @@ -444,11 +448,11 @@ public int hashCode() { return realContainer.hashCode(); } - public int hashCode(EquivalenceStrategy equivalenceStrategy) { + public int hashCode(@NotNull EquivalenceStrategy equivalenceStrategy) { return realContainer.hashCode(equivalenceStrategy); } - public int hashCode(ParameterizedEquivalenceStrategy equivalenceStrategy) { + public int hashCode(@NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { return realContainer.hashCode(equivalenceStrategy); } @@ -456,7 +460,7 @@ public boolean contains(PrismContainerValue value) { return realContainer.contains(value); } - public boolean contains(PrismContainerValue value, EquivalenceStrategy strategy) { + public boolean contains(PrismContainerValue value, @NotNull EquivalenceStrategy strategy) { return realContainer.contains(value, strategy); } @@ -474,7 +478,7 @@ public boolean containsEquivalentValue(PrismContainerValue value, return realContainer.containsEquivalentValue(value, comparator); } - public PrismContainerValue findValue(PrismContainerValue value, EquivalenceStrategy strategy) { + public PrismContainerValue findValue(PrismContainerValue value, @NotNull EquivalenceStrategy strategy) { return realContainer.findValue(value, strategy); } @@ -490,7 +494,7 @@ public ItemDelta, PrismContainerDefinition> diff( public ItemDelta, PrismContainerDefinition> diff( Item, PrismContainerDefinition> other, - ParameterizedEquivalenceStrategy strategy) { + @NotNull ParameterizedEquivalenceStrategy strategy) { return realContainer.diff(other, strategy); } @@ -507,7 +511,7 @@ public void merge(Item, PrismContainerDefinition> othe realContainer.merge(otherItem); } - public void acceptParentVisitor(Visitor visitor) { + public void acceptParentVisitor(@NotNull Visitor visitor) { realContainer.acceptParentVisitor(visitor); } @@ -594,6 +598,7 @@ public void modifyUnfrozen( realContainer.modifyUnfrozen(mutator); } + @NotNull public Collection getAllValues(ItemPath path) { return realContainer.getAllValues(path); } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyPropertyImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyPropertyImpl.java index 2a5b75ccadd..c049a89c8dc 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyPropertyImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyPropertyImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2019 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 @@ -43,11 +43,11 @@ */ public class DummyPropertyImpl implements PrismProperty { private static final long serialVersionUID = 1L; - - private final ItemPath path; + + @NotNull private final ItemPath path; private final PrismProperty realProperty; - public DummyPropertyImpl(PrismProperty realProperty, ItemPath path) { + public DummyPropertyImpl(PrismProperty realProperty, @NotNull ItemPath path) { super(); this.path = path; this.realProperty = realProperty; @@ -85,6 +85,7 @@ public PrismPropertyValue getValue() { return realProperty.getValue(); } + @NotNull public Collection getRealValues() { return realProperty.getRealValues(); } @@ -239,10 +240,12 @@ public void setParent(PrismContainerValue parentValue) { throw new UnsupportedOperationException(); } + @NotNull public ItemPath getPath() { return path; } + @NotNull public Map getUserData() { return realProperty.getUserData(); } @@ -272,15 +275,15 @@ public boolean isSingleValue() { return realProperty.isSingleValue(); } - public boolean add(PrismPropertyValue newValue, boolean checkUniqueness) throws SchemaException { + public boolean add(@NotNull PrismPropertyValue newValue, boolean checkUniqueness) throws SchemaException { return realProperty.add(newValue, checkUniqueness); } - public boolean add(PrismPropertyValue newValue) throws SchemaException { + public boolean add(@NotNull PrismPropertyValue newValue) throws SchemaException { return realProperty.add(newValue); } - public boolean add(PrismPropertyValue newValue, EquivalenceStrategy equivalenceStrategy) + public boolean add(@NotNull PrismPropertyValue newValue, @NotNull EquivalenceStrategy equivalenceStrategy) throws SchemaException { return realProperty.add(newValue, equivalenceStrategy); } @@ -298,7 +301,7 @@ public boolean remove(PrismPropertyValue value) { return realProperty.remove(value); } - public boolean remove(PrismPropertyValue value, EquivalenceStrategy strategy) { + public boolean remove(PrismPropertyValue value, @NotNull EquivalenceStrategy strategy) { return realProperty.remove(value, strategy); } @@ -323,11 +326,11 @@ public boolean equals(Object obj) { return realProperty.equals(obj); } - public boolean equals(Object obj, EquivalenceStrategy equivalenceStrategy) { + public boolean equals(Object obj, @NotNull EquivalenceStrategy equivalenceStrategy) { return realProperty.equals(obj, equivalenceStrategy); } - public boolean equals(Object obj, ParameterizedEquivalenceStrategy equivalenceStrategy) { + public boolean equals(Object obj, @NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { return realProperty.equals(obj, equivalenceStrategy); } @@ -335,11 +338,11 @@ public int hashCode() { return realProperty.hashCode(); } - public int hashCode(EquivalenceStrategy equivalenceStrategy) { + public int hashCode(@NotNull EquivalenceStrategy equivalenceStrategy) { return realProperty.hashCode(equivalenceStrategy); } - public int hashCode(ParameterizedEquivalenceStrategy equivalenceStrategy) { + public int hashCode(@NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { return realProperty.hashCode(equivalenceStrategy); } @@ -347,7 +350,7 @@ public boolean contains(PrismPropertyValue value) { return realProperty.contains(value); } - public boolean contains(PrismPropertyValue value, EquivalenceStrategy strategy) { + public boolean contains(PrismPropertyValue value, @NotNull EquivalenceStrategy strategy) { return realProperty.contains(value, strategy); } @@ -365,7 +368,7 @@ public boolean containsEquivalentValue(PrismPropertyValue value, return realProperty.containsEquivalentValue(value, comparator); } - public PrismPropertyValue findValue(PrismPropertyValue value, EquivalenceStrategy strategy) { + public PrismPropertyValue findValue(PrismPropertyValue value, @NotNull EquivalenceStrategy strategy) { return realProperty.findValue(value, strategy); } @@ -381,7 +384,7 @@ public ItemDelta, PrismPropertyDefinition> diff( public ItemDelta, PrismPropertyDefinition> diff( Item, PrismPropertyDefinition> other, - ParameterizedEquivalenceStrategy strategy) { + @NotNull ParameterizedEquivalenceStrategy strategy) { return realProperty.diff(other, strategy); } @@ -398,7 +401,7 @@ public void merge(Item, PrismPropertyDefinition> otherI realProperty.merge(otherItem); } - public void acceptParentVisitor(Visitor visitor) { + public void acceptParentVisitor(@NotNull Visitor visitor) { realProperty.acceptParentVisitor(visitor); } @@ -501,6 +504,7 @@ public void modifyUnfrozen(Consumer, PrismPropertyDef realProperty.modifyUnfrozen(mutator); } + @NotNull public Collection getAllValues(ItemPath path) { return realProperty.getAllValues(path); } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyReferenceImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyReferenceImpl.java index 31b8316eba2..aa4fa56b4a2 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyReferenceImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyReferenceImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2019 Evolveum and contributors * * This work is dual-licensed under the Apache License 2.0 @@ -46,9 +46,9 @@ public class DummyReferenceImpl implements PrismReference { private final PrismReference realReference; - private final ItemPath path; + @NotNull private final ItemPath path; - public DummyReferenceImpl(PrismReference realReference, ItemPath path) { + public DummyReferenceImpl(PrismReference realReference, @NotNull ItemPath path) { super(); this.realReference = realReference; this.path = path; @@ -66,6 +66,7 @@ public Referencable getRealValue() { return realReference.getRealValue(); } + @NotNull public Collection getRealValues() { return realReference.getRealValues(); } @@ -163,10 +164,12 @@ public void setParent(PrismContainerValue parentValue) { throw new UnsupportedOperationException(); } + @NotNull public ItemPath getPath() { return path; } + @NotNull public Map getUserData() { return realReference.getUserData(); } @@ -200,15 +203,15 @@ public boolean isSingleValue() { return realReference.isSingleValue(); } - public boolean add(PrismReferenceValue newValue, boolean checkUniqueness) throws SchemaException { + public boolean add(@NotNull PrismReferenceValue newValue, boolean checkUniqueness) throws SchemaException { return realReference.add(newValue, checkUniqueness); } - public boolean add(PrismReferenceValue newValue) throws SchemaException { + public boolean add(@NotNull PrismReferenceValue newValue) throws SchemaException { return realReference.add(newValue); } - public boolean add(PrismReferenceValue newValue, EquivalenceStrategy equivalenceStrategy) + public boolean add(@NotNull PrismReferenceValue newValue, @NotNull EquivalenceStrategy equivalenceStrategy) throws SchemaException { return realReference.add(newValue, equivalenceStrategy); } @@ -226,7 +229,7 @@ public boolean remove(PrismReferenceValue value) { return realReference.remove(value); } - public boolean remove(PrismReferenceValue value, EquivalenceStrategy strategy) { + public boolean remove(PrismReferenceValue value, @NotNull EquivalenceStrategy strategy) { return realReference.remove(value, strategy); } @@ -251,11 +254,11 @@ public boolean equals(Object obj) { return realReference.equals(obj); } - public boolean equals(Object obj, EquivalenceStrategy equivalenceStrategy) { + public boolean equals(Object obj, @NotNull EquivalenceStrategy equivalenceStrategy) { return realReference.equals(obj, equivalenceStrategy); } - public boolean equals(Object obj, ParameterizedEquivalenceStrategy equivalenceStrategy) { + public boolean equals(Object obj, @NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { return realReference.equals(obj, equivalenceStrategy); } @@ -263,11 +266,11 @@ public int hashCode() { return realReference.hashCode(); } - public int hashCode(EquivalenceStrategy equivalenceStrategy) { + public int hashCode(@NotNull EquivalenceStrategy equivalenceStrategy) { return realReference.hashCode(equivalenceStrategy); } - public int hashCode(ParameterizedEquivalenceStrategy equivalenceStrategy) { + public int hashCode(@NotNull ParameterizedEquivalenceStrategy equivalenceStrategy) { return realReference.hashCode(equivalenceStrategy); } @@ -275,7 +278,7 @@ public boolean contains(PrismReferenceValue value) { return realReference.contains(value); } - public boolean contains(PrismReferenceValue value, EquivalenceStrategy strategy) { + public boolean contains(PrismReferenceValue value, @NotNull EquivalenceStrategy strategy) { return realReference.contains(value, strategy); } @@ -293,7 +296,7 @@ public boolean containsEquivalentValue(PrismReferenceValue value, return realReference.containsEquivalentValue(value, comparator); } - public PrismReferenceValue findValue(PrismReferenceValue value, EquivalenceStrategy strategy) { + public PrismReferenceValue findValue(PrismReferenceValue value, @NotNull EquivalenceStrategy strategy) { return realReference.findValue(value, strategy); } @@ -309,7 +312,7 @@ public ItemDelta diff( public ItemDelta diff( Item other, - ParameterizedEquivalenceStrategy strategy) { + @NotNull ParameterizedEquivalenceStrategy strategy) { return realReference.diff(other, strategy); } @@ -325,7 +328,7 @@ public void merge(Item otherItem) realReference.merge(otherItem); } - public void acceptParentVisitor(Visitor visitor) { + public void acceptParentVisitor(@NotNull Visitor visitor) { realReference.acceptParentVisitor(visitor); } @@ -428,6 +431,7 @@ public void modifyUnfrozen(Consumer getAllValues(ItemPath path) { return realReference.getAllValues(path); } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/AndFilterImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/AndFilterImpl.java index bfcc796b153..70c688e4bf6 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/AndFilterImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/AndFilterImpl.java @@ -51,7 +51,7 @@ protected String getDebugDumpOperationName() { @Override public boolean match(PrismContainerValue value, MatchingRuleRegistry matchingRuleRegistry) throws SchemaException { - for (ObjectFilter filter : getConditions()){ + for (ObjectFilter filter : getConditions()) { if (!filter.match(value, matchingRuleRegistry)) { return false; } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/EqualFilterImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/EqualFilterImpl.java index 2f3e556e591..1a71e1ac15c 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/EqualFilterImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/EqualFilterImpl.java @@ -102,7 +102,7 @@ protected String getFilterName() { @Override public boolean match(PrismContainerValue objectValue, MatchingRuleRegistry matchingRuleRegistry) throws SchemaException { - if (!super.match(objectValue, matchingRuleRegistry)){ + if (!super.match(objectValue, matchingRuleRegistry)) { return false; } Collection objectItemValues = getObjectItemValues(objectValue); diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/OrgFilterImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/OrgFilterImpl.java index 8c1d070459a..d21adfa697b 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/OrgFilterImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/query/OrgFilterImpl.java @@ -152,6 +152,6 @@ public String toString() { @Override public boolean match(PrismContainerValue value, MatchingRuleRegistry matchingRuleRegistry) throws SchemaException { - return false; + throw new UnsupportedOperationException("Matching object and ORG filter is not supported yet"); } } diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceAttributeContainerDefinitionImpl.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceAttributeContainerDefinitionImpl.java index 65c701e0812..e91e238aaa3 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceAttributeContainerDefinitionImpl.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceAttributeContainerDefinitionImpl.java @@ -50,6 +50,7 @@ public class ResourceAttributeContainerDefinitionImpl extends PrismContainerDefi public ResourceAttributeContainerDefinitionImpl(QName name, ObjectClassComplexTypeDefinition complexTypeDefinition, PrismContext prismContext) { super(name, complexTypeDefinition, prismContext); super.setCompileTimeClass(ShadowAttributesType.class); + isRuntimeSchema = true; } @Override diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestDiffEquals.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestDiffEquals.java index 395cbbaee07..139fe4e8b2f 100644 --- a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestDiffEquals.java +++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestDiffEquals.java @@ -11,6 +11,8 @@ import com.evolveum.midpoint.prism.delta.ChangeType; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.equivalence.EquivalenceStrategy; +import com.evolveum.midpoint.prism.equivalence.ParameterizedEquivalenceStrategy; +import com.evolveum.midpoint.prism.impl.xnode.PrimitiveXNodeImpl; import com.evolveum.midpoint.prism.util.PrismAsserts; import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.prism.xml.XmlTypeConverter; @@ -18,6 +20,7 @@ import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.util.PolicyRuleTypeUtil; import com.evolveum.midpoint.util.DOMUtil; +import com.evolveum.midpoint.util.DebugUtil; import com.evolveum.midpoint.util.PrettyPrinter; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; @@ -36,6 +39,8 @@ import java.util.Date; import java.util.List; +import static com.evolveum.midpoint.prism.equivalence.ParameterizedEquivalenceStrategy.LITERAL; +import static com.evolveum.midpoint.prism.equivalence.ParameterizedEquivalenceStrategy.NOT_LITERAL; import static org.testng.AssertJUnit.*; /** @@ -538,5 +543,56 @@ public void testDiffWithMetadata() { diffWithMetadataNotLiteral.isEmpty()); } + // MID-5851 + @Test + public void testRawValuesHashCode() throws SchemaException { + LOGGER.info("\n\n===[ testRawValuesHashCode ]===\n"); + System.out.println("\n\n===[ testRawValuesHashCode ]===\n"); + PrismContext prismContext = PrismTestUtil.getPrismContext(); + + QName extensionPropertyName = new QName(NS_TEST_RI, "extensionProperty"); + + MutablePrismPropertyDefinition extensionPropertyDef = prismContext.definitionFactory() + .createPropertyDefinition(extensionPropertyName, DOMUtil.XSD_STRING); + extensionPropertyDef.setRuntimeSchema(true); + + PrismProperty propertyParsed = extensionPropertyDef.instantiate(); + PrismProperty propertyRaw = extensionPropertyDef.instantiate(); + propertyParsed.setRealValue("value"); + propertyRaw.setValue(prismContext.itemFactory().createPropertyValue(new PrimitiveXNodeImpl("value"))); + + PrismObject userParsed = new UserType(prismContext) + .name("user") + .asPrismObject(); + userParsed.getOrCreateExtension().add(propertyParsed); + + PrismObject userRaw = new UserType(prismContext) + .name("user") + .asPrismObject(); + userRaw.getOrCreateExtension().add(propertyRaw); + + assertHashAndEquals(userParsed, userRaw, null); + assertHashAndEquals(userParsed, userRaw, LITERAL); + assertHashAndEquals(userParsed, userRaw, NOT_LITERAL); + } + + private void assertHashAndEquals(PrismObject user1, PrismObject user2, + ParameterizedEquivalenceStrategy strategy) { + int hash1, hash2; + if (strategy == null) { + if (!user1.equals(user2)) { + fail("Objects are not equal. Diff:\n" + DebugUtil.debugDump(user1.diff(user2))); + } + hash1 = user1.hashCode(); + hash2 = user2.hashCode(); + } else { + if (!user1.equals(user2, strategy)) { + fail("Objects are not equal under " + strategy + ". Diff:\n" + DebugUtil.debugDump(user1.diff(user2, strategy))); + } + hash1 = user1.hashCode(strategy); + hash2 = user2.hashCode(strategy); + } + assertEquals("Hashcodes are not equal (strategy=" + strategy + ")", hash1, hash2); + } } diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java index 115b5dac133..476cb087b70 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java @@ -112,7 +112,7 @@ public void initSystem(Task initTask, OperationResult initResult) // InternalMonitor.setTraceResourceSchemaOperations(true); InternalMonitor.setTrace(InternalCounters.PRISM_OBJECT_CLONE_COUNT, true); - //setGlobalTracingOverride(createModelAndWorkflowLoggingTracingProfile()); +// setGlobalTracingOverride(addNotificationsLogging(createModelLoggingTracingProfile())); } @Test @@ -238,7 +238,6 @@ public void test099ModifyUserAddAccountFailing() throws Exception { assertSteadyResources(); } - @Test public void test100ModifyUserAddAccount() throws Exception { final String TEST_NAME = "test100ModifyUserAddAccount"; diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/orgstruct/TestOrgStruct.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/orgstruct/TestOrgStruct.java index 7519da2768b..1ab602ba44f 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/orgstruct/TestOrgStruct.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/orgstruct/TestOrgStruct.java @@ -499,7 +499,7 @@ public void test221JackAssignScummBarAndSaveElaine() throws Exception { Collection> deltas = MiscSchemaUtil.createCollection(userDelta); // WHEN - modelService.executeChanges(deltas, null, task, result); + executeChanges(userDelta, null, task, result); // THEN PrismObject userJack = getUser(USER_JACK_OID); @@ -549,10 +549,9 @@ public void test223JackChangeMinistryOfOffenseMemberToManager() throws Exception ObjectDelta userDelta = prismContext.deltaFactory().object() .createModifyDelta(USER_JACK_OID, modifications, UserType.class); - Collection> deltas = MiscSchemaUtil.createCollection(userDelta); // WHEN - modelService.executeChanges(deltas, null, task, result); + executeChanges(userDelta, null, task, result); // THEN PrismObject userJack = getUser(USER_JACK_OID); @@ -587,13 +586,12 @@ public void test230JackRecompute() throws Exception { rememberCounter(InternalCounters.SHADOW_FETCH_OPERATION_COUNT); // WHEN - TestUtil.displayWhen(TEST_NAME); + displayWhen(TEST_NAME); recomputeUser(USER_JACK_OID, task, result); // THEN - TestUtil.displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); + displayThen(TEST_NAME); + assertSuccess(result); assertRefs23x(); assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 2); @@ -618,17 +616,19 @@ public void test232JackDestroyRefsAndRecompute() throws Exception { rememberCounter(InternalCounters.CONNECTOR_OPERATION_COUNT); // WHEN - TestUtil.displayWhen(TEST_NAME); + displayWhen(TEST_NAME); recomputeUser(USER_JACK_OID, ModelExecuteOptions.createReconcile(), task, result); // THEN - TestUtil.displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); + displayThen(TEST_NAME); + assertSuccess(result); assertRefs23x(); - assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 2); - assertCounterIncrement(InternalCounters.CONNECTOR_OPERATION_COUNT, 5); + + // Why so many operations? But this is a very special case. As long as we do not see significant + // increase of operation count in normal scenarios we are quite OK. + assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 4); + assertCounterIncrement(InternalCounters.CONNECTOR_OPERATION_COUNT, 8); } /** @@ -659,13 +659,12 @@ public void test234JackDestroyRefsAndLightRecompute() throws Exception { options.setReconcileFocus(true); // WHEN - TestUtil.displayWhen(TEST_NAME); + displayWhen(TEST_NAME); modelService.recompute(UserType.class, USER_JACK_OID, options, task, result); // THEN - TestUtil.displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); + displayThen(TEST_NAME); + assertSuccess(result); assertRefs23x(); assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 0); diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestUuid.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestUuid.java index 667593d911f..a2733a66b6e 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestUuid.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestUuid.java @@ -247,20 +247,22 @@ public void test220ReconcileDummyUuidDeleteAddAugustus() throws Exception { assumeAssignmentPolicy(AssignmentPolicyEnforcementType.NONE); DummyAccount oldAccount = dummyResourceUuid.getAccountByUsername(ACCOUNT_AUGUSTUS_NAME); + display("Deleting account", oldAccount); dummyResourceUuid.deleteAccountByName(ACCOUNT_AUGUSTUS_NAME); assertNoDummyAccount(ACCOUNT_AUGUSTUS_NAME, ACCOUNT_AUGUSTUS_NAME); - DummyAccount account = new DummyAccount(ACCOUNT_AUGUSTUS_NAME); - account.setEnabled(true); - account.addAttributeValues(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_FULLNAME_NAME, ACCOUNT_AUGUSTUS_FULLNAME); - account.addAttributeValues(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_SHIP_NAME, USER_AUGUSTUS_NAME); - dummyResourceUuid.addAccount(account); - account = dummyResourceUuid.getAccountByUsername(ACCOUNT_AUGUSTUS_NAME); + DummyAccount newAccount = new DummyAccount(ACCOUNT_AUGUSTUS_NAME); + newAccount.setEnabled(true); + newAccount.addAttributeValues(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_FULLNAME_NAME, ACCOUNT_AUGUSTUS_FULLNAME); + newAccount.addAttributeValues(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_SHIP_NAME, USER_AUGUSTUS_NAME); + dummyResourceUuid.addAccount(newAccount); + newAccount = dummyResourceUuid.getAccountByUsername(ACCOUNT_AUGUSTUS_NAME); + display("Created account", newAccount); - assertFalse("Account IDs not changed", oldAccount.getId().equals(account.getId())); + assertFalse("Account IDs not changed", oldAccount.getId().equals(newAccount.getId())); display("Old shadow OID", augustusShadowOid); - display("Account ID "+ oldAccount.getId() + " -> " + account.getId()); + display("Account ID "+ oldAccount.getId() + " -> " + newAccount.getId()); Task taskBefore = taskManager.getTask(TASK_RECONCILE_DUMMY_UUID_OID, result); diff --git a/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/NotificationFunctionsImpl.java b/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/NotificationFunctionsImpl.java index 288cbfcdf76..9f4e4eb1085 100644 --- a/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/NotificationFunctionsImpl.java +++ b/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/NotificationFunctionsImpl.java @@ -89,7 +89,7 @@ public class NotificationFunctionsImpl implements NotificationFunctions { ShadowType.F_ACTIVATION.append(ActivationType.F_ENABLE_TIMESTAMP), ShadowType.F_ITERATION, ShadowType.F_ITERATION_TOKEN, - UserType.F_LINK_REF, + FocusType.F_LINK_REF, ShadowType.F_TRIGGER)); diff --git a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java index d4ab02788ef..4b511faa9d2 100644 --- a/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java +++ b/repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java @@ -1969,6 +1969,15 @@ protected TracingProfileType addWorkflowLogging(TracingProfileType profile) { .end(); } + protected TracingProfileType addNotificationsLogging(TracingProfileType profile) { + return profile.getLoggingOverride() + .beginLevelOverride() + .logger("com.evolveum.midpoint.notifications") + .level(LoggingLevelType.TRACE) + .end() + .end(); + } + protected TracingProfileType createModelAndWorkflowLoggingTracingProfile() { return addWorkflowLogging(createModelLoggingTracingProfile()); } diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/tracing/TracerImpl.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/tracing/TracerImpl.java index 498cb0e92f3..e62257e9285 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/tracing/TracerImpl.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/tracing/TracerImpl.java @@ -21,6 +21,7 @@ import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.task.api.TaskManager; import com.evolveum.midpoint.task.api.Tracer; +import com.evolveum.midpoint.util.DebugUtil; import com.evolveum.midpoint.util.MiscUtil; import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException; import com.evolveum.midpoint.util.exception.SchemaException; @@ -64,6 +65,9 @@ public class TracerImpl implements Tracer, SystemConfigurationChangeListener { private static final String MACRO_MILLISECONDS = "milliseconds"; private static final String MACRO_RANDOM = "random"; + // To be used during tests to check for MID-5851 + public static boolean checkHashCodeEqualsRelation = false; + @Autowired private PrismContext prismContext; @Autowired private TaskManager taskManager; @Autowired private SystemConfigurationChangeDispatcher systemConfigurationChangeDispatcher; @@ -259,6 +263,9 @@ private String findOrCreateEntry(PrismObject object) { comparisons++; boolean equals = objectToStore.equals(dictionaryObject); if (equals) { + if (checkHashCodeEqualsRelation) { + checkHashCodes(objectToStore, dictionaryObject); + } LOGGER.trace("Found existing entry #{}:{}: {} [in {} ms]", entry.getOriginDictionaryId(), entry.getIdentifier(), objectToStore, System.currentTimeMillis() - started); return entry.getOriginDictionaryId() + ":" + entry.getIdentifier(); @@ -284,6 +291,21 @@ private String findOrCreateEntry(PrismObject object) { return dictionaryId + ":" + newEntryId; } + // These objects are equal. They hashcodes should be also. This is a helping hand given to tests. See MID-5851. + private void checkHashCodes(PrismObject object1, PrismObject object2) { + int hash1 = object1.hashCode(); + int hash2 = object2.hashCode(); + if (hash1 != hash2) { + System.out.println("Hash 1 = " + hash1); + System.out.println("Hash 2 = " + hash2); + System.out.println("Object 1:\n" + object1.debugDump()); + System.out.println("Object 2:\n" + object2.debugDump()); + //noinspection unchecked + System.out.println("Diff:\n" + DebugUtil.debugDump(object1.diff(object2))); + throw new AssertionError("Objects " + object1 + " and " + object2 + " are equal but their hashcodes are different"); + } + } + @NotNull private PrismObject stripFetchResult(PrismObject object) { PrismObject objectToStore; diff --git a/testing/schrodingertest/pom.xml b/testing/schrodingertest/pom.xml index 822ae41b978..5dc91d2829a 100644 --- a/testing/schrodingertest/pom.xml +++ b/testing/schrodingertest/pom.xml @@ -21,7 +21,6 @@ ../../gui/admin-gui com.evolveum.midpoint.web.boot.MidPointSpringApplication - 3.141.59 false 8180 0.0.0.0 @@ -34,7 +33,6 @@ commons-io commons-io - 2.6 com.evolveum.midpoint.tools @@ -48,7 +46,6 @@ com.codeborne selenide - 5.3.1 io.netty @@ -100,7 +97,6 @@ io.netty netty-all - 4.0.51.Final ch.qos.logback @@ -111,7 +107,6 @@ com.google.guava guava - 23.0 diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestDependencyRename.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestDependencyRename.java index 39d66080802..c8df40b1427 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestDependencyRename.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestDependencyRename.java @@ -6,60 +6,25 @@ * and European Union Public License. See LICENSE file for details. */ -import static com.evolveum.midpoint.test.IntegrationTestTools.display; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertNull; -import static org.testng.AssertJUnit.assertTrue; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.opends.server.types.DirectoryException; -import org.opends.server.types.Entry; -import org.opends.server.types.SearchResultEntry; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -import com.evolveum.icf.dummy.resource.DummyAccount; -import com.evolveum.icf.dummy.resource.DummyObjectClass; -import com.evolveum.icf.dummy.resource.DummyResource; -import com.evolveum.icf.dummy.resource.DummySyncStyle; -import com.evolveum.midpoint.model.impl.sync.ReconciliationTaskHandler; -import com.evolveum.midpoint.model.impl.util.DebugReconciliationTaskResultListener; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.PrismReferenceValue; -import com.evolveum.midpoint.prism.util.PrismAsserts; -import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.test.DummyResourceContoller; -import com.evolveum.midpoint.test.IntegrationTestTools; import com.evolveum.midpoint.test.util.MidPointTestConstants; import com.evolveum.midpoint.test.util.TestUtil; -import com.evolveum.midpoint.util.exception.CommunicationException; -import com.evolveum.midpoint.util.exception.ConfigurationException; -import com.evolveum.midpoint.util.exception.ObjectNotFoundException; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.util.exception.SecurityViolationException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentPolicyEnforcementType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ContextConfiguration; +import org.testng.annotations.AfterClass; +import org.testng.annotations.Test; + +import java.io.File; + +import static org.testng.AssertJUnit.assertNotNull; /** * @author Radovan Semancik @@ -139,7 +104,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestDependencyRename.class.getName() + "." + TEST_NAME); OperationResult testResultHr = modelService.testResource(RESOURCE_DUMMY_PHONEBOOK_OID, task); TestUtil.assertSuccess(testResultHr); @@ -154,7 +119,7 @@ public void test000Sanity() throws Exception { public void test100AddUserHerman() throws Exception { final String TEST_NAME = "test100AddUserHerman"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestDependencyRename.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); PrismObject userBefore = getUserDefinition().instantiate(); @@ -185,7 +150,7 @@ public void test100AddUserHerman() throws Exception { public void test110HermanAssignRoleBasic() throws Exception { final String TEST_NAME = "test110HermanAssignRoleBasic"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestDependencyRename.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN @@ -220,7 +185,7 @@ public void test110HermanAssignRoleBasic() throws Exception { public void test112HermanRename() throws Exception { final String TEST_NAME = "test112HermanRename"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestDependencyRename.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN @@ -255,7 +220,7 @@ public void test112HermanRename() throws Exception { public void test120AddUserCapsizeWithBasicRole() throws Exception { final String TEST_NAME = "test120AddUserCapsizeWithBasicRole"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestDependencyRename.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); PrismObject userBefore = getUserDefinition().instantiate(); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestEntertainment.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestEntertainment.java index 650ffaae3a7..18a97d1ef4c 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestEntertainment.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestEntertainment.java @@ -89,7 +89,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestEntertainment.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); @@ -111,7 +111,7 @@ public void test000Sanity() throws Exception { public void test001AddParentOrg() throws Exception { final String TEST_NAME = "test001AddParentOrg"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestEntertainment.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN @@ -143,7 +143,7 @@ public void test001AddParentOrg() throws Exception { public void test002AddChildOrg() throws Exception { final String TEST_NAME = "test002AddChildOrg"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestEntertainment.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMachineIntelligence.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMachineIntelligence.java index 2ea8ba8f3cd..a935561e3fb 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMachineIntelligence.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMachineIntelligence.java @@ -140,7 +140,7 @@ SchemaConstants.ICF_CONFIGURATION_PROPERTIES, new QName(NS_RESOURCE_CSV, "filePa public void test010importActiveUserRUR() throws Exception { final String TEST_NAME = "test010importActiveUserRUR"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestMachineIntelligence.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN @@ -173,7 +173,7 @@ public void test010importActiveUserRUR() throws Exception { public void test011importInactiveUserChappie() throws Exception { final String TEST_NAME = "test011importInactiveUserChappie"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestMachineIntelligence.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMapleLeaf.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMapleLeaf.java index 01d20fe690e..ff645317b66 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMapleLeaf.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestMapleLeaf.java @@ -136,7 +136,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestMapleLeaf.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestNullAttribute.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestNullAttribute.java index 966cf3fc8ac..0acefdf822a 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestNullAttribute.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestNullAttribute.java @@ -125,7 +125,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestNullAttribute.class.getName() + "." + TEST_NAME); OperationResult testResult = modelService.testResource(RESOURCE_DUMMY_OID, task); TestUtil.assertSuccess(testResult); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestOrgSync.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestOrgSync.java index abb1b53e755..960fbbb6a02 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestOrgSync.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestOrgSync.java @@ -38,7 +38,6 @@ import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismReferenceValue; import com.evolveum.midpoint.prism.util.PrismAsserts; -import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; @@ -53,7 +52,6 @@ import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.exception.SecurityViolationException; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentPolicyEnforcementType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType; import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; @@ -302,7 +300,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); OperationResult testResultHr = modelService.testResource(RESOURCE_DUMMY_HR_OID, task); TestUtil.assertSuccess(testResultHr); @@ -324,7 +322,7 @@ public void test000Sanity() throws Exception { public void test100AddHrAccountHerman() throws Exception { final String TEST_NAME = "test100AddHrAccountHerman"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_HERMAN_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_HERMAN_FIST_NAME); @@ -364,7 +362,7 @@ public void test100AddHrAccountHerman() throws Exception { public void test105AddHrAccountLemonhead() throws Exception { final String TEST_NAME = "test105AddHrAccountLemonhead"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_LEMONHEAD_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_LEMONHEAD_FIST_NAME); @@ -409,7 +407,7 @@ public void test105AddHrAccountLemonhead() throws Exception { public void test106AddHrAccountSharptooth() throws Exception { final String TEST_NAME = "test106AddHrAccountSharptooth"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_SHARPTOOTH_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_SHARPTOOTH_FIST_NAME); @@ -453,7 +451,7 @@ public void test106AddHrAccountSharptooth() throws Exception { public void test107AddHrAccountRedskull() throws Exception { final String TEST_NAME = "test107AddHrAccountRedskull"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_REDSKULL_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_REDSKULL_FIST_NAME); @@ -537,7 +535,7 @@ public void test108RedskullGoesVegetarian() throws Exception { public void test109HrDeleteRedskull() throws Exception { final String TEST_NAME = "test109HrDeleteRedskull"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); // WHEN displayWhen(TEST_NAME); @@ -567,7 +565,7 @@ public void test109HrDeleteRedskull() throws Exception { public void test110AddHrAccountGuybrush() throws Exception { final String TEST_NAME = "test110AddHrAccountGuybrush"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_GUYBRUSH_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_GUYBRUSH_FIST_NAME); @@ -613,7 +611,7 @@ public void test110AddHrAccountGuybrush() throws Exception { public void test115AddHrAccountMancomb() throws Exception { final String TEST_NAME = "test115AddHrAccountMancomb"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_MANCOMB_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_MANCOMB_FIST_NAME); @@ -660,7 +658,7 @@ public void test115AddHrAccountMancomb() throws Exception { public void test117AddHrAccountCobb() throws Exception { final String TEST_NAME = "test117AddHrAccountCobb"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_COBB_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_COBB_FIST_NAME); @@ -707,7 +705,7 @@ public void test117AddHrAccountCobb() throws Exception { public void test130AddHrAccountLargo() throws Exception { final String TEST_NAME = "test130AddHrAccountLargo"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_LARGO_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_LARGO_FIST_NAME); @@ -760,7 +758,7 @@ public void test130AddHrAccountLargo() throws Exception { public void test140AddHrAccountWally() throws Exception { final String TEST_NAME = "test140AddHrAccountWally"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_WALLY_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_WALLY_FIST_NAME); @@ -804,7 +802,7 @@ public void test140AddHrAccountWally() throws Exception { public void test142AddHrAccountAugustus() throws Exception { final String TEST_NAME = "test142AddHrAccountAugustus"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_AUGUSTUS_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_AUGUSTUS_FIST_NAME); @@ -848,7 +846,7 @@ public void test142AddHrAccountAugustus() throws Exception { public void test185AddHrAccountStan() throws Exception { final String TEST_NAME = "test185AddHrAccountStan"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_STAN_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_STAN_FIST_NAME); @@ -894,7 +892,7 @@ public void test185AddHrAccountStan() throws Exception { public void test186AddHrAccountCapsize() throws Exception { final String TEST_NAME = "test186AddHrAccountCapsize"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_CAPSIZE_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_CAPSIZE_FIST_NAME); @@ -940,7 +938,7 @@ public void test186AddHrAccountCapsize() throws Exception { public void test187AddHrAccountRogersSr() throws Exception { final String TEST_NAME = "test187AddHrAccountRogersSr"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_ROGERSSR_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_ROGERSSR_FIST_NAME); @@ -987,7 +985,7 @@ public void test187AddHrAccountRogersSr() throws Exception { public void test190AddHrAccountTeleke() throws Exception { final String TEST_NAME = "test190AddHrAccountTeleke"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestOrgSync.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_TELEKE_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_HR_FIRST_NAME, ACCOUNT_TELEKE_FIST_NAME); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java index eacf9d3959e..831ac5735f1 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java @@ -131,7 +131,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestReconNullValue.class.getName() + "." + TEST_NAME); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); TestUtil.assertSuccess(testResultOpenDj); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestRetirement.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestRetirement.java index 9febb8ea281..2bb0c554e97 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestRetirement.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestRetirement.java @@ -155,7 +155,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestRetirement.class.getName() + "." + TEST_NAME); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); TestUtil.assertSuccess(testResultOpenDj); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestTrafo.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestTrafo.java deleted file mode 100644 index 3ca1d30b315..00000000000 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestTrafo.java +++ /dev/null @@ -1,1312 +0,0 @@ -/* - * Copyright (c) 2013-2017 Evolveum and contributors - * - * This work is dual-licensed under the Apache License 2.0 - * and European Union Public License. See LICENSE file for details. - */ -package com.evolveum.midpoint.testing.story; - -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertFalse; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertNull; - -import java.io.File; -import java.util.Collection; - -import javax.xml.namespace.QName; - -import com.evolveum.midpoint.prism.delta.*; -import com.evolveum.midpoint.prism.path.ItemPath; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.testng.annotations.Test; - -import com.evolveum.icf.dummy.resource.DummyObjectClass; -import com.evolveum.icf.dummy.resource.DummyResource; -import com.evolveum.midpoint.prism.PrismContainerDefinition; -import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.PrismObjectDefinition; -import com.evolveum.midpoint.prism.polystring.PolyString; -import com.evolveum.midpoint.prism.util.PrismAsserts; -import com.evolveum.midpoint.schema.GetOperationOptions; -import com.evolveum.midpoint.schema.constants.MidPointConstants; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.test.DummyResourceContoller; -import com.evolveum.midpoint.test.util.MidPointTestConstants; -import com.evolveum.midpoint.test.util.TestUtil; -import com.evolveum.midpoint.util.DOMUtil; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; - -/** - * @author Radovan Semancik - * - */ -@ContextConfiguration(locations = {"classpath:ctx-story-test-main.xml"}) -@DirtiesContext(classMode = ClassMode.AFTER_CLASS) -public class TestTrafo extends AbstractStoryTest { - - public static final File TEST_DIR = new File(MidPointTestConstants.TEST_RESOURCES_DIR, "trafo"); - - public static final String NS_TRAFO_EXT = "http://midpoint.evolveum.com/xml/ns/story/trafo/ext"; - private static final QName TRAFO_EXTENSION_HOMEDIR_QNAME = new QName(NS_TRAFO_EXT, "homedir"); - private static final QName TRAFO_EXTENSION_UID_QNAME = new QName(NS_TRAFO_EXT, "uid"); - private static final ItemPath TRAFO_EXTENSION_HOMEDIR_PATH = ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME); - - private static final String TRAFO_MAIL_DOMAIN = "trafo.xx"; - - protected static final File USER_ANGELICA_FILE = new File(TEST_DIR, "user-angelica.xml"); - protected static final String USER_ANGELICA_OID = "c0c010c0-d34d-b33f-f00d-11111111aaaa"; - protected static final String USER_ANGELICA_USERNAME = "angelica"; - - protected static final File USER_SMITH111_FILE = new File(TEST_DIR, "user-smith-111.xml"); - protected static final String USER_SMITH111_OID = "c0c010c0-d34d-b33f-f00d-555555551111"; - protected static final String USER_SMITH111_USERNAME = "smith111"; - - protected static final File USER_SMITH222_FILE = new File(TEST_DIR, "user-smith-222.xml"); - protected static final String USER_SMITH222_OID = "c0c010c0-d34d-b33f-f00d-555555552222"; - protected static final String USER_SMITH222_USERNAME = "smith222"; - - protected static final String ACCOUNT_JACK_AD_DN = "CN=Sparrow Jack,OU=People,O=Trafo"; - protected static final String ACCOUNT_JACK_AD_SAM_NAME = "jsparrow"; - - protected static final String ACCOUNT_JACK_MAIL_USERNAME = "Jack Sparrow/TRAFO/XX"; - - private static final String ACCOUNT_ANGELICA_AD_DN = "CN=Sparrow Jack2,OU=People,O=Trafo"; - protected static final String ACCOUNT_ANGELICA_AD_SAM_NAME = "jsparrow2"; - - protected static final String ACCOUNT_ANGELICA_MAIL_USERNAME = "Jack Sparrow2/TRAFO/XX"; - - private static final String ACCOUNT_SMITH111_AD_DN = "CN=Smith John,OU=People,O=Trafo"; - private static final Object ACCOUNT_SMITH111_AD_SAM_NAME = USER_SMITH111_USERNAME; - private static final String ACCOUNT_SMITH111_AD_DN_AFTER_RENAME = "CN=Smither John,OU=People,O=Trafo"; - - private static final String ACCOUNT_SMITH111_MAIL_USERNAME = "John Smith/111/TRAFO/XX"; - private static final String ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME = "John Smither/111/TRAFO/XX"; - - private static final String ACCOUNT_SMITH222_AD_DN = "CN=Smith John2,OU=People,O=Trafo"; - private static final Object ACCOUNT_SMITH222_AD_SAM_NAME = USER_SMITH222_USERNAME; - private static final String ACCOUNT_SMITH222_AD_DN_AFTER_RENAME = "CN=Smither John2,OU=People,O=Trafo"; - - private static final String ACCOUNT_SMITH222_MAIL_USERNAME = "John Smith/222/TRAFO/XX"; - private static final String ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME = "John Smither/222/TRAFO/XX"; - - protected static final File ROLE_EMPLOYEE_FILE = new File(TEST_DIR, "role-employee.xml"); - protected static final String ROLE_EMPLOYEE_OID = "6de5ff6a-5b61-11e3-adc5-001e8c717e5b"; - - protected static final File RESOURCE_DUMMY_AD_FILE = new File(TEST_DIR, "resource-dummy-ad.xml"); - protected static final String RESOURCE_DUMMY_AD_ID = "AD"; - protected static final String RESOURCE_DUMMY_AD_OID = "14400000-0000-0000-0000-000000000003"; - protected static final String RESOURCE_DUMMY_AD_NAMESPACE = MidPointConstants.NS_RI; - - protected static final File RESOURCE_DUMMY_MAIL_FILE = new File(TEST_DIR, "resource-dummy-mail.xml"); - protected static final String RESOURCE_DUMMY_MAIL_ID = "mail"; - protected static final String RESOURCE_DUMMY_MAIL_OID = "14400000-0000-0000-0000-000000000001"; - protected static final String RESOURCE_DUMMY_MAIL_NAMESPACE = MidPointConstants.NS_RI; - - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME = "FirstName"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME = "LastName"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME = "ShortName"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME = "idFile"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_TEMPLATE_NAME_NAME = "MailTemplateName"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME = "MailFile"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_SYSTEM_NAME = "MailSystem"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME = "MailDomain"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_SERVER_NAME = "MailServer"; - private static final String DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME = "InternetAddress"; - - protected static DummyResource dummyResourceAd; - protected static DummyResourceContoller dummyResourceCtlAd; - protected ResourceType resourceDummyAdType; - protected PrismObject resourceDummyAd; - - protected static DummyResource dummyResourceMail; - protected static DummyResourceContoller dummyResourceCtlMail; - protected ResourceType resourceDummyMailType; - protected PrismObject resourceDummyMail; - - private String jackAdIcfUid; - private String jackMailIcfUid; - - private String angelicaAdIcfUid; - - private String smith111MailIcfUid; - - private String angelicaMailIcfUid; - - private String smith111AdIcfUid; - - private String smith222AdIcfUid; - - private String smith222MailIcfUid; - - @Override - public void initSystem(Task initTask, OperationResult initResult) throws Exception { - super.initSystem(initTask, initResult); - - // Roles - repoAddObjectFromFile(ROLE_EMPLOYEE_FILE, initResult); - - // Resources - dummyResourceCtlAd = DummyResourceContoller.create(RESOURCE_DUMMY_AD_ID, resourceDummyAd); - dummyResourceCtlAd.extendSchemaAd(); - dummyResourceAd = dummyResourceCtlAd.getDummyResource(); - // Expected warning: dependency on mail resource - resourceDummyAd = importAndGetObjectFromFileIgnoreWarnings(ResourceType.class, RESOURCE_DUMMY_AD_FILE, RESOURCE_DUMMY_AD_OID, initTask, initResult); - resourceDummyAdType = resourceDummyAd.asObjectable(); - dummyResourceCtlAd.setResource(resourceDummyAd); - initDummyResource(RESOURCE_DUMMY_AD_ID, dummyResourceCtlAd); - - dummyResourceCtlMail = DummyResourceContoller.create(RESOURCE_DUMMY_MAIL_ID, resourceDummyMail); - dummyResourceCtlMail.populateWithDefaultSchema(); - DummyObjectClass dummyAdAccountObjectClass = dummyResourceCtlMail.getDummyResource().getAccountObjectClass(); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, String.class, false, true); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_TEMPLATE_NAME_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_SYSTEM_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_SERVER_NAME, String.class, false, false); - dummyResourceCtlMail.addAttrDef(dummyAdAccountObjectClass, DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, String.class, false, false); - dummyResourceMail = dummyResourceCtlMail.getDummyResource(); - resourceDummyMail = importAndGetObjectFromFile(ResourceType.class, RESOURCE_DUMMY_MAIL_FILE, RESOURCE_DUMMY_MAIL_OID, initTask, initResult); - resourceDummyMailType = resourceDummyMail.asObjectable(); - dummyResourceCtlMail.setResource(resourceDummyMail); - initDummyResource(RESOURCE_DUMMY_MAIL_ID, dummyResourceCtlMail); - - } - - @Test - public void test000Sanity() throws Exception { - final String TEST_NAME = "test000Sanity"; - displayTestTitle(TEST_NAME); - Task task = createTask(TEST_NAME); - - OperationResult testResultAd = modelService.testResource(RESOURCE_DUMMY_AD_OID, task); - assertSuccess(testResultAd); - - OperationResult testResultMail = modelService.testResource(RESOURCE_DUMMY_MAIL_OID, task); - assertSuccess(testResultMail); - - waitForTaskStart(TASK_TRIGGER_SCANNER_OID, true); - waitForTaskStart(TASK_VALIDITY_SCANNER_OID, true); - - PrismObjectDefinition userDefinition = getUserDefinition(); - PrismContainerDefinition userExtensionDef = userDefinition.getExtensionDefinition(); - PrismAsserts.assertPropertyDefinition(userExtensionDef, - TRAFO_EXTENSION_HOMEDIR_QNAME, DOMUtil.XSD_STRING, 0, 1); - } - - @Test - public void test100JackAssignAccountAd() throws Exception { - final String TEST_NAME = "test100JackAssignAccountAd"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - assignAccountToUser(USER_JACK_OID, RESOURCE_DUMMY_AD_OID, null, task, result); - - // THEN - displayThen(TEST_NAME); - assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - String accountOid = getSingleLinkRef(userJack).getOid(); - - // Check shadow - PrismObject accountShadow = provisioningService.getObject(ShadowType.class, accountOid, GetOperationOptions.createNoFetchCollection(), task, result); - assertAccountShadowRepo(accountShadow, accountOid, ACCOUNT_JACK_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); - display("AD shadow", accountModel); - assertAccountShadowModel(accountModel, accountOid, ACCOUNT_JACK_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountModel); - - jackAdIcfUid = getIcfUid(accountModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, jackAdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_JACK_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_JACK_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Sparrow"); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME, "555-1234"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(2); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(3); - dummyAuditService.assertHasDelta(ChangeType.MODIFY, UserType.class); - dummyAuditService.assertHasDelta(ChangeType.ADD, ShadowType.class); - dummyAuditService.assertExecutionSuccess(); - } - - /** - * Account stays. Should be disabled. - */ - @Test - public void test105JackUnAssignAccountAd() throws Exception { - final String TEST_NAME = "test105JackUnAssignAccountAd"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - unassignAccountFromUser(USER_JACK_OID, RESOURCE_DUMMY_AD_OID, null, task, result); - - // THEN - displayThen(TEST_NAME); - assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - String accountOid = getSingleLinkRef(userJack).getOid(); - - // Check shadow - PrismObject accountShadow = provisioningService.getObject(ShadowType.class, accountOid, GetOperationOptions.createNoFetchCollection(), task, result); - assertAccountShadowRepo(accountShadow, accountOid, ACCOUNT_JACK_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); - display("AD shadow", accountModel); - assertAccountShadowModel(accountModel, accountOid, ACCOUNT_JACK_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusDisabled(accountModel); - - assertEquals("Jack AD ICF UID has changed", jackAdIcfUid, getIcfUid(accountModel)); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, jackAdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, false); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_JACK_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_JACK_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Sparrow"); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME, "555-1234"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(2); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(2); - dummyAuditService.assertHasDelta(ChangeType.MODIFY, UserType.class); - dummyAuditService.assertHasDelta(ChangeType.MODIFY, ShadowType.class); - dummyAuditService.assertExecutionSuccess(); - } - - /** - * "Wait" a bit and the account should be gone. - */ - @Test - public void test109JackAccountAdGone() throws Exception { - final String TEST_NAME = "test109JackAccountAdGone"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - clock.overrideDuration("P2D"); - waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - assertLinks(userJack, 0); - - // Check account in dummy resource - assertNoDummyAccountById(RESOURCE_DUMMY_AD_ID, jackAdIcfUid); - assertNoDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(2); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertExecutionDeltas(2); - dummyAuditService.assertHasDelta(ChangeType.MODIFY, UserType.class); - dummyAuditService.assertHasDelta(ChangeType.DELETE, ShadowType.class); - dummyAuditService.assertExecutionSuccess(); - } - - @Test - public void test120AJackssignAccountMail() throws Exception { - final String TEST_NAME = "test120JackAssignAccountMail"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - assignAccountToUser(USER_JACK_OID, RESOURCE_DUMMY_MAIL_OID, null, task, result); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - String accountOid = getSingleLinkRef(userJack).getOid(); - - // Check shadow - PrismObject accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result); - assertAccountShadowRepo(accountShadow, accountOid, ACCOUNT_JACK_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); - display("Mail shadow", accountModel); - assertAccountShadowModel(accountModel, accountOid, ACCOUNT_JACK_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountModel); - - jackMailIcfUid = getIcfUid(accountModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, jackMailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Sparrow"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsparrow.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, USER_JACK_USERNAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\"+USER_JACK_USERNAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userJack, UserType.F_EMAIL_ADDRESS, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userJack, - ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "c:\\install\\test-id-folder"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(3); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0,3); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); - dummyAuditService.assertHasDelta(0,ChangeType.ADD, ShadowType.class); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); - // Inbound - dummyAuditService.assertExecutionDeltas(1,1); - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, UserType.class); - dummyAuditService.assertExecutionSuccess(); - } - - @Test - public void test125JackUnAssignAccountMail() throws Exception { - final String TEST_NAME = "test125JackUnAssignAccountMail"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - unassignAccountFromUser(USER_JACK_OID, RESOURCE_DUMMY_MAIL_OID, null, task, result); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - String accountOid = getSingleLinkRef(userJack).getOid(); - - // Check shadow - PrismObject accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result); - assertAccountShadowRepo(accountShadow, accountOid, ACCOUNT_JACK_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); - display("Mail shadow", accountModel); - assertAccountShadowModel(accountModel, accountOid, ACCOUNT_JACK_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusDisabled(accountModel); - - assertEquals("Jack Mail ICF UID has changed", jackMailIcfUid, getIcfUid(accountModel)); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, jackMailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, false); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Sparrow"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsparrow.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, USER_JACK_USERNAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\"+USER_JACK_USERNAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userJack, UserType.F_EMAIL_ADDRESS, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userJack, - ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "c:\\install\\test-id-folder"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(2); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(2); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, ShadowType.class); - dummyAuditService.assertExecutionSuccess(); - } - - /** - * "Wait" a bit and the account should be gone. - */ - @Test - public void test129JackAccountMailGone() throws Exception { - final String TEST_NAME = "test129JackAccountMailGone"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - clock.overrideDuration("P2D"); - waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - assertLinks(userJack, 0); - - // Check account in dummy resource - assertNoDummyAccountById(RESOURCE_DUMMY_MAIL_ID, jackMailIcfUid); - assertNoDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME); - - // Set by inbound mappings, this should stay - PrismAsserts.assertPropertyValue(userJack, UserType.F_EMAIL_ADDRESS, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userJack, TRAFO_EXTENSION_HOMEDIR_PATH, "c:\\install\\test-id-folder"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(2); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertExecutionDeltas(2); - dummyAuditService.assertHasDelta(ChangeType.MODIFY, UserType.class); - dummyAuditService.assertHasDelta(ChangeType.DELETE, ShadowType.class); - dummyAuditService.assertExecutionSuccess(); - - // Clean up the data set by inbound. These could ruin next tests - modifyUserReplace(USER_JACK_OID, UserType.F_EMAIL_ADDRESS, task, result); - modifyUserReplace(USER_JACK_OID, TRAFO_EXTENSION_HOMEDIR_PATH, task, result); - - userJack = getUser(USER_JACK_OID); - display("Clean jack", userJack); - } - - @Test - public void test150JackAssignRoleEmployee() throws Exception { - final String TEST_NAME = "test150JackAssignRoleEmployee"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - assignRole(USER_JACK_OID, ROLE_EMPLOYEE_OID, task, result); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userJack = getUser(USER_JACK_OID); - display("User after change execution", userJack); - assertUserJack(userJack); - assertLinks(userJack, 2); - String accountAdOid = getLinkRefOid(userJack, RESOURCE_DUMMY_AD_OID); - String accountMailOid = getLinkRefOid(userJack, RESOURCE_DUMMY_MAIL_OID); - - // AD ACCOUNT - - // Check shadow - PrismObject accountAdShadow = repositoryService.getObject(ShadowType.class, accountAdOid, null, result); - assertAccountShadowRepo(accountAdShadow, accountAdOid, ACCOUNT_JACK_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountAdModel = modelService.getObject(ShadowType.class, accountAdOid, null, task, result); - display("AD shadow", accountAdModel); - assertAccountShadowModel(accountAdModel, accountAdOid, ACCOUNT_JACK_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountAdModel); - - jackAdIcfUid = getIcfUid(accountAdModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, jackAdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_JACK_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_JACK_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Sparrow"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_JACK_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME, "555-1234"); - - - // MAIL ACCOUNT - - // Check shadow - PrismObject accountMailShadow = repositoryService.getObject(ShadowType.class, accountMailOid, null, result); - assertAccountShadowRepo(accountMailShadow, accountMailOid, ACCOUNT_JACK_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountMailModel = modelService.getObject(ShadowType.class, accountMailOid, null, task, result); - display("Mail shadow", accountMailModel); - assertAccountShadowModel(accountMailModel, accountMailOid, ACCOUNT_JACK_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountMailModel); - - jackMailIcfUid = getIcfUid(accountMailModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, jackMailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Sparrow"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsparrow.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, USER_JACK_USERNAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\"+USER_JACK_USERNAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_JACK_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userJack, UserType.F_EMAIL_ADDRESS, "Jack.Sparrow@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userJack, - ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "c:\\install\\test-id-folder"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(4); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0,3); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); // primary, link (2 deltas) - dummyAuditService.assertHasDelta(0,ChangeType.ADD, ShadowType.class); // AD account - dummyAuditService.assertExecutionDeltas(1,3); - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(1,ChangeType.ADD, ShadowType.class); // Mail account - dummyAuditService.assertExecutionDeltas(2,2); - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, UserType.class); // inbound - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, ShadowType.class); // AD account - dummyAuditService.assertExecutionSuccess(); - } - - /** - * Angelica pretends to be Jack Sparrow. She has the same first and last name. There is a naming conflict. - * The IDs and mail addresses should be correctly suffixed. - */ - @Test - public void test160AngelicaAdd() throws Exception { - final String TEST_NAME = "test160AngelicaAdd"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - addObject(USER_ANGELICA_FILE); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userAngelica = getUser(USER_ANGELICA_OID); - display("User angelica after change execution", userAngelica); - assertUser(userAngelica, USER_ANGELICA_OID, USER_ANGELICA_USERNAME, "Jack Sparrow", "Jack", "Sparrow"); - assertLinks(userAngelica, 2); - String accountAdOid = getLinkRefOid(userAngelica, RESOURCE_DUMMY_AD_OID); - String accountMailOid = getLinkRefOid(userAngelica, RESOURCE_DUMMY_MAIL_OID); - - // AD ACCOUNT - - // Check shadow - PrismObject accountAdShadow = repositoryService.getObject(ShadowType.class, accountAdOid, null, result); - assertAccountShadowRepo(accountAdShadow, accountAdOid, ACCOUNT_ANGELICA_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountAdModel = modelService.getObject(ShadowType.class, accountAdOid, null, task, result); - display("AD shadow", accountAdModel); - assertAccountShadowModel(accountAdModel, accountAdOid, ACCOUNT_ANGELICA_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountAdModel); - - angelicaAdIcfUid = getIcfUid(accountAdModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, angelicaAdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_ANGELICA_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_ANGELICA_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Sparrow"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME, "Jack.Sparrow2@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_ANGELICA_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME); - - // MAIL ACCOUNT - - // Check shadow - PrismObject accountMailShadow = repositoryService.getObject(ShadowType.class, accountMailOid, null, result); - assertAccountShadowRepo(accountMailShadow, accountMailOid, ACCOUNT_ANGELICA_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountMailModel = modelService.getObject(ShadowType.class, accountMailOid, null, task, result); - display("Mail shadow", accountMailModel); - assertAccountShadowModel(accountMailModel, accountMailOid, ACCOUNT_ANGELICA_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountMailModel); - - angelicaMailIcfUid = getIcfUid(accountMailModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, angelicaMailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "Jack.Sparrow2@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "Jack"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Sparrow2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsparrow2.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, USER_ANGELICA_USERNAME + "2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\"+USER_ANGELICA_USERNAME+ "2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_ANGELICA_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userAngelica, UserType.F_EMAIL_ADDRESS, "Jack.Sparrow2@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userAngelica, - ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "c:\\install\\test-id-folder"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(4); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0, 3); - dummyAuditService.assertHasDelta(0, ChangeType.ADD, UserType.class); // primary - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(0,ChangeType.ADD, ShadowType.class); // AD account - dummyAuditService.assertExecutionDeltas(1, 3); - dummyAuditService.assertHasDelta(1, ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(1,ChangeType.ADD, ShadowType.class); // Mail account - dummyAuditService.assertExecutionDeltas(2, 2); - dummyAuditService.assertHasDelta(2, ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, ShadowType.class); // AD account - dummyAuditService.assertExecutionSuccess(); - } - - /** - * Attempt to add two employees that are boh "John Smith". This is the first user. Everything shouyld do as normal. - * Note: this is a different case than jack-angelica. Jack and Angelica are "externists". Smithes are employees (type "T") - */ - @Test - public void test200Smith111Add() throws Exception { - final String TEST_NAME = "test200Smith111Add"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - addObject(USER_SMITH111_FILE); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userSmith = getUser(USER_SMITH111_OID); - display("User smith111 after change execution", userSmith); - assertUser(userSmith, USER_SMITH111_OID, USER_SMITH111_USERNAME, "John Smith", "John", "Smith"); - assertLinks(userSmith, 2); - String accountAdOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_AD_OID); - String accountMailOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_MAIL_OID); - - // AD ACCOUNT - - // Check shadow - PrismObject accountAdShadow = repositoryService.getObject(ShadowType.class, accountAdOid, null, result); - assertAccountShadowRepo(accountAdShadow, accountAdOid, ACCOUNT_SMITH111_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountAdModel = modelService.getObject(ShadowType.class, accountAdOid, null, task, result); - display("AD shadow", accountAdModel); - assertAccountShadowModel(accountAdModel, accountAdOid, ACCOUNT_SMITH111_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountAdModel); - - smith111AdIcfUid = getIcfUid(accountAdModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, smith111AdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_SMITH111_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_SMITH111_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Smith"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME, "John.Smith@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_SHARED_FOLDER_OTHER_NAME, "\\\\medusa\\User\\Smith_smith111"); - - // MAIL ACCOUNT - - // Check shadow - PrismObject accountMailShadow = repositoryService.getObject(ShadowType.class, accountMailOid, null, result); - assertAccountShadowRepo(accountMailShadow, accountMailOid, ACCOUNT_SMITH111_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountMailModel = modelService.getObject(ShadowType.class, accountMailOid, null, task, result); - display("Mail shadow", accountMailModel); - assertAccountShadowModel(accountMailModel, accountMailOid, ACCOUNT_SMITH111_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountMailModel); - - smith111MailIcfUid = getIcfUid(accountMailModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, smith111MailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "John.Smith@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Smith"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsmith.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, "PS111", "jsmith"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\js111"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userSmith, UserType.F_EMAIL_ADDRESS, "John.Smith@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userSmith, - ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "\\\\medusa\\User\\Smith_smith111"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(5); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0,3); - dummyAuditService.assertHasDelta(0,ChangeType.ADD, UserType.class); // primary - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(0,ChangeType.ADD, ShadowType.class); // AD account - dummyAuditService.assertExecutionDeltas(1,3); - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, UserType.class); // link, inbound (2 deltas) - dummyAuditService.assertHasDelta(1,ChangeType.ADD, ShadowType.class); // Mail account - dummyAuditService.assertExecutionDeltas(2,2); - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, UserType.class); // inbound - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, ShadowType.class); // AD account - dummyAuditService.assertExecutionDeltas(3,1); - dummyAuditService.assertHasDelta(3,ChangeType.MODIFY, UserType.class); // inbound - SHOULD THIS BE HERE?? FIXME - dummyAuditService.assertExecutionSuccess(); - } - - /** - * Attempt to add two employees that are boh "John Smith". This is the second user. There should be a naming conflict. - * Note: this is a different case than jack-angelica. Jack and Angelica are "externists". Smithes are employees (type "T") - */ - @Test - public void test210Smith222Add() throws Exception { - final String TEST_NAME = "test210Smith222Add"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - addObject(USER_SMITH222_FILE); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - PrismObject userSmith = getUser(USER_SMITH222_OID); - display("User smith222 after change execution", userSmith); - assertUser(userSmith, USER_SMITH222_OID, USER_SMITH222_USERNAME, "John Smith", "John", "Smith"); - assertLinks(userSmith, 2); - String accountAdOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_AD_OID); - String accountMailOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_MAIL_OID); - - // AD ACCOUNT - - // Check shadow - PrismObject accountAdShadow = repositoryService.getObject(ShadowType.class, accountAdOid, null, result); - assertAccountShadowRepo(accountAdShadow, accountAdOid, ACCOUNT_SMITH222_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountAdModel = modelService.getObject(ShadowType.class, accountAdOid, null, task, result); - display("AD shadow", accountAdModel); - assertAccountShadowModel(accountAdModel, accountAdOid, ACCOUNT_SMITH222_AD_DN, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountAdModel); - - smith222AdIcfUid = getIcfUid(accountAdModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, smith222AdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_SMITH222_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_SMITH222_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Smith"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME, "John.Smith2@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_SHARED_FOLDER_OTHER_NAME, "\\\\medusa\\User\\Smith_smith222"); - - // MAIL ACCOUNT - - // Check shadow - PrismObject accountMailShadow = repositoryService.getObject(ShadowType.class, accountMailOid, null, result); - assertAccountShadowRepo(accountMailShadow, accountMailOid, ACCOUNT_SMITH222_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountMailModel = modelService.getObject(ShadowType.class, accountMailOid, null, task, result); - display("Mail shadow", accountMailModel); - assertAccountShadowModel(accountMailModel, accountMailOid, ACCOUNT_SMITH222_MAIL_USERNAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountMailModel); - - smith222MailIcfUid = getIcfUid(accountMailModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, smith222MailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "John.Smith2@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Smith2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsmith2.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, "PS222", "jsmith2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\js222"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userSmith, UserType.F_EMAIL_ADDRESS, "John.Smith2@" + TRAFO_MAIL_DOMAIN); - PrismAsserts.assertPropertyValue(userSmith, - ItemPath.create(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "\\\\medusa\\User\\Smith_smith222"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(5); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0,3); - dummyAuditService.assertHasDelta(0,ChangeType.ADD, UserType.class); // primary - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(0,ChangeType.ADD, ShadowType.class); // AD account - dummyAuditService.assertExecutionDeltas(1,3); - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, UserType.class); // link, inbound (2 deltas) - dummyAuditService.assertHasDelta(1,ChangeType.ADD, ShadowType.class); // Mail account - dummyAuditService.assertExecutionDeltas(2,2); - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, UserType.class); // inbound - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, ShadowType.class); // AD account - dummyAuditService.assertExecutionDeltas(3,1); - dummyAuditService.assertHasDelta(3,ChangeType.MODIFY, UserType.class); // inbound - SHOULD THIS BE HERE?? FIXME - dummyAuditService.assertExecutionSuccess(); - } - - /** - * Attempt to rename two employees that are boh "John Smith". This is the first user. Everything shouyld do as normal. - * Note: this is a different case than jack-angelica. Jack and Angelica are "externists". Smithes are employees (type "T") - */ - @Test - public void test300Smith111Rename() throws Exception { - final String TEST_NAME = "test300Smith111Rename"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); -// addObject(USER_SMITH111_FILE); - - -// displayThen(TEST_NAME); -// result.computeStatus(); -// TestUtil.assertSuccess(result); - - PrismObject userSmith = getUser(USER_SMITH111_OID); - display("User smith111 before change execution", userSmith); - assertUser(userSmith, USER_SMITH111_OID, USER_SMITH111_USERNAME, "John Smith", "John", "Smith"); - assertLinks(userSmith, 2); - String accountAdOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_AD_OID); - String accountMailOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_MAIL_OID); - - // THEN - displayThen(TEST_NAME); - result.computeStatus(); - TestUtil.assertSuccess(result); - - Collection fullNameModification = prismContext.deltaFactory().property() - .createModificationReplacePropertyCollection(UserType.F_FAMILY_NAME, userSmith.getDefinition(), new PolyString("Smither", "smither")); - prismContext.deltaFactory().object().createModifyDelta(userSmith.getOid(), fullNameModification, UserType.class - ); - - - - modifyUserReplace(userSmith.getOid(), UserType.F_FAMILY_NAME, task, result, new PolyString("Smither", "smither")); - - // AD ACCOUNT - - // Check shadow - PrismObject accountAdShadow = repositoryService.getObject(ShadowType.class, accountAdOid, null, result); - display("AD shadow", accountAdShadow); - assertAccountShadowRepo(accountAdShadow, accountAdOid, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountAdModel = modelService.getObject(ShadowType.class, accountAdOid, null, task, result); - display("AD shadow", accountAdModel); - assertAccountShadowModel(accountAdModel, accountAdOid, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountAdModel); - - smith111AdIcfUid = getIcfUid(accountAdModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, smith111AdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_SMITH111_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_SMITH111_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Smither"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME, "John.Smither@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH111_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_SHARED_FOLDER_OTHER_NAME, "\\\\medusa\\User\\Smither_smith111"); - - // MAIL ACCOUNT - - // Check shadow - PrismObject accountMailShadow = repositoryService.getObject(ShadowType.class, accountMailOid, null, result); - assertAccountShadowRepo(accountMailShadow, accountMailOid, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountMailModel = modelService.getObject(ShadowType.class, accountMailOid, null, task, result); - display("Mail shadow", accountMailModel); - assertAccountShadowModel(accountMailModel, accountMailOid, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountMailModel); - - smith111MailIcfUid = getIcfUid(accountMailModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, smith111MailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "John.Smither@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Smither"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsmith.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, "PS111", "jsmither"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\js111"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH111_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - PrismObject userSmithAfter = getUser(USER_SMITH111_OID); - display("User smith111 after change execution", userSmithAfter); - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userSmithAfter, UserType.F_EMAIL_ADDRESS, "John.Smither@" + TRAFO_MAIL_DOMAIN); - - // [pmed] This is nondeterministic: extension/homedir is filled-in from both AD and Mail resources. (With different values.) - // So it's hard to say which value will be there in the end. - // PrismAsserts.assertPropertyValue(userSmithAfter, - // prismContext.path(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "\\\\medusa\\User\\Smither_smith111"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(5); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0,2); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); // primary -// dummyAuditService.asserHasDelta(0,ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, ShadowType.class); // AD account (outbound) - dummyAuditService.assertExecutionDeltas(1,2); - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, UserType.class); // link, inbound (2 deltas) - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, ShadowType.class); // Mail account (outboud) - dummyAuditService.assertExecutionDeltas(2,2); - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, UserType.class); // inbound - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, ShadowType.class); // AD account (mail change compued from outboud) - dummyAuditService.assertExecutionDeltas(3,1); - dummyAuditService.assertHasDelta(3,ChangeType.MODIFY, UserType.class); // inbound - SHOULD THIS BE HERE?? FIXME - dummyAuditService.assertExecutionSuccess(); - } - - /** - * Attempt to rename two employees that are boh "John Smith". This is the second user. There should be a naming conflict. - * Note: this is a different case than jack-angelica. Jack and Angelica are "externists". Smithes are employees (type "T") - */ - @Test - public void test310Smith222Rename() throws Exception { - final String TEST_NAME = "test310Smith222Rename"; - displayTestTitle(TEST_NAME); - - // GIVEN - Task task = createTask(TEST_NAME); - OperationResult result = task.getResult(); - dummyAuditService.clear(); - - // WHEN - displayWhen(TEST_NAME); - PrismObject userSmith = getUser(USER_SMITH222_OID); - display("User smith222 before change execution", userSmith); - assertUser(userSmith, USER_SMITH222_OID, USER_SMITH222_USERNAME, "John Smith", "John", "Smith"); - assertLinks(userSmith, 2); - String accountAdOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_AD_OID); - String accountMailOid = getLinkRefOid(userSmith, RESOURCE_DUMMY_MAIL_OID); - - // THEN - displayThen(TEST_NAME); - assertSuccess(result); - - modifyUserReplace(userSmith.getOid(), UserType.F_FAMILY_NAME, task, result, new PolyString("Smither", "smither")); - - // AD ACCOUNT - - // Check shadow - PrismObject accountAdShadow = repositoryService.getObject(ShadowType.class, accountAdOid, null, result); - display("AD shadow", accountAdShadow); - assertAccountShadowRepo(accountAdShadow, accountAdOid, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, resourceDummyAdType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountAdModel = modelService.getObject(ShadowType.class, accountAdOid, null, task, result); - display("AD shadow", accountAdModel); - assertAccountShadowModel(accountAdModel, accountAdOid, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, resourceDummyAdType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountAdModel); - - smith222AdIcfUid = getIcfUid(accountAdModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_AD_ID, smith222AdIcfUid); - assertDummyAccount(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME); - assertDummyAccountActivation(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SAM_ACCOUNT_NAME_NAME, ACCOUNT_SMITH222_AD_SAM_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_PRINCIPAL_NAME_NAME, ACCOUNT_SMITH222_AD_SAM_NAME + "@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_GIVEN_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_SN_NAME, "Smither"); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_MAIL_NAME, "John.Smither2@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountNoAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_TELEPHONE_NUMBER_NAME); - assertDummyAccountAttribute(RESOURCE_DUMMY_AD_ID, ACCOUNT_SMITH222_AD_DN_AFTER_RENAME, - DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_AD_USER_SHARED_FOLDER_OTHER_NAME, "\\\\medusa\\User\\Smither_smith222"); - - // MAIL ACCOUNT - - // Check shadow - PrismObject accountMailShadow = repositoryService.getObject(ShadowType.class, accountMailOid, null, result); - assertAccountShadowRepo(accountMailShadow, accountMailOid, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, resourceDummyMailType, caseIgnoreMatchingRule); - - // Check account - PrismObject accountMailModel = modelService.getObject(ShadowType.class, accountMailOid, null, task, result); - display("Mail shadow", accountMailModel); - assertAccountShadowModel(accountMailModel, accountMailOid, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, resourceDummyMailType, caseIgnoreMatchingRule); - assertAdministrativeStatusEnabled(accountMailModel); - - smith222MailIcfUid = getIcfUid(accountMailModel); - - // Check account in dummy resource - assertDummyAccountById(RESOURCE_DUMMY_MAIL_ID, smith222MailIcfUid); - assertDummyAccount(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME); - assertDummyAccountActivation(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, true); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_INTERNET_ADDRESS_NAME, "John.Smither2@" + TRAFO_MAIL_DOMAIN); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_FIRST_NAME_NAME, "John"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_LAST_NAME_NAME, "Smither2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_ID_FILE_NAME, "c:\\install\\test-id-folder\\jsmith2.id"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_SHORT_NAME_NAME, "PS222", "jsmither2"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_FILE_NAME_NAME, "mail\\js222"); - assertDummyAccountAttribute(RESOURCE_DUMMY_MAIL_ID, ACCOUNT_SMITH222_MAIL_USERNAME_AFTER_RENAME, - DUMMY_ACCOUNT_ATTRIBUTE_MAIL_MAIL_DOMAIN_NAME, "TRAFO"); - - PrismObject userSmithAfter = getUser(USER_SMITH222_OID); - display("User smith222 after change execution", userSmithAfter); - // Set by inbound mappings - PrismAsserts.assertPropertyValue(userSmithAfter, UserType.F_EMAIL_ADDRESS, "John.Smither2@" + TRAFO_MAIL_DOMAIN); - // [pmed] This is nondeterministic: extension/homedir is filled-in from both AD and Mail resources. (With different values.) - // So it's hard to say which value will be there in the end. - // PrismAsserts.assertPropertyValue(userSmithAfter, - // prismContext.path(UserType.F_EXTENSION, TRAFO_EXTENSION_HOMEDIR_QNAME), "\\\\medusa\\User\\Smither_smith222"); - - // Check audit - display("Audit", dummyAuditService); - dummyAuditService.assertRecords(5); - dummyAuditService.assertSimpleRecordSanity(); - dummyAuditService.assertAnyRequestDeltas(); - dummyAuditService.assertExecutionDeltas(0,2); - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); // primary -// dummyAuditService.asserHasDelta(0,ChangeType.MODIFY, UserType.class); // link - dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, ShadowType.class); // AD account (outbound) - dummyAuditService.assertExecutionDeltas(1,2); - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, UserType.class); // link, inbound (2 deltas) - dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, ShadowType.class); // Mail account (outboud) - dummyAuditService.assertExecutionDeltas(2,2); - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, UserType.class); // inbound - dummyAuditService.assertHasDelta(2,ChangeType.MODIFY, ShadowType.class); // AD account (mail change compued from outboud) - dummyAuditService.assertExecutionDeltas(3,1); - dummyAuditService.assertHasDelta(3,ChangeType.MODIFY, UserType.class); // inbound - SHOULD THIS BE HERE?? FIXME - dummyAuditService.assertExecutionSuccess(); - } - -} diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUniversity.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUniversity.java index 9ac4ac71923..3e5839c5b50 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUniversity.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestUniversity.java @@ -164,7 +164,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestUniversity.class.getName() + "." + TEST_NAME); OperationResult testResultHr = modelService.testResource(RESOURCE_DUMMY_HR_OID, task); TestUtil.assertSuccess(testResultHr); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java index 7255595554a..f1fa8e26a1f 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestVillage.java @@ -22,7 +22,6 @@ import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.schema.internals.InternalCounters; import com.evolveum.midpoint.schema.internals.InternalMonitor; -import com.evolveum.midpoint.schema.internals.InternalOperationClasses; import com.evolveum.midpoint.schema.processor.ResourceSchema; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectQueryUtil; @@ -266,7 +265,7 @@ protected File getSystemConfigurationFile() { public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); OperationResult testResultHr = modelService.testResource(RESOURCE_DUMMY_SOURCE_OID, task); TestUtil.assertSuccess(testResultHr); @@ -290,7 +289,7 @@ public void test000Sanity() throws Exception { public void test020ResourceOpenDjGet() throws Exception { final String TEST_NAME = "test020ResourceOpenDjGet"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); rememberCounter(InternalCounters.RESOURCE_SCHEMA_FETCH_COUNT); @@ -328,7 +327,7 @@ public void test020ResourceOpenDjGet() throws Exception { public void test022ResourceOpenDjRefinedSchema() throws Exception { final String TEST_NAME = "test022ResourceOpenDjRefinedSchema"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); PrismObject resourceBefore = modelService.getObject(ResourceType.class, RESOURCE_OPENDJ_OID, null, task, result); @@ -381,7 +380,7 @@ public void test022ResourceOpenDjRefinedSchema() throws Exception { public void test100AddSrcAccountHerman() throws Exception { final String TEST_NAME = "test100AddSrcAccountHerman"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_HERMAN_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_SRC_FIRST_NAME, ACCOUNT_HERMAN_FIST_NAME); @@ -403,7 +402,7 @@ public void test100AddSrcAccountHerman() throws Exception { public void test101HermanAssignBasicRole() throws Exception { final String TEST_NAME = "test101HermanAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_HERMAN_NAME); @@ -421,7 +420,7 @@ public void test101HermanAssignBasicRole() throws Exception { public void test102HermanUnAssignBasicRole() throws Exception { final String TEST_NAME = "test102HermanUnAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_HERMAN_NAME); @@ -439,7 +438,7 @@ public void test102HermanUnAssignBasicRole() throws Exception { public void test103HermanAssignBasicAndSimpleRole() throws Exception { final String TEST_NAME = "test103HermanAssignBasicAndSimpleRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_HERMAN_NAME); @@ -459,7 +458,7 @@ public void test103HermanAssignBasicAndSimpleRole() throws Exception { public void test104HermanUnAssignSimpleRoleThenBasic() throws Exception { final String TEST_NAME = "test104HermanUnAssignSimpleRoleThenBasic"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_HERMAN_NAME); @@ -488,7 +487,7 @@ public void test104HermanUnAssignSimpleRoleThenBasic() throws Exception { public void test105ModifySrcAccountHermanRemoveLoc() throws Exception { final String TEST_NAME = "test105ModifySrcAccountHermanRemoveLoc"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount account = dummyResourceSrc.getAccountByUsername(ACCOUNT_HERMAN_USERNAME); @@ -506,7 +505,7 @@ public void test105ModifySrcAccountHermanRemoveLoc() throws Exception { public void test106HermanAssignBasicRole() throws Exception { final String TEST_NAME = "test106HermanAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_HERMAN_NAME); @@ -524,7 +523,7 @@ public void test106HermanAssignBasicRole() throws Exception { public void test107ModifySrcAccountHermanAddLoc() throws Exception { final String TEST_NAME = "test107ModifySrcAccountHermanAddLoc"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount account = dummyResourceSrc.getAccountByUsername(ACCOUNT_HERMAN_USERNAME); @@ -543,7 +542,7 @@ public void test107ModifySrcAccountHermanAddLoc() throws Exception { public void test108ModifySrcAccountHermanRemoveLoc() throws Exception { final String TEST_NAME = "test108ModifySrcAccountHermanRemoveLoc"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount account = dummyResourceSrc.getAccountByUsername(ACCOUNT_HERMAN_USERNAME); @@ -562,7 +561,7 @@ public void test108ModifySrcAccountHermanRemoveLoc() throws Exception { public void test109HermanUnAssignBasicRole() throws Exception { final String TEST_NAME = "test109HermanUnAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_HERMAN_NAME); @@ -580,7 +579,7 @@ public void test109HermanUnAssignBasicRole() throws Exception { public void test110AddSrcAccountLemonhead() throws Exception { final String TEST_NAME = "test110AddSrcAccountLemonhead"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_LEMONHEAD_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_SRC_FIRST_NAME, ACCOUNT_LEMONHEAD_FIST_NAME); @@ -607,7 +606,7 @@ public void test110AddSrcAccountLemonhead() throws Exception { public void test120AddSrcAccountWally() throws Exception { final String TEST_NAME = "test120AddSrcAccountWally"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_WALLY_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_SRC_FIRST_NAME, ACCOUNT_WALLY_FIST_NAME); @@ -627,7 +626,7 @@ public void test120AddSrcAccountWally() throws Exception { public void test121WallyAssignBasicRole() throws Exception { final String TEST_NAME = "test121WallyAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_WALLY_NAME); @@ -644,7 +643,7 @@ public void test121WallyAssignBasicRole() throws Exception { public void test122WallyUnAssignBasicRole() throws Exception { final String TEST_NAME = "test122WallyUnAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_WALLY_NAME); @@ -664,7 +663,7 @@ public void test122WallyUnAssignBasicRole() throws Exception { public void test130AddSrcAccountMancomb() throws Exception { final String TEST_NAME = "test130AddSrcAccountMancomb"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount newAccount = new DummyAccount(ACCOUNT_MANCOMB_USERNAME); newAccount.addAttributeValue(DUMMY_ACCOUNT_ATTRIBUTE_SRC_FIRST_NAME, ACCOUNT_MANCOMB_FIST_NAME); @@ -686,7 +685,7 @@ public void test130AddSrcAccountMancomb() throws Exception { public void test131MancombAssignBasicRole() throws Exception { final String TEST_NAME = "test131WallyAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_MANCOMB_NAME); @@ -703,7 +702,7 @@ public void test131MancombAssignBasicRole() throws Exception { public void test132MancombUnAssignBasicRole() throws Exception { final String TEST_NAME = "test132MancombUnAssignBasicRole"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); PrismObject user = findUserByUsername(USER_MANCOMB_NAME); @@ -724,7 +723,7 @@ public void test132MancombUnAssignBasicRole() throws Exception { public void test150ModifySrcAccountHermanReplaceOrg() throws Exception { final String TEST_NAME = "test150ModifySrcAccountHermanReplaceOrg"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount account = dummyResourceSrc.getAccountByUsername(ACCOUNT_HERMAN_USERNAME); @@ -748,7 +747,7 @@ public void test150ModifySrcAccountHermanReplaceOrg() throws Exception { public void test152ModifySrcAccountHermanDeleteOrg() throws Exception { final String TEST_NAME = "test152ModifySrcAccountHermanDeleteOrg"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); DummyAccount account = dummyResourceSrc.getAccountByUsername(ACCOUNT_HERMAN_USERNAME); @@ -865,7 +864,7 @@ public void test300AddProjectJollyRoger() throws Exception { public void test310ProjectJollyRogerNestedGroup() throws Exception { final String TEST_NAME = "test310ProjectJollyRogerNestedGroup"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); openDJController.addEntry("dn: "+GROUP_JOLLYROGERS_DN+"\n"+ @@ -903,7 +902,7 @@ ShadowType.F_ATTRIBUTES, new QName(RESOURCE_OPENDJ_NAMESPACE, "cn")).eq("admins" public void test319DeleteProjectJollyRoger() throws Exception { final String TEST_NAME = "test319DeleteProjectJollyRoger"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN @@ -928,7 +927,7 @@ public void test319DeleteProjectJollyRoger() throws Exception { public void test350AddRepoUserNoEmployeeNumberRecompute() throws Exception { final String TEST_NAME = "test350AddRepoUserNoEmployeeNumberRecompute"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestVillage.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); PrismObject user = PrismTestUtil.parseObject(USER_MURRAY_FILE); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/grouper/TestGrouperAsyncUpdate.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/grouper/TestGrouperAsyncUpdate.java index eb3254bcac3..3792c77a1dc 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/grouper/TestGrouperAsyncUpdate.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/grouper/TestGrouperAsyncUpdate.java @@ -17,6 +17,7 @@ import com.evolveum.midpoint.schema.internals.InternalCounters; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.task.quartzimpl.tracing.TracerImpl; import com.evolveum.midpoint.test.DummyResourceContoller; import com.evolveum.midpoint.test.TestResource; import com.evolveum.midpoint.test.asserter.ShadowAttributesAsserter; @@ -116,6 +117,8 @@ public class TestGrouperAsyncUpdate extends AbstractStoryTest { public void initSystem(Task initTask, OperationResult initResult) throws Exception { super.initSystem(initTask, initResult); + TracerImpl.checkHashCodeEqualsRelation = true; // temporary + // These are experimental features, so they need to be explicitly enabled. This will be eliminated later, // when we make them enabled by default. sqlRepositoryService.getConfiguration().setEnableIndexOnlyItems(true); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/AbstractLdapTest.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/AbstractLdapTest.java index 8fae1f6b269..d038c29e708 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/AbstractLdapTest.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/AbstractLdapTest.java @@ -44,7 +44,6 @@ import com.evolveum.midpoint.test.util.MidPointTestConstants; import com.evolveum.midpoint.test.util.TestUtil; import com.evolveum.midpoint.testing.story.AbstractStoryTest; -import com.evolveum.midpoint.testing.story.TestTrafo; import com.evolveum.midpoint.util.exception.CommunicationException; import com.evolveum.midpoint.util.exception.ConfigurationException; import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapDependency.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapDependency.java index e924abf39de..9f5ecddcc67 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapDependency.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapDependency.java @@ -8,54 +8,26 @@ package com.evolveum.midpoint.testing.story.ldap; -import static org.testng.AssertJUnit.assertNotNull; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; - -import javax.xml.namespace.QName; - +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.schema.constants.MidPointConstants; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.test.util.TestUtil; +import com.evolveum.midpoint.util.exception.*; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.opends.server.types.DirectoryException; import org.opends.server.types.Entry; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; -import org.testng.AssertJUnit; import org.testng.annotations.AfterClass; import org.testng.annotations.Test; -import com.evolveum.midpoint.util.exception.PolicyViolationException; -import com.evolveum.midpoint.prism.PrismContainer; -import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.delta.ItemDelta; -import com.evolveum.midpoint.prism.delta.ObjectDelta; -import com.evolveum.midpoint.schema.constants.MidPointConstants; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.schema.util.MiscSchemaUtil; -import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.test.util.MidPointTestConstants; -import com.evolveum.midpoint.test.util.TestUtil; -import com.evolveum.midpoint.testing.story.AbstractStoryTest; -import com.evolveum.midpoint.testing.story.TestTrafo; -import com.evolveum.midpoint.util.exception.CommunicationException; -import com.evolveum.midpoint.util.exception.ConfigurationException; -import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; -import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException; -import com.evolveum.midpoint.util.exception.ObjectNotFoundException; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.util.exception.SecurityViolationException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; +import javax.xml.namespace.QName; +import java.io.File; + +import static org.testng.AssertJUnit.assertNotNull; /** * Testing dependencies: @@ -168,7 +140,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestLdapDependency.class.getName() + "." + TEST_NAME); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); TestUtil.assertSuccess(testResultOpenDj); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapReconPerformance.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapReconPerformance.java index 17ae4df87bb..018ad54a77a 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapReconPerformance.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapReconPerformance.java @@ -8,19 +8,15 @@ package com.evolveum.midpoint.testing.story.ldap; -import static org.testng.AssertJUnit.assertNull; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertTrue; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.schema.constants.MidPointConstants; +import com.evolveum.midpoint.schema.internals.InternalCounters; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.test.util.TestUtil; +import com.evolveum.midpoint.util.exception.*; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; import org.opends.server.types.DirectoryException; import org.opends.server.types.Entry; import org.opends.server.util.LDIFException; @@ -30,36 +26,13 @@ import org.testng.annotations.AfterClass; import org.testng.annotations.Test; -import com.evolveum.midpoint.prism.PrismContainerValue; -import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.PrismProperty; -import com.evolveum.midpoint.prism.delta.ObjectDelta; -import com.evolveum.midpoint.prism.path.ItemName; -import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.prism.polystring.PolyString; -import com.evolveum.midpoint.prism.xml.XmlTypeConverter; -import com.evolveum.midpoint.schema.constants.MidPointConstants; -import com.evolveum.midpoint.schema.internals.InternalCounters; -import com.evolveum.midpoint.schema.internals.InternalMonitor; -import com.evolveum.midpoint.schema.internals.InternalOperationClasses; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.test.ldap.OpenDJController; -import com.evolveum.midpoint.test.util.TestUtil; -import com.evolveum.midpoint.testing.story.TestTrafo; -import com.evolveum.midpoint.util.DebugUtil; -import com.evolveum.midpoint.util.MiscUtil; -import com.evolveum.midpoint.util.exception.CommunicationException; -import com.evolveum.midpoint.util.exception.ConfigurationException; -import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; -import com.evolveum.midpoint.util.exception.ObjectNotFoundException; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.util.exception.SecurityViolationException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; +import java.io.File; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static org.testng.AssertJUnit.assertEquals; /** * Reconciliation performance tests. diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapVirtualGroup.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapVirtualGroup.java index a1d1cfa4ac4..f9a5ebf1131 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapVirtualGroup.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapVirtualGroup.java @@ -7,62 +7,30 @@ package com.evolveum.midpoint.testing.story.ldap; -import static org.testng.Assert.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.opends.server.types.DirectoryException; -import org.opends.server.types.Entry; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.testng.AssertJUnit; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -import com.evolveum.midpoint.util.exception.PolicyViolationException; -import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.delta.ItemDelta; -import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.util.PrismAsserts; import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.schema.processor.ResourceAttribute; import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.schema.util.MiscSchemaUtil; import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.test.util.MidPointTestConstants; import com.evolveum.midpoint.test.util.TestUtil; -import com.evolveum.midpoint.testing.story.AbstractStoryTest; -import com.evolveum.midpoint.testing.story.TestTrafo; -import com.evolveum.midpoint.util.exception.CommunicationException; -import com.evolveum.midpoint.util.exception.ConfigurationException; -import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; -import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException; -import com.evolveum.midpoint.util.exception.ObjectNotFoundException; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.util.exception.SecurityViolationException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; +import com.evolveum.midpoint.util.exception.*; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; +import org.opends.server.types.DirectoryException; +import org.opends.server.types.Entry; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ContextConfiguration; +import org.testng.annotations.AfterClass; +import org.testng.annotations.Test; + +import java.io.File; +import java.util.*; + +import static org.testng.Assert.assertEquals; +import static org.testng.AssertJUnit.assertNotNull; /** * Testing virtual groups in openDJ. Group membership is based on attributes of user object. @@ -225,7 +193,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; TestUtil.displayTestTitle(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestLdapVirtualGroup.class.getName() + "." + TEST_NAME); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); TestUtil.assertSuccess(testResultOpenDj); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/hierarchy/AbstractLdapHierarchyTest.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/hierarchy/AbstractLdapHierarchyTest.java index 3450bd5f49f..5ff4d9a274a 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/hierarchy/AbstractLdapHierarchyTest.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/hierarchy/AbstractLdapHierarchyTest.java @@ -36,7 +36,6 @@ import com.evolveum.midpoint.schema.util.MiscSchemaUtil; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.test.util.TestUtil; -import com.evolveum.midpoint.testing.story.TestTrafo; import com.evolveum.midpoint.testing.story.ldap.AbstractLdapTest; import com.evolveum.midpoint.util.exception.CommonException; import com.evolveum.midpoint.util.exception.CommunicationException; @@ -160,7 +159,7 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(AbstractLdapHierarchyTest.class.getName() + "." + TEST_NAME); OperationResult testResultOpenDj = modelService.testResource(RESOURCE_OPENDJ_OID, task); TestUtil.assertSuccess(testResultOpenDj); diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/perf/TestImport.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/perf/TestImport.java index e11e43756b5..a584b683704 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/perf/TestImport.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/perf/TestImport.java @@ -16,7 +16,6 @@ import com.evolveum.midpoint.test.util.MidPointTestConstants; import com.evolveum.midpoint.test.util.TestUtil; import com.evolveum.midpoint.testing.story.AbstractStoryTest; -import com.evolveum.midpoint.testing.story.TestTrafo; import com.evolveum.midpoint.util.statistics.OperationExecutionLogger; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.mysql.cj.jdbc.Driver; @@ -112,7 +111,7 @@ protected void importSystemTasks(OperationResult initResult) { public void test000Sanity() throws Exception { final String TEST_NAME = "test000Sanity"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestImport.class.getName() + "." + TEST_NAME); OperationResult testResultHr = modelService.testResource(RESOURCE_SOURCE_OID, task); TestUtil.assertSuccess(testResultHr); @@ -126,7 +125,7 @@ public void test000Sanity() throws Exception { public void test100RunImport() throws Exception { final String TEST_NAME = "test100RunImport"; displayTestTitle(TEST_NAME); - Task task = taskManager.createTaskInstance(TestTrafo.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestImport.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN diff --git a/testing/story/src/test/resources/mapleLeaf/resource-opendj.xml b/testing/story/src/test/resources/mapleLeaf/resource-opendj.xml index b9a46a0d479..2d8e4ce4e17 100644 --- a/testing/story/src/test/resources/mapleLeaf/resource-opendj.xml +++ b/testing/story/src/test/resources/mapleLeaf/resource-opendj.xml @@ -252,7 +252,7 @@ unlinked true - + http://midpoint.evolveum.com/xml/ns/public/model/action-3#link diff --git a/testing/story/src/test/resources/trafo/resource-dummy-ad.xml b/testing/story/src/test/resources/trafo/resource-dummy-ad.xml deleted file mode 100644 index b2ffa114a4c..00000000000 --- a/testing/story/src/test/resources/trafo/resource-dummy-ad.xml +++ /dev/null @@ -1,557 +0,0 @@ - - - - - - Dummy AD - - - - - connectorType - com.evolveum.icf.dummy.connector.DummyConnector - - - connectorVersion - 2.0 - - - - - - - - AD - true - uuid - - - - true - true - - - - - - - account - default - Default Account - true - ri:AccountObjectClass - - ri:givenName - Given Name - - - $user/givenName - - - - weak - - $user/givenName - - - - - ri:sn - Surname - - 0 - - true - true - true - - - - - - $user/familyName - - - - weak - - $user/familyName - - - - - ri:sAMAccountName - Login name - mr:stringIgnoreCase - - - $user/name - - - $user/employeeType - - - $user/givenName - - - $user/familyName - - - - - - - weak - - $user/name - - - - - ri:userPrincipalName - User principal name - - - $user/name - - - $user/employeeType - - - $user/givenName - - - $user/familyName - - - - - - - - - ri:groups - Groups - - - true - true - true - - - mr:stringIgnoreCase - true - - - strong - - $user/employeeType - - - locality - $user/locality - - - - - - - - icfs:name - Distinguished Name - - - true - true - true - - - mr:stringIgnoreCase - - - - - $user/givenName - - - $user/familyName - - - $user/employeeType - - - - - - - - ri:mail - - - $user/emailAddress - - - - - ri:userSharedFolderOther - - - $user/familyName - - - $user/name - - - $user/employeeType - - - - - - - true - - $user/extension/trafo:homedir - - - - - ri:telephoneNumber - - - $user/telephoneNumber - - - - weak - - $user/telephoneNumber - - - - - ri:physicalDeliveryOfficeName - - - $user/locality - - - - weak - - $user/locality - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ri:accountExpires - - - validTo - $user/activation/validTo - - - - - - - - - - - - - - relaxed - 10 - - - - 10 - - - - - - - login - $shadow/attributes/ri:sAMAccountName - - - - - - - - - - - - -weak - - $focusExists - - - - Delayed delete after account is unassigned and account is disabled - - - $shadow/activation/disableTimestamp - - P1D - - - $shadow/activation/administrativeStatus - - - $shadow/activation/disableReason - - - false - - - - - - - - - - - - - - weak - - - - - - - - - - - - - weak - - - - - - - - - - - - - - - true - - - - polyStringNorm - c:name - - Matches using sAMAccountName for R|T users (sAMAccountName =~ ps\d\d\d\d) or sAMAccountNAme for E users (sAMAccountName =~ jsmith) - $account/attributes/ri:sAMAccountName - - - - - - - - - - linked - true - - - deleted - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink - - - - unlinked - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#link - - - - unmatched - - - - - - diff --git a/testing/story/src/test/resources/trafo/resource-dummy-mail.xml b/testing/story/src/test/resources/trafo/resource-dummy-mail.xml deleted file mode 100644 index df1bd4a68e1..00000000000 --- a/testing/story/src/test/resources/trafo/resource-dummy-mail.xml +++ /dev/null @@ -1,633 +0,0 @@ - - - - - - Dummy Mail - - - - - connectorType - com.evolveum.icf.dummy.connector.DummyConnector - - - connectorVersion - 2.0 - - - - - - - - mail - true - uuid - - - - true - true - - - - - - - - default - Default Account - true - ri:AccountObjectClass - - icfs:uid - GUID - - - true - - - - - icfs:name - Name - - - true - true - true - - - mr:stringIgnoreCase - - - $user/givenName - - - $user/familyName - - - $user/employeeNumber - - - $user/employeeType - - - - - - - weak - - - - - $user/name - - - - - - ri:FirstName - FirstName - - - $user/givenName - - - - - - - weak - - $user/givenName - - - - - - ri:LastName - LastName - - - $user/familyName - - - - - - - weak - - $user/familyName - - - - - - ri:internalId - Generated ID by resource - - - $user/extension/trafo:uid - - - - - ri:ShortName - ShortName - - 0 - unbounded - - mr:stringIgnoreCase - - - $user/givenName - - - $user/familyName - - - $user/employeeNumber - - - $user/name - - - - - - - weak - - - name - $account/attributes/icfs:name - - - - - - $user/name - - - - - ri:idFile - ID File - - 0 - - true - true - false - - - mr:stringIgnoreCase - - weak - - $user/givenName - - - $user/familyName - - - - - - - - - - - - $user/extension/trafo:homedir - - - - - ri:MailFile - MailFile - This attribute should not be updated once created, because it would need the mail db renaming - - weak - - name - - - givenName - - - familyName - - - employeeNumber - - - employeeType - - - - - - - - ri:MailDomain - MailDomain - - weak - - TRAFO - - - - - ri:InternetAddress - Internet Address - - - givenName - $user/givenName - - - familyName - $user/familyName - - - $user/employeeType - - - - - - - - $user/emailAddress - - - - - - - relaxed - - - 10 - - - - - - - - userid - $shadow/attributes/ri:ShortName - - - mail - $shadow/attributes/ri:InternetAddress - - - - - - - - -weak - - $focusExists - - - - Delayed delete after account is unassigned and account is disabled - - - $shadow/activation/disableTimestamp - - P1D - - - $shadow/activation/administrativeStatus - - - $shadow/activation/disableReason - - - false - - - - - - - - - - - - - - weak - - - - - - - - - http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user - - - weak - - - - - - - - - - - - - - ri:disabled - false - true - - - - - - - - true - - - - Correlation rule for both internal employees and external accounts. - - - - - - - c:employeeNumber - - - - - - polyStringNorm - c:name - - - - - - - - - - - - linked - true - - - deleted - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#unlink - - - - unlinked - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#link - - - - - unmatched - - - - - diff --git a/testing/story/src/test/resources/trafo/role-employee.xml b/testing/story/src/test/resources/trafo/role-employee.xml deleted file mode 100644 index 4f544454a6c..00000000000 --- a/testing/story/src/test/resources/trafo/role-employee.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - Employee - - - - - - - - - - description - - - extensionUid - extension/trafo:uid - - - - - - diff --git a/testing/story/src/test/resources/trafo/user-angelica.xml b/testing/story/src/test/resources/trafo/user-angelica.xml deleted file mode 100644 index 310915b917e..00000000000 --- a/testing/story/src/test/resources/trafo/user-angelica.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - angelica - - - - - - Jack Sparrow - Jack - Sparrow - - - - - jack123 - - - - - - enabled - - diff --git a/testing/story/src/test/resources/trafo/user-smith-111.xml b/testing/story/src/test/resources/trafo/user-smith-111.xml deleted file mode 100644 index fc3e6775008..00000000000 --- a/testing/story/src/test/resources/trafo/user-smith-111.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - smith111 - - - - - - John Smith - John - Smith - T - 111 - - - - - jane123 - - - - - - enabled - - diff --git a/testing/story/src/test/resources/trafo/user-smith-222.xml b/testing/story/src/test/resources/trafo/user-smith-222.xml deleted file mode 100644 index 6ba9069cfcc..00000000000 --- a/testing/story/src/test/resources/trafo/user-smith-222.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - smith222 - - - - - - John Smith - John - Smith - T - 222 - - - - - sue123 - - - - - - enabled - - diff --git a/testing/story/testng-integration.xml b/testing/story/testng-integration.xml index 5a01de9738c..1d02932b53a 100644 --- a/testing/story/testng-integration.xml +++ b/testing/story/testng-integration.xml @@ -13,7 +13,6 @@ -