Repository: stratos
Updated Branches:
  refs/heads/master 9ea2e1d0d -> 800120adc


Added user management mock operations for rest endpoint


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/56afc79f
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/56afc79f
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/56afc79f

Branch: refs/heads/master
Commit: 56afc79f4b599ec8c684515ac482ace60d191f17
Parents: f010309
Author: Shiro <[email protected]>
Authored: Fri Sep 26 17:18:51 2014 +0530
Committer: Shiro <[email protected]>
Committed: Fri Sep 26 17:18:51 2014 +0530

----------------------------------------------------------------------
 .../endpoint/handlers/StratosMockHandler.java   | 41 ---------------
 .../stratos/rest/endpoint/mock/MockContext.java | 55 +++++++++++++++++++-
 .../rest/endpoint/mock/StratosTestAdmin.java    | 47 +++++++++++++++++
 3 files changed, 101 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/56afc79f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
index 6c04de1..f4994fe 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/handlers/StratosMockHandler.java
@@ -94,47 +94,6 @@ public class StratosMockHandler extends 
AbstractAuthenticationAuthorizationHandl
             carbonContext.setUsername(username);
             
             return null;
-            /*RealmService realmService = ServiceHolder.getRealmService();
-            RegistryService registryService = 
ServiceHolder.getRegistryService();
-            String tenantDomain = MultitenantUtils.getTenantDomain(username);
-            int tenantId = 
realmService.getTenantManager().getTenantId(tenantDomain);
-            
-            UserRealm userRealm = null;
-            if (certObject == null) {
-                userRealm = 
AnonymousSessionUtil.getRealmByTenantDomain(registryService, realmService, 
tenantDomain);
-                if (userRealm == null) {
-                    log .error("Invalid domain or unactivated tenant login");
-                    // is this the correct HTTP code for this scenario ? (401)
-                    return 
Response.status(Response.Status.UNAUTHORIZED).header("WWW-Authenticate", 
"Basic").
-                            
type(MediaType.APPLICATION_JSON).entity(Utils.buildMessage("Tenant not 
found")).build();
-                }
-            }
-            username = MultitenantUtils.getTenantAwareUsername(username);
-            if (certObject != null || 
userRealm.getUserStoreManager().authenticate(username, password)) {  // if 
authenticated
-
-                // setting the correct tenant info for downstream code..
-                PrivilegedCarbonContext carbonContext = 
PrivilegedCarbonContext.getThreadLocalCarbonContext();
-                carbonContext.setTenantDomain(tenantDomain);
-                carbonContext.setTenantId(tenantId);
-                carbonContext.setUsername(username);
-                //populate the secuirtyContext of authenticated user
-                SecurityContext securityContext = new 
StratosSecurityContext(username);
-                message.put(SecurityContext.class, securityContext);
-
-                // set the authenticated flag and let the request to continue
-                AuthenticationContext.setAuthenticated(true);
-                if (log.isDebugEnabled()) {
-                    log.debug("authenticated using the " + 
CookieBasedAuthenticationHandler.class.getName() + "for username  :" +
-                            username + "tenantDomain : " + tenantDomain + " 
tenantId : " + tenantId);
-                }
-                return null;
-            } else {
-                log.warn("unable to authenticate the request");
-                // authentication failed, request the authetication, add the 
realm name if needed to the value of WWW-Authenticate
-                return 
Response.status(Response.Status.UNAUTHORIZED).header("WWW-Authenticate", 
"Basic").
-                        
type(MediaType.APPLICATION_JSON).entity(Utils.buildMessage("Authentication 
failed. Please " +
-                        "check your username/password")).build();
-            }*/
         } catch (Exception exception) {
             log.error("Authentication failed",exception);
             // server error in the eyes of the client. Hence 5xx HTTP code.

http://git-wip-us.apache.org/repos/asf/stratos/blob/56afc79f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
index c6d355f..d8d75cc 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
@@ -22,6 +22,7 @@ import org.apache.stratos.common.beans.TenantInfoBean;
 import org.apache.stratos.manager.dto.Cartridge;
 import org.apache.stratos.manager.dto.SubscriptionInfo;
 import org.apache.stratos.manager.subscription.SubscriptionDomain;
+import org.apache.stratos.manager.user.mgt.beans.UserInfoBean;
 import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean;
 import org.apache.stratos.rest.endpoint.bean.StratosAdminResponse;
 import org.apache.stratos.rest.endpoint.bean.SubscriptionDomainRequest;
@@ -50,6 +51,7 @@ public class MockContext {
     private Map<Integer, Map<String,Cartridge>> availableMultiTenantCartridges 
= new HashMap<Integer, Map<String,Cartridge>>();
     private Map<Integer, Map<String,Cartridge>> subscribedCartridges = new 
HashMap<Integer, Map<String,Cartridge>>();
     private Map<String,TenantInfoBean> tenantMap = new HashMap<String, 
TenantInfoBean>();
+    private Map<Integer, Map<String, UserInfoBean>> tenantUserMap= new 
HashMap<Integer, Map<String, UserInfoBean>>();
     private Map<String, Integer> tenantIdMap = new HashMap<String, Integer>();
     private Map<Integer, Map<String,Partition>> partitionMap = new 
HashMap<Integer, Map<String, Partition>>();
     private Map<Integer, Map<String,AutoscalePolicy>> autoscalePolicyMap = new 
HashMap<Integer, Map<String, AutoscalePolicy>>();
@@ -420,7 +422,7 @@ public class MockContext {
     }
 
     public StratosAdminResponse addTenant(TenantInfoBean tenantInfoBean) 
throws RestAPIException{
-        try{
+       try{
             tenantMap.put(tenantInfoBean.getTenantDomain(),tenantInfoBean);
             tenantInfoBean.setTenantId(tenantIdCount);
             tenantIdMap.put(tenantInfoBean.getAdmin(), tenantIdCount++);
@@ -918,6 +920,57 @@ public class MockContext {
         return stratosAdminResponse;
        }
        
+       public void addUser(UserInfoBean user) {
+               int tenantId = getTenantId();
+               Map<String, UserInfoBean> users;
+               
+               if(tenantUserMap.containsKey(tenantId)) {
+                       users = tenantUserMap.get(tenantId);
+               }
+               else {
+                       users = new HashMap<String, UserInfoBean>();
+                       tenantUserMap.put(tenantId, users);
+               }
+               
+               users.put(user.getUserName(), user);
+       }
+       
+       public void deleteUser(String userName) {
+               int tenantId = getTenantId();
+               Map<String, UserInfoBean> users;
+               
+               if(!tenantUserMap.containsKey(tenantId)) {
+                       return;
+               }
+               
+               users = tenantUserMap.get(tenantId);
+               users.remove(userName);
+       }
+       
+       public void updateUser(UserInfoBean user) {
+               int tenantId = getTenantId();
+               Map<String, UserInfoBean> users;
+               
+               if(!tenantUserMap.containsKey(tenantId)) {
+                       return;
+               }
+               
+               users = tenantUserMap.get(tenantId);
+               if(users.containsKey(user.getUserName())) {
+                       users.put(user.getUserName(), user);
+               }
+       }
+       
+       public List<UserInfoBean> getAllUsers() {
+               int tenantId = getTenantId();
+        List<UserInfoBean> userList = new ArrayList<UserInfoBean>();
+        
+        if(tenantUserMap.containsKey(tenantId)) {
+               userList.addAll(tenantUserMap.get(tenantId).values());
+               }
+        return userList;
+    }
+       
     private int getTenantId() {
        String userName = 
CarbonContext.getThreadLocalCarbonContext().getUsername();
        if (tenantIdMap.containsKey(userName)){

http://git-wip-us.apache.org/repos/asf/stratos/blob/56afc79f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
index 5e878e1..0b94641 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
@@ -32,6 +32,7 @@ import org.apache.stratos.manager.exception.ADCException;
 import org.apache.stratos.manager.exception.ServiceDoesNotExistException;
 import org.apache.stratos.manager.subscription.CartridgeSubscription;
 import org.apache.stratos.manager.subscription.SubscriptionDomain;
+import org.apache.stratos.manager.user.mgt.beans.UserInfoBean;
 import org.apache.stratos.rest.endpoint.ServiceHolder;
 import org.apache.stratos.rest.endpoint.Utils;
 import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction;
@@ -58,6 +59,8 @@ import org.wso2.carbon.registry.core.session.UserRegistry;
 import org.wso2.carbon.user.core.tenant.Tenant;
 import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
 
+import java.util.List;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import javax.ws.rs.*;
@@ -71,6 +74,8 @@ public class StratosTestAdmin {
     private static Log log = LogFactory.getLog(StratosTestAdmin.class);
     @Context
     HttpServletRequest httpServletRequest;
+    @Context
+    UriInfo uriInfo;
 
     @POST
     @Path("/init")
@@ -542,5 +547,47 @@ public class StratosTestAdmin {
        public Response synchronizeRepository(String alias) throws 
RestAPIException {
                return Response.noContent().build();
        }
+    
+    @POST
+    @Path("/user")
+    @Consumes("application/json")
+    @Produces("application/json")
+    @AuthorizationAction("/permission/admin/manage/add/users")
+    public Response addUser(UserInfoBean userInfoBean) throws RestAPIException 
{
+       MockContext.getInstance().addUser(userInfoBean);
+        URI url = 
uriInfo.getAbsolutePathBuilder().path(userInfoBean.getUserName()).build();
+        return Response.created(url).build();
+    }
+
+    @DELETE
+    @Path("/user/{userName}")
+    @Consumes("application/json")
+    @Produces("application/json")
+    @AuthorizationAction("/permission/admin/manage/add/users")
+    public Response deleteUser(@PathParam("userName") String userName) throws 
RestAPIException {
+       MockContext.getInstance().deleteUser(userName);
+        return Response.noContent().build();
+    }
+
+    @PUT
+    @Path("/user")
+    @Consumes("application/json")
+    @Produces("application/json")
+    @AuthorizationAction("/permission/admin/manage/add/users")
+    public Response updateUser(UserInfoBean userInfoBean) throws 
RestAPIException {
+       MockContext.getInstance().updateUser(userInfoBean);
+        URI url = 
uriInfo.getAbsolutePathBuilder().path(userInfoBean.getUserName()).build();
+        return Response.created(url).build();
+    }
+
+    @GET
+    @Path("/user/list")
+    @Produces("application/json")
+    @AuthorizationAction("/permission/admin/manage/add/users")
+    public UserInfoBean[] retrieveUsers() throws RestAPIException {
+        List<UserInfoBean> userList = null;
+        userList = MockContext.getInstance().getAllUsers();
+        return userList.toArray(new UserInfoBean[userList.size()]);
+    }
 
 }

Reply via email to