Package org.sonatype.security.rest.users

Source Code of org.sonatype.security.rest.users.UserToRolePRTest

/*
* Sonatype Nexus (TM) Open Source Version
* Copyright (c) 2007-2014 Sonatype, Inc.
* All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
*
* This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
* which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
* of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
* Eclipse Foundation. All other trademarks are the property of their respective owners.
*/
package org.sonatype.security.rest.users;

import org.sonatype.plexus.rest.resource.PlexusResource;
import org.sonatype.plexus.rest.resource.PlexusResourceException;
import org.sonatype.plexus.rest.resource.error.ErrorMessage;
import org.sonatype.plexus.rest.resource.error.ErrorResponse;
import org.sonatype.security.model.CUserRoleMapping;
import org.sonatype.security.realms.tools.ConfigurationManager;
import org.sonatype.security.realms.tools.NoSuchRoleMappingException;
import org.sonatype.security.rest.model.UserToRoleResource;
import org.sonatype.security.rest.model.UserToRoleResourceRequest;

import junit.framework.Assert;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.resource.ResourceException;

public class UserToRolePRTest
    extends AbstractSecurityRestTest
{

  private UserToRolePlexusResource getResource()
      throws Exception
  {
    return (UserToRolePlexusResource) this.lookup(PlexusResource.class, "UserToRolePlexusResource");
  }

  private ConfigurationManager getConfig()
      throws Exception
  {
    return this.lookup(ConfigurationManager.class);
  }

  public void testPutWithRoles()
      throws Exception
  {
    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "jcoder");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource jcoderBefore = new UserToRoleResource();
    requestRequest.setData(jcoderBefore);
    jcoderBefore.setUserId("jcoder");
    jcoderBefore.setSource(REALM_KEY);
    jcoderBefore.addRole("developer");

    Assert.assertNull(resource.put(null, request, response, requestRequest));
  }

  public void testPutWithOutRoles()
      throws Exception
  {
    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "jcoder");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource jcoderBefore = new UserToRoleResource();
    requestRequest.setData(jcoderBefore);
    jcoderBefore.setUserId("jcoder");
    jcoderBefore.setSource(REALM_KEY);

    try {
      resource.put(null, request, response, requestRequest);
      Assert.fail("Expected ResourceException");
    }
    catch (PlexusResourceException e) {
      // expected
      Assert.assertEquals(400, e.getStatus().getCode());
      Assert.assertTrue(this.getErrorString((ErrorResponse) e.getResultObject(), 0).toLowerCase().contains("role"));
    }
  }

  public void testPutUserNotInConfigYet()
      throws Exception
  {
    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "cdugas");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource cdugasBefore = new UserToRoleResource();
    requestRequest.setData(cdugasBefore);
    cdugasBefore.setUserId("cdugas");
    cdugasBefore.setSource(REALM_KEY);
    cdugasBefore.addRole("developer");

    Assert.assertNull(resource.put(null, request, response, requestRequest));
  }

  public void testExternalRoleNotValidTest()
      throws Exception
  {

    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "cdugas");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource cdugasBefore = new UserToRoleResource();
    requestRequest.setData(cdugasBefore);
    cdugasBefore.setUserId("cdugas");
    cdugasBefore.setSource(REALM_KEY);
    cdugasBefore.addRole("developerINVALID");
    cdugasBefore.addRole("repomaintainerINVALID");

    try {
      resource.put(null, request, response, requestRequest);
      Assert.fail("Expected PlexusResourceException");
    }
    catch (PlexusResourceException e) {
      String error = this.getErrorString((ErrorResponse) e.getResultObject(), 0);
      Assert.assertTrue(error.contains("repomaintainer"));
    }
  }

  protected String getErrorString(ErrorResponse errorResponse, int index) {
    return ((ErrorMessage) errorResponse.getErrors().get(index)).getMsg();
  }

  public void testPutWithRolesAndDelete()
      throws Exception
  {
    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "jcoder");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource jcoderBefore = new UserToRoleResource();
    requestRequest.setData(jcoderBefore);
    jcoderBefore.setUserId("jcoder");
    jcoderBefore.setSource(REALM_KEY);
    jcoderBefore.addRole("developer");

    Assert.assertNull(resource.put(null, request, response, requestRequest));

    // check config
    CUserRoleMapping mapping = this.getConfig().readUserRoleMapping("jcoder", REALM_KEY);
    Assert.assertEquals(1, mapping.getRoles().size());
    Assert.assertTrue(mapping.getRoles().contains("developer"));

    // now delete
    resource.delete(null, request, response);

    // check config
    try {
      this.getConfig().readUserRoleMapping("jcoder", REALM_KEY);
      Assert.fail("Expected: NoSuchRoleMappingException");
    }
    catch (NoSuchRoleMappingException e) {
      // expected
    }

  }

  public void testPutUserNotInConfigYetAndDelete()
      throws Exception
  {
    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "cdugas");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource cdugasBefore = new UserToRoleResource();
    requestRequest.setData(cdugasBefore);
    cdugasBefore.setUserId("cdugas");
    cdugasBefore.setSource(REALM_KEY);
    cdugasBefore.addRole("developer");

    Assert.assertNull(resource.put(null, request, response, requestRequest));

    // check config
    CUserRoleMapping mapping = this.getConfig().readUserRoleMapping("cdugas", REALM_KEY);
    Assert.assertEquals(1, mapping.getRoles().size());
    Assert.assertTrue(mapping.getRoles().contains("developer"));

    // now delete
    resource.delete(null, request, response);

    // check config
    try {
      this.getConfig().readUserRoleMapping("cdugas", REALM_KEY);
      Assert.fail("Expected: NoSuchRoleMappingException");
    }
    catch (NoSuchRoleMappingException e) {
      // expected
    }

  }

  public void testDelete404()
      throws Exception
  {

    UserToRolePlexusResource resource = getResource();

    Request request = new Request();
    Response response = new Response(request);
    request.getAttributes().put(UserToRolePlexusResource.USER_ID_KEY, "FOO-USER");
    request.getAttributes().put(UserToRolePlexusResource.SOURCE_ID_KEY, REALM_KEY);

    UserToRoleResourceRequest requestRequest = new UserToRoleResourceRequest();
    UserToRoleResource cdugasBefore = new UserToRoleResource();
    requestRequest.setData(cdugasBefore);
    cdugasBefore.setUserId("FOO-USER");
    cdugasBefore.setSource(REALM_KEY);
    cdugasBefore.addRole("developer");

    try {
      resource.delete(null, request, response);
    }
    catch (ResourceException e) {
      Assert.assertEquals(404, e.getStatus().getCode());
    }

  }

}
TOP

Related Classes of org.sonatype.security.rest.users.UserToRolePRTest

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.