Skip to content

Commit

Permalink
Story test: delayed HR enable/disable
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Oct 10, 2018
1 parent 94938f6 commit c55e90c
Show file tree
Hide file tree
Showing 28 changed files with 1,185 additions and 97 deletions.
Expand Up @@ -34,6 +34,7 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -83,13 +84,15 @@ public class BasicExpressionFunctions {
private static String STRING_PATTERN_HONORIFIC_PREFIX_ENDS_WITH_DOT = "^(\\S+\\.)$";
private static Pattern PATTERN_NICK_NAME = Pattern.compile("^([^\"]*)\"([^\"]+)\"([^\"]*)$");

private PrismContext prismContext;
private Protector protector;
private final PrismContext prismContext;
private final Protector protector;
private final Clock clock;

public BasicExpressionFunctions(PrismContext prismContext, Protector protector) {
public BasicExpressionFunctions(PrismContext prismContext, Protector protector, Clock clock) {
super();
this.prismContext = prismContext;
this.protector = protector;
this.clock = clock;
}

/**
Expand Down Expand Up @@ -767,7 +770,7 @@ public XMLGregorianCalendar parseDateTime(String format, String stringDate) thro
}

public XMLGregorianCalendar currentDateTime() {
return XmlTypeConverter.createXMLGregorianCalendar(System.currentTimeMillis());
return clock.currentTimeXMLGregorianCalendar();
}

private ParsedFullName parseFullName(String fullName) {
Expand Down
Expand Up @@ -15,6 +15,7 @@
*/
package com.evolveum.midpoint.model.common.expression.functions;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.crypto.Protector;
import com.evolveum.midpoint.schema.constants.MidPointConstants;
Expand All @@ -25,11 +26,11 @@
*/
public class FunctionLibraryUtil {

public static FunctionLibrary createBasicFunctionLibrary(PrismContext prismContext, Protector protector) {
public static FunctionLibrary createBasicFunctionLibrary(PrismContext prismContext, Protector protector, Clock clock) {
FunctionLibrary lib = new FunctionLibrary();
lib.setVariableName(MidPointConstants.FUNCTION_LIBRARY_BASIC_VARIABLE_NAME);
lib.setNamespace(MidPointConstants.NS_FUNC_BASIC);
BasicExpressionFunctions func = new BasicExpressionFunctions(prismContext, protector);
BasicExpressionFunctions func = new BasicExpressionFunctions(prismContext, protector, clock);
lib.setGenericFunctions(func);
return lib;
}
Expand Down
Expand Up @@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.Collection;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.common.LocalizationTestUtil;
import com.evolveum.midpoint.repo.api.RepositoryService;
import org.apache.commons.configuration.BaseConfiguration;
Expand Down Expand Up @@ -57,7 +58,7 @@ public static ProtectorImpl createInitializedProtector(PrismContext prismContext
}

public static ExpressionFactory createInitializedExpressionFactory(ObjectResolver resolver, ProtectorImpl protector,
PrismContext prismContext, SecurityContextManager securityContextManager, RepositoryService repositoryService) {
PrismContext prismContext, Clock clock, SecurityContextManager securityContextManager, RepositoryService repositoryService) {
ExpressionFactory expressionFactory = new ExpressionFactory(securityContextManager, prismContext, LocalizationTestUtil.getLocalizationService());
expressionFactory.setObjectResolver(resolver);

Expand Down Expand Up @@ -92,7 +93,7 @@ public static ExpressionFactory createInitializedExpressionFactory(ObjectResolve

// script
Collection<FunctionLibrary> functions = new ArrayList<>();
functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector));
functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector, clock));
functions.add(FunctionLibraryUtil.createLogFunctionLibrary(prismContext));
ScriptExpressionFactory scriptExpressionFactory = new ScriptExpressionFactory(prismContext, protector, repositoryService);
scriptExpressionFactory.setObjectResolver(resolver);
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext;
import com.evolveum.midpoint.repo.common.expression.ExpressionFactory;
import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.prism.*;

import org.testng.annotations.BeforeSuite;
Expand Down Expand Up @@ -77,7 +78,8 @@ public void setup() throws SchemaException, SAXException, IOException {
prismContext = PrismTestUtil.createInitializedPrismContext();
ObjectResolver resolver = new DirectoryFileObjectResolver(MidPointTestConstants.OBJECTS_DIR);
ProtectorImpl protector = ExpressionTestUtil.createInitializedProtector(prismContext);
expressionFactory = ExpressionTestUtil.createInitializedExpressionFactory(resolver, protector, prismContext, null, null);
Clock clock = new Clock();
expressionFactory = ExpressionTestUtil.createInitializedExpressionFactory(resolver, protector, prismContext, clock, null, null);
}

@Test
Expand Down
Expand Up @@ -27,6 +27,7 @@
import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.common.LocalizationService;
import org.testng.AssertJUnit;
import org.testng.annotations.BeforeClass;
Expand Down Expand Up @@ -97,8 +98,9 @@ public void setupFactory() {
PrismContext prismContext = PrismTestUtil.getPrismContext();
ObjectResolver resolver = new DirectoryFileObjectResolver(OBJECTS_DIR);
Protector protector = new ProtectorImpl();
Clock clock = new Clock();
Collection<FunctionLibrary> functions = new ArrayList<>();
functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector));
functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector, clock));
scriptExpressionfactory = new ScriptExpressionFactory(prismContext, protector, null);
scriptExpressionfactory.setObjectResolver(resolver);
scriptExpressionfactory.setFunctions(functions);
Expand Down
Expand Up @@ -15,6 +15,7 @@
*/
package com.evolveum.midpoint.model.common.expression.script;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.model.common.expression.functions.BasicExpressionFunctions;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
Expand Down Expand Up @@ -382,7 +383,8 @@ public void testParseDateTime() throws Exception {
private BasicExpressionFunctions createBasicFunctions() throws SchemaException, SAXException, IOException {
PrismContext prismContext = PrismTestUtil.createInitializedPrismContext();
Protector protector = new ProtectorImpl();
return new BasicExpressionFunctions(prismContext, protector);
Clock clock = new Clock();
return new BasicExpressionFunctions(prismContext, protector, clock);
}

@Test
Expand Down
Expand Up @@ -27,6 +27,7 @@
import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.common.LocalizationTestUtil;
import org.testng.AssertJUnit;
import org.testng.annotations.BeforeClass;
Expand Down Expand Up @@ -90,8 +91,9 @@ public void setupFactory() {
PrismContext prismContext = PrismTestUtil.getPrismContext();
ObjectResolver resolver = new DirectoryFileObjectResolver(OBJECTS_DIR);
Protector protector = new ProtectorImpl();
Clock clock = new Clock();
Collection<FunctionLibrary> functions = new ArrayList<>();
functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector));
functions.add(FunctionLibraryUtil.createBasicFunctionLibrary(prismContext, protector, clock));
scriptExpressionfactory = new ScriptExpressionFactory(prismContext, protector, null);
scriptExpressionfactory.setObjectResolver(resolver);
scriptExpressionfactory.setFunctions(functions);
Expand Down
Expand Up @@ -33,6 +33,7 @@
import com.evolveum.midpoint.repo.common.expression.ExpressionFactory;
import com.evolveum.midpoint.repo.common.expression.Source;
import com.evolveum.midpoint.repo.common.expression.ValuePolicyResolver;
import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.model.common.expression.ExpressionTestUtil;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.OriginType;
Expand Down Expand Up @@ -99,7 +100,8 @@ public void init() throws SchemaException, SAXException, IOException {
prismContext = PrismTestUtil.createInitializedPrismContext();
ObjectResolver resolver = new DirectoryFileObjectResolver(MidPointTestConstants.OBJECTS_DIR);
protector = ExpressionTestUtil.createInitializedProtector(prismContext);
ExpressionFactory expressionFactory = ExpressionTestUtil.createInitializedExpressionFactory(resolver, protector, prismContext, null, null);
Clock clock = new Clock();
ExpressionFactory expressionFactory = ExpressionTestUtil.createInitializedExpressionFactory(resolver, protector, prismContext, clock, null, null);

mappingFactory = new MappingFactory();
mappingFactory.setExpressionFactory(expressionFactory);
Expand Down
1 change: 1 addition & 0 deletions model/model-impl/src/main/resources/ctx-model.xml
Expand Up @@ -45,6 +45,7 @@
scope="singleton">
<constructor-arg name="prismContext" ref="prismContext"/>
<constructor-arg name="protector" ref="protector"/>
<constructor-arg name="clock" ref="clock"/>
</bean>

<bean id="basicFunctionLibrary" class="com.evolveum.midpoint.model.common.expression.functions.FunctionLibrary"
Expand Down
Expand Up @@ -5506,6 +5506,7 @@ protected UserAsserter<Void> assertUser(PrismObject<UserType> user, String messa

protected UserAsserter<Void> assertUserByUsername(String username, String message) throws ObjectNotFoundException, SchemaException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException {
PrismObject<UserType> user = findUserByUsername(username);
assertNotNull("User with username '"+username+"' was not found", user);
UserAsserter<Void> asserter = UserAsserter.forUser(user, message);
initializeAsserter(asserter);
return asserter;
Expand Down
Expand Up @@ -86,6 +86,13 @@ protected void fail(String message) {
}

protected String descWithDetails(Object o) {
if (o == null) {
if (details == null) {
return "null";
} else {
return "null("+details+")";
}
}
if (details == null) {
return o.toString();
} else {
Expand Down
Expand Up @@ -254,4 +254,11 @@ public AbstractRoleAsserter<F,RA> assertRoleMemberhipRefs(int expected) {
super.assertRoleMemberhipRefs(expected);
return this;
}

@Override
public ExtensionAsserter<F, ? extends AbstractRoleAsserter<F,RA>, RA> extension() {
ExtensionAsserter<F, ? extends AbstractRoleAsserter<F,RA>, RA> asserter = new ExtensionAsserter<>(this, getDetails());
copySetupTo(asserter);
return asserter;
}
}
Expand Up @@ -97,6 +97,11 @@ public ActivationAsserter<F, FA, RA> assertValidTo(Date expected) {
assertEquals("Wrong validTo in " + desc(), XmlTypeConverter.createXMLGregorianCalendar(expected), getActivation().getValidTo());
return this;
}

public ActivationAsserter<F, FA, RA> assertEffectiveStatus(ActivationStatusType expected) {
assertEquals("Wrong effective status in " + desc(), expected, getActivation().getEffectiveStatus());
return this;
}

PrismObject<F> getFocus() {
return focusAsserter.getObject();
Expand Down

0 comments on commit c55e90c

Please sign in to comment.