Package org.openiaml.model.tests.inference.model0_4

Source Code of org.openiaml.model.tests.inference.model0_4.UserRolesLoginHandler

/**
*
*/
package org.openiaml.model.tests.inference.model0_4;

import java.util.List;

import org.openiaml.model.model.Parameter;
import org.openiaml.model.model.Value;
import org.openiaml.model.model.components.LoginHandler;
import org.openiaml.model.model.domain.DomainAttribute;
import org.openiaml.model.model.domain.DomainAttributeInstance;
import org.openiaml.model.model.domain.DomainInstance;
import org.openiaml.model.model.domain.DomainIterator;
import org.openiaml.model.model.scopes.Session;
import org.openiaml.model.model.users.Role;
import org.openiaml.model.model.visual.Frame;
import org.openiaml.model.model.visual.InputForm;
import org.openiaml.model.model.visual.InputTextField;
import org.openiaml.model.tests.inference.ValidInferenceTestCase;

/**
* Inference of access control handlers.
*
* @author jmwright
*
*/
public class UserRolesLoginHandler extends ValidInferenceTestCase {

  @Override
  public Class<? extends ValidInferenceTestCase> getInferenceClass() {
    return UserRolesLoginHandler.class;
  }

  /**
   * Test the initial model.
   *
   * @throws Exception
   */
  public void testInitial() throws Exception {
    root = loadDirectly(UserRolesLoginHandler.class);

    Session session = assertHasSession(root, "my session");
    assertNotGenerated(session);
    LoginHandler handler = assertHasLoginHandler(session, "user login handler");
    assertNotGenerated(handler);

    // no user instances
    assertHasNone(session, "iaml:children[iaml:name='current instance']");

  }

  /**
   * There should only be one select wire created.
   *
   * @throws Exception
   */
  public void testSelectWires() throws Exception {
    root = loadAndInfer(UserRolesLoginHandler.class);

    Session session = assertHasSession(root, "my session");

    // generated
    DomainIterator ui = assertHasDomainIterator(session, "current instance");
    assertGenerated(ui);

  }

  /**
   * The "generated primary key" of the Registered User/User should
   * not be a ActivityParameter in the input form.
   *
   * @throws Exception
   */
  public void testPrimaryKeyNotInputField() throws Exception {
    root = loadAndInfer(UserRolesLoginHandler.class);

    Session loginSession = assertHasSession(root, "user login handler login");
    Frame login = assertHasFrame(loginSession, "login");
    InputForm form = assertHasInputForm(login, "login form");

    InputTextField email = assertHasInputTextField(form, "email");
    assertGenerated(email);
    InputTextField password = assertHasInputTextField(form, "password");
    assertGenerated(password);
    assertHasNoInputTextField(form, "generated primary key");
    assertHasNoInputTextField(form, "User.generated primary key");

  }

  /**
   * There should only be 'current password' and 'current email'
   * stored in the session.
   *
   * @throws Exception
   */
  public void testStoredSessionProperties() throws Exception {
    root = loadAndInfer(UserRolesLoginHandler.class);

    Session session = assertHasSession(root, "my session");

    assertGenerated(assertHasValue(session, "current email"));
    assertGenerated(assertHasValue(session, "current password"));
    assertHasNoValue(session, "current generated primary key");
    assertHasNoValue(session, "current User.generated primary key");
    assertHasNoValue(session, "current generated_primary_key");
    assertHasNoValue(session, "current User.generated_primary_key");
    assertHasNoValue(session, "current User_generated_primary_key");

  }

  /**
   * The DomainIterator should contain DomainAttributeInstances.
   *
   * @throws Exception
   */
  public void testDomainIteratorHasAttributes() throws Exception {

    root = loadAndInfer(UserRolesLoginHandler.class);

    Session session = assertHasSession(root, "my session");
    DomainIterator user = assertHasDomainIterator(session, "current instance");
    DomainInstance instance = user.getCurrentInstance();
    assertGenerated(instance);

    Role defaultRole = assertHasRole(root, "User");
    assertGenerated(defaultRole);

    Role registeredUser = assertHasRole(root, "Registered User");
    assertNotGenerated(registeredUser);

    // registered user is extended from default role
    assertGenerated(assertHasExtendsEdge(root, registeredUser, defaultRole));

    {
      DomainAttributeInstance dai = assertHasDomainAttributeInstance(instance, "email");
      assertGenerated(dai);
      DomainAttribute actual = assertHasDomainAttribute(defaultRole, "email");
      assertGenerated(actual);
      // "Registered User.email" is actually an extension of default role.email
      DomainAttribute attr = assertHasDomainAttribute(registeredUser, "email");
      assertGenerated(attr);
      assertGenerated(assertHasExtendsEdge(root, attr, actual));
      assertGenerated(assertHasExtendsEdge(root, dai, attr));
    }

    {
      DomainAttributeInstance dai = assertHasDomainAttributeInstance(instance, "password");
      assertGenerated(dai);
      DomainAttribute actual = assertHasDomainAttribute(defaultRole, "password");
      assertGenerated(actual);
      // "Registered User.email" is actually an extension of default role.email
      DomainAttribute attr = assertHasDomainAttribute(registeredUser, "password");
      assertGenerated(attr);
      assertGenerated(assertHasExtendsEdge(root, attr, actual));
      assertGenerated(assertHasExtendsEdge(root, dai, attr));
    }

  }

  /**
   * The UserInstance select query should not contain anything
   * about generated primary keys.
   *
   * @throws Exception
   */
  public void testUserInstanceSelectWire() throws Exception {
    root = loadAndInfer(UserRolesLoginHandler.class);

    Session session = assertHasSession(root, "my session");
    DomainIterator user = assertHasDomainIterator(session, "current instance");

    assertEqualsOneOf(new String[] {
        "password = :password and email = :email",
        "email = :email and password = :password"
      }, user.getQuery());

    // there should only be two incoming ActivityParameter wires
    List<Parameter> params = user.getInParameterEdges();
    assertEquals(params.toString(), 2, params.size());

    // one from password
    Value password = assertHasValue(session, "current password");
    assertGenerated(password);
    Parameter pw = getParameterFromTo(session, password, user);
    assertGenerated(pw);
    assertEquals("password", pw.getName());

    // one from email
    Value email = assertHasValue(session, "current email");
    assertGenerated(email);
    Parameter pw2 = getParameterFromTo(session, email, user);
    assertGenerated(pw2);
    assertEquals("email", pw2.getName());

  }

}
TOP

Related Classes of org.openiaml.model.tests.inference.model0_4.UserRolesLoginHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.