root = loadAndInfer(UserModifyRoles2.class);
Session session = assertHasSession(root, "target session");
Session loginSession = assertHasSession(root, "current user login");
assertGenerated(loginSession);
ActivityOperation doLogin = assertHasActivityOperation(loginSession, "do login");
StartNode start = assertHasStartNode(doLogin);
FinishNode finish = assertHasFinishNode(doLogin);
CancelNode cancel = assertHasCancelNode(doLogin);
SplitNode split = assertHasSplitNode(doLogin);
JoinNode join = assertHasJoinNode(doLogin);
// there should be a decision node from 'empty?'
DecisionNode decision = assertHasDecisionNode(doLogin, "true?");
assertHasExecutionEdge(doLogin, start, split);
assertHasExecutionEdge(doLogin, join, decision);
assertHasExecutionEdge(doLogin, decision, cancel);
assertHasExecutionEdge(doLogin, decision, finish);
// get the keys in the session
Value email = assertHasValue(session, "current email");
assertGenerated(email);
Value password = assertHasValue(session, "current password");
assertGenerated(password);
// the operation has parameters that are populated
ActivityParameter pemail = assertHasActivityParameter(doLogin, "email");
ActivityParameter ppassword = assertHasActivityParameter(doLogin, "password");
// there will be many operations called 'set'
List<?> sets = typeSelect(doLogin.getNodes(), SetNode.class);
assertEquals(2, sets.size());
boolean emailSet = false;
boolean passwordSet = false;