Add invitation accept/deny method in invite resource.
authorGlen Youngjin Kim <glen.kim@samsung.com>
Fri, 7 Oct 2016 07:23:59 +0000 (16:23 +0900)
committerJee Hyeok Kim <jihyeok13.kim@samsung.com>
Wed, 12 Oct 2016 09:26:12 +0000 (09:26 +0000)
Server can not know the intention of user when a user deletes received
invitations.Therefore, i add a new field "accept" in query. if "accept"
is "1"(accept=1), then it means accept, otherwise(accept=0) deny.

Change-Id: I2030099ed084c3238cc0f5cc4ff7e5f38eba5235
Signed-off-by: Glen Youngjin Kim <glen.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/12937
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Jee Hyeok Kim <jihyeok13.kim@samsung.com>
cloud/account/src/main/java/org/iotivity/cloud/accountserver/Constants.java
cloud/account/src/main/java/org/iotivity/cloud/accountserver/resources/acl/invite/InviteManager.java
cloud/account/src/main/java/org/iotivity/cloud/accountserver/resources/acl/invite/InviteResource.java
cloud/account/src/test/java/org/iotivity/cloud/accountserver/resources/acl/invite/InviteResourceTest.java

index 564ad400044fea5ad01d13b6f84fa2372aaa1157..67fac586219864a1432630dd1dbf3fc5f92b266d 100644 (file)
@@ -27,215 +27,226 @@ import org.iotivity.cloud.base.OICConstants;
 
 public class Constants extends OICConstants {
 
-    public static final String PROPERTIES_FILE_NAME  = "properties"
+    public static final String PROPERTIES_FILE_NAME       = "properties"
             + File.separator + "config.properties";
 
     // Database name
 
-    public static final String DB_NAME               = "ACCOUNTSERVER_DB";
+    public static final String DB_NAME                    = "ACCOUNTSERVER_DB";
 
     // Database table
 
-    public static final String CRL_TABLE             = "CRL_TABLE";
+    public static final String CRL_TABLE                  = "CRL_TABLE";
 
-    public static final String CERTIFICATE_TABLE     = "CERTIFICATE_TABLE";
+    public static final String CERTIFICATE_TABLE          = "CERTIFICATE_TABLE";
 
-    public static final String USER_TABLE            = "USER_TABLE";
+    public static final String USER_TABLE                 = "USER_TABLE";
 
-    public static final String TOKEN_TABLE           = "TOKEN_TABLE";
+    public static final String TOKEN_TABLE                = "TOKEN_TABLE";
 
-    public static final String GROUP_TABLE           = "GROUP_TABLE";
+    public static final String GROUP_TABLE                = "GROUP_TABLE";
 
-    public static final String INVITE_TABLE          = "INVITE_TABLE";
+    public static final String INVITE_TABLE               = "INVITE_TABLE";
 
-    public static final String DEVICE_TABLE          = "DEVICE_TABLE";
+    public static final String DEVICE_TABLE               = "DEVICE_TABLE";
 
-    public static final String ACL_TABLE             = "ACL_TABLE";
+    public static final String ACL_TABLE                  = "ACL_TABLE";
 
-    public static final String ACLTEMPLATE_TABLE     = "ACLTEMPLATE_TABLE";
+    public static final String ACLTEMPLATE_TABLE          = "ACLTEMPLATE_TABLE";
 
     // Database table key
 
-    public static final String KEYFIELD_SN           = "serialNumber";
+    public static final String KEYFIELD_SN                = "serialNumber";
 
-    public static final String KEYFIELD_NA           = "notAfter";
+    public static final String KEYFIELD_NA                = "notAfter";
 
-    public static final String KEYFIELD_NB           = "notBefore";
+    public static final String KEYFIELD_NB                = "notBefore";
 
-    public static final String KEYFIELD_REVOKED      = "revoked";
+    public static final String KEYFIELD_REVOKED           = "revoked";
 
-    public static final String KEYFIELD_UUID         = "uuid";
+    public static final String KEYFIELD_UUID              = "uuid";
 
-    public static final String KEYFIELD_ACCESSTOKEN  = "accesstoken";
+    public static final String KEYFIELD_ACCESSTOKEN       = "accesstoken";
 
-    public static final String KEYFIELD_GID          = "gid";
+    public static final String KEYFIELD_GID               = "gid";
 
-    public static final String KEYFIELD_DID          = "did";
+    public static final String KEYFIELD_DID               = "did";
 
-    public static final String KEYFIELD_ACLID        = "aclid";
+    public static final String KEYFIELD_ACLID             = "aclid";
 
-    public static final String KEYFIELD_DI           = "di";
+    public static final String KEYFIELD_DI                = "di";
 
-    public static final String KEYFIELD_GTYPE        = "gtype";
+    public static final String KEYFIELD_GTYPE             = "gtype";
 
-    public static final String KEYFIELD_GIDLIST      = "gidlist";
+    public static final String KEYFIELD_GIDLIST           = "gidlist";
 
-    public static final String KEYFIELD_MIDLIST      = "midlist";
+    public static final String KEYFIELD_MIDLIST           = "midlist";
 
-    public static final String KEYFIELD_GACL         = "gacl";
+    public static final String KEYFIELD_GACL              = "gacl";
 
-    public static final String KEYFIELD_USERID       = "userid";
+    public static final String KEYFIELD_USERID            = "userid";
 
-    public static final String KEYFIELD_PROVIDER     = "provider";
+    public static final String KEYFIELD_PROVIDER          = "provider";
 
-    public static final String KEYFIELD_ISSUED_TIME  = "issuedtime";
+    public static final String KEYFIELD_ISSUED_TIME       = "issuedtime";
 
-    public static final String KEYFIELD_EXPIRED_TIME = "expiredtime";
+    public static final String KEYFIELD_EXPIRED_TIME      = "expiredtime";
 
-    public static final String KEYFIELD_INVITE_USER  = "inviteUser";
+    public static final String KEYFIELD_INVITE_USER       = "inviteUser";
 
-    public static final String KEYFIELD_INVITED_USER = "invitedUser";
+    public static final String KEYFIELD_INVITED_USER      = "invitedUser";
 
-    public static final String KEYFIELD_ACE_SUBJECT_ID = "subjectuuid";
+    public static final String KEYFIELD_ACE_SUBJECT_ID    = "subjectuuid";
 
-    public static final String KEYFIELD_ACE_SUBJECT_TYPE = "stype";
+    public static final String KEYFIELD_ACE_SUBJECT_TYPE  = "stype";
 
-    public static final String KEYFIELD_ACE_RESOURCE= "resources";
+    public static final String KEYFIELD_ACE_RESOURCE      = "resources";
 
-    public static final String KEYFIELD_ACE_VALIDITY = "validity";
+    public static final String KEYFIELD_ACE_VALIDITY      = "validity";
 
-    public static final String KEYFIELD_ACE_PERMISSION = "permission";
+    public static final String KEYFIELD_ACE_PERMISSION    = "permission";
 
     public static final String KEYFIELD_ACE_RESOURCE_HREF = "href";
 
-    public static final String KEYFIELD_ACE_RESOURCE_RT = "rt";
+    public static final String KEYFIELD_ACE_RESOURCE_RT   = "rt";
 
-    public static final String KEYFIELD_ACE_RESOURCE_IF = "if";
+    public static final String KEYFIELD_ACE_RESOURCE_IF   = "if";
 
     // Request payload key
 
-    public static final String REQ_DEVICE_ID         = "di";
+    public static final String REQ_DEVICE_ID              = "di";
 
-    public static final String REQ_DEVICE_ID_LIST    = "dilist";
+    public static final String REQ_DEVICE_ID_LIST         = "dilist";
 
-    public static final String REQ_UUID_ID           = "uid";
+    public static final String REQ_UUID_ID                = "uid";
 
-    public static final String REQ_ACE_ID            = "aceid";
+    public static final String REQ_ACE_ID                 = "aceid";
 
-    public static final String REQ_ACL_ID            = "aclid";
+    public static final String REQ_ACL_ID                 = "aclid";
 
-    public static final String REQ_ROWNER_ID         = "rowneruuid";
+    public static final String REQ_ROWNER_ID              = "rowneruuid";
 
-    public static final String REQ_ACL_LIST          = "aclist";
+    public static final String REQ_ACL_LIST               = "aclist";
 
-    public static final String REQ_OWNER_ID          = "oid";
+    public static final String REQ_OWNER_ID               = "oid";
 
-    public static final String REQ_AUTH_CODE         = "authcode";
+    public static final String REQ_AUTH_CODE              = "authcode";
 
-    public static final String REQ_AUTH_PROVIDER     = "authprovider";
+    public static final String REQ_AUTH_PROVIDER          = "authprovider";
 
-    public static final String REQ_ACCESS_TOKEN      = "accesstoken";
+    public static final String REQ_ACCESS_TOKEN           = "accesstoken";
 
-    public static final String REQ_LOGIN             = "login";
+    public static final String REQ_LOGIN                  = "login";
 
-    public static final String REQ_REFRESH_TOKEN     = "refreshtoken";
+    public static final String REQ_REFRESH_TOKEN          = "refreshtoken";
 
-    public static final String REQ_GRANT_TYPE        = "granttype";
+    public static final String REQ_GRANT_TYPE             = "granttype";
 
-    public static final String REQ_AUTH_OPTIONS      = "options";
+    public static final String REQ_AUTH_OPTIONS           = "options";
 
-    public static final String REQ_REQUEST_METHOD    = "rm";
+    public static final String REQ_REQUEST_METHOD         = "rm";
 
-    public static final String REQ_REQUEST_URI       = "uri";
+    public static final String REQ_REQUEST_URI            = "uri";
 
-    public static final String REQ_SEARCH_USER_ID    = "sid";
+    public static final String REQ_SEARCH_USER_ID         = "sid";
 
-    public static final String REQ_SEARCH_CRITERIA   = "search";
+    public static final String REQ_SEARCH_CRITERIA        = "search";
 
-    public static final String REQ_GROUP_ID          = "gid";
+    public static final String REQ_GROUP_ID               = "gid";
 
-    public static final String REQ_GROUP_MASTER_ID   = "gmid";
+    public static final String REQ_GROUP_MASTER_ID        = "gmid";
 
-    public static final String REQ_GROUP_TYPE        = "gtype";
+    public static final String REQ_GROUP_TYPE             = "gtype";
 
-    public static final String REQ_MEMBER            = "mid";
+    public static final String REQ_MEMBER                 = "mid";
 
-    public static final String REQ_LAST_UPDATE       = "lu";
+    public static final String REQ_LAST_UPDATE            = "lu";
 
-    public static final String REQ_THIS_UPDATE       = "tu";
+    public static final String REQ_THIS_UPDATE            = "tu";
 
-    public static final String REQ_NEXT_UPDATE       = "nu";
+    public static final String REQ_NEXT_UPDATE            = "nu";
 
-    public static final String REQ_CRL               = "crl";
+    public static final String REQ_CRL                    = "crl";
 
-    public static final String REQ_SERIAL_NUMBER     = "rcsn";
+    public static final String REQ_SERIAL_NUMBER          = "rcsn";
 
-    public static final String REQ_MEMBER_LIST       = "midlist";
+    public static final String REQ_MEMBER_LIST            = "midlist";
 
-    public static final String REQ_GTYPE_PRIVATE     = "Private";
+    public static final String REQ_GTYPE_PRIVATE          = "Private";
 
-    public static final String REQ_GTYPE_PUBLIC      = "Public";
+    public static final String REQ_GTYPE_PUBLIC           = "Public";
 
-    public static final String REQ_CSR               = "csr";
+    public static final String REQ_CSR                    = "csr";
 
-    public static final String REQ_INVITE            = "invite";
+    public static final String REQ_INVITE                 = "invite";
 
     // Response payload key
 
-    public static final String RESP_ACCESS_TOKEN     = "accesstoken";
+    public static final String RESP_ACCESS_TOKEN          = "accesstoken";
 
-    public static final String RESP_REFRESH_TOKEN    = "refreshtoken";
+    public static final String RESP_REFRESH_TOKEN         = "refreshtoken";
 
-    public static final String RESP_TOKEN_TYPE       = "tokentype";
+    public static final String RESP_TOKEN_TYPE            = "tokentype";
 
-    public static final String RESP_EXPIRES_IN       = "expiresin";
+    public static final String RESP_EXPIRES_IN            = "expiresin";
 
-    public static final String RESP_REDIRECT_URI     = "redirecturi";
+    public static final String RESP_REDIRECT_URI          = "redirecturi";
 
-    public static final String RESP_CERTIFICATE      = "certificate";
+    public static final String RESP_CERTIFICATE           = "certificate";
 
-    public static final String RESP_SERVER_ID        = "sid";
+    public static final String RESP_SERVER_ID             = "sid";
 
-    public static final String RESP_DEVICES          = "devices";
+    public static final String RESP_DEVICES               = "devices";
 
-    public static final String RESP_UUID             = "uid";
+    public static final String RESP_UUID                  = "uid";
 
-    public static final String RESP_USER_INFO        = "uinfo";
+    public static final String RESP_USER_INFO             = "uinfo";
 
-    public static final String RESP_USER_LIST        = "ulist";
+    public static final String RESP_USER_LIST             = "ulist";
 
-    public static final String RESP_DEVICE_ID        = "di";
+    public static final String RESP_DEVICE_ID             = "di";
 
-    public static final String RESP_CERT             = "cert";
+    public static final String RESP_CERT                  = "cert";
 
-    public static final String RESP_CACERT           = "cacert";
+    public static final String RESP_CACERT                = "cacert";
 
-    public static final String RESP_INVITE           = "invite";
+    public static final String RESP_INVITE                = "invite";
 
-    public static final String RESP_INVITED          = "invited";
+    public static final String RESP_INVITED               = "invited";
 
-    public static final String RESP_ACL_ALLOWED      = "Allowed";
+    public static final String RESP_ACL_ALLOWED           = "Allowed";
 
-    public static final String RESP_ACL_DENIED       = "Denied";    
+    public static final String RESP_ACL_DENIED            = "Denied";
 
-    public static final String ENCODING = "encoding";
+    public static final String ENCODING                   = "encoding";
 
-    public static final String DATA = "data";
+    public static final String DATA                       = "data";
 
-    public static final String CERT = "cert";
+    public static final String CERT                       = "cert";
+
+    public static final String CERT_CHAIN                 = "certchain";
+
+    // query parameter key
+
+    public static final String REQ_INVITE_ACCEPT          = "accept";
+
+    // constants
+
+    public static final String INVITE_ACCEPT              = "1";
+
+    public static final String INVITE_DENY                = "0";
 
-    public static final String CERT_CHAIN = "certchain";
     // static token type
 
-    public static final String TOKEN_TYPE_BEARER     = "bearer";
+    public static final String TOKEN_TYPE_BEARER          = "bearer";
 
-    public static final int    TOKEN_INFINITE        = -1;
+    public static final int    TOKEN_INFINITE             = -1;
 
     // auth servers
 
-    public static final String GITHUB                = "Github";
+    public static final String GITHUB                     = "Github";
 
-    public static final String SAMSUNG               = "Samsung";
+    public static final String SAMSUNG                    = "Samsung";
 
-    public static final String GOOGLE                = "Google";
+    public static final String GOOGLE                     = "Google";
 }
index cf02820169ffaefb1172bbdc160e782c8820d0a6..27bd56c07a69d2a76508593d78e76f022820ba48 100644 (file)
@@ -23,11 +23,13 @@ package org.iotivity.cloud.accountserver.resources.acl.invite;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 
 import org.iotivity.cloud.accountserver.Constants;
 import org.iotivity.cloud.accountserver.db.AccountDBManager;
 import org.iotivity.cloud.accountserver.db.InviteTable;
+import org.iotivity.cloud.accountserver.resources.acl.group.GroupManager;
 import org.iotivity.cloud.accountserver.util.TypeCastingManager;
 import org.iotivity.cloud.base.device.Device;
 import org.iotivity.cloud.base.exception.ServerException.BadRequestException;
@@ -95,8 +97,10 @@ public class InviteManager {
      *            id of invited user
      * @param gid
      *            id of group which the user was invited to
+     * @param accepted
+     *            value of invitation accept or deny
      */
-    public void deleteInvitation(String mid, String gid) {
+    public void deleteInvitation(String mid, String gid, boolean accepted) {
         HashMap<String, Object> condition = new HashMap<>();
         condition.put(Constants.REQ_GROUP_ID, gid);
         condition.put(Constants.KEYFIELD_INVITED_USER, mid);
@@ -116,6 +120,15 @@ public class InviteManager {
         AccountDBManager.getInstance().deleteRecord(Constants.INVITE_TABLE,
                 condition);
 
+        /* add user into group */
+        if (accepted) {
+
+            HashSet<String> midlist = new HashSet<String>();
+            midlist.add(mid);
+
+            GroupManager.getInstance().addGroupMember(gid, midlist);
+        }
+
         notifyToSubscriber(mid);
         for (String uid : uidList) {
             notifyToSubscriber(uid);
@@ -168,8 +181,8 @@ public class InviteManager {
             for (InviteTable invite : inviteList) {
                 HashMap<String, String> inviteElement = new HashMap<>();
                 inviteElement.put(Constants.REQ_GROUP_ID, invite.getGid());
-                inviteElement
-                        .put(Constants.REQ_MEMBER, invite.getInvitedUser());
+                inviteElement.put(Constants.REQ_MEMBER,
+                        invite.getInvitedUser());
                 invitePayloadData.add(inviteElement);
             }
         }
@@ -235,14 +248,14 @@ public class InviteManager {
      * 
      * @return returns invite and invited information of the user
      */
-    public HashMap<String, Object> removeSubscriber(String uid, IRequest request) {
+    public HashMap<String, Object> removeSubscriber(String uid,
+            IRequest request) {
 
         synchronized (mSubscribers) {
             if (mSubscribers.containsKey(uid)) {
 
-                mSubscribers.get(uid).removeIf(
-                        subscriber -> subscriber.mRequest.getRequestId()
-                                .equals(request.getRequestId()));
+                mSubscribers.get(uid).removeIf(subscriber -> subscriber.mRequest
+                        .getRequestId().equals(request.getRequestId()));
             }
         }
 
@@ -261,8 +274,8 @@ public class InviteManager {
 
             for (InviteSubscriber subscriber : mSubscribers.get(id)) {
 
-                subscriber.mSubscriber.sendResponse(MessageBuilder
-                        .createResponse(subscriber.mRequest,
+                subscriber.mSubscriber.sendResponse(
+                        MessageBuilder.createResponse(subscriber.mRequest,
                                 ResponseStatus.CONTENT,
                                 ContentFormat.APPLICATION_CBOR, payload));
             }
index 39b6514a56ab4e34766928045a50289143752e84..d018924db1e41ad41addf79f15cd801838b277c1 100644 (file)
@@ -50,6 +50,10 @@ public class InviteResource extends Resource {
 
     private Cbor<HashMap<String, Object>> mCbor          = new Cbor<>();
 
+    private enum ReqType {
+        NONE, CANCEL_INVITATION, DELETE_INVITATION
+    };
+
     public InviteResource() {
         super(Arrays.asList(Constants.PREFIX_OIC, Constants.ACL_URI,
                 Constants.INVITE_URI));
@@ -154,11 +158,32 @@ public class InviteResource extends Resource {
         String gid = queryParams.get(Constants.REQ_GROUP_ID).get(0);
         String uid = queryParams.get(Constants.REQ_UUID_ID).get(0);
 
+        ReqType reqType = ReqType.NONE;
         if (queryParams.get(Constants.REQ_MEMBER) == null) {
-            mInviteManager.deleteInvitation(uid, gid);
+            reqType = ReqType.DELETE_INVITATION;
         } else {
+            reqType = ReqType.CANCEL_INVITATION;
+        }
+
+        if (reqType.equals(ReqType.DELETE_INVITATION)) {
+
+            String acceptStr = queryParams.get(Constants.REQ_INVITE_ACCEPT)
+                    .get(0);
+            boolean accepted = false;
+            if (acceptStr.equals(Constants.INVITE_ACCEPT)) {
+                accepted = true;
+            }
+
+            mInviteManager.deleteInvitation(uid, gid, accepted);
+
+        } else if (reqType.equals(ReqType.CANCEL_INVITATION)) {
+
             String mid = queryParams.get(Constants.REQ_MEMBER).get(0);
             mInviteManager.cancelInvitation(uid, gid, mid);
+
+        } else {
+
+            throw new BadRequestException("queryData is not enough");
         }
 
         return MessageBuilder.createResponse(request, ResponseStatus.DELETED);
index 2f7600d4dc8274c2f6c4424d9982b555f5d9ebdf..e7f84ce3304f75fa926e34718c17428a00328c68 100644 (file)
@@ -33,6 +33,7 @@ import java.util.concurrent.CountDownLatch;
 
 import org.iotivity.cloud.accountserver.Constants;
 import org.iotivity.cloud.accountserver.db.MongoDB;
+import org.iotivity.cloud.accountserver.resources.acl.group.GroupResource;
 import org.iotivity.cloud.base.device.CoapDevice;
 import org.iotivity.cloud.base.exception.ServerException.PreconditionFailedException;
 import org.iotivity.cloud.base.protocols.IRequest;
@@ -53,13 +54,18 @@ import org.mockito.stubbing.Answer;
 
 public class InviteResourceTest {
     private static final String           INVITE_URI        = Constants.INVITE_FULL_URI;
+    private static final String           GROUP_URI         = Constants.GROUP_FULL_URI;
 
     private static final String           TEST_INVITE_USER  = "u0001";
     private static final String           TEST_INVITED_USER = "u0002";
     private static final String           TEST_GROUP_ID     = "g0001";
 
+    private String                        mInvitedGroupId   = null;
+
     private InviteResource                mInviteResource   = null;
 
+    private GroupResource                 mGroupResource    = new GroupResource();
+
     private CountDownLatch                mLatch            = null;
 
     private CoapDevice                    mMockDevice       = null;
@@ -91,6 +97,18 @@ public class InviteResourceTest {
                 CoapResponse resp = (CoapResponse) args[0];
                 mResponse = resp;
 
+                if (resp.getPayloadSize() != 0) {
+
+                    HashMap<String, Object> payloadData = mCbor
+                            .parsePayloadFromCbor(resp.getPayload(),
+                                    HashMap.class);
+
+                    if (payloadData.containsKey(Constants.REQ_GROUP_ID)) {
+                        mInvitedGroupId = (String) payloadData
+                                .get(Constants.REQ_GROUP_ID);
+                    }
+                }
+
                 mLatch.countDown();
 
                 return resp;
@@ -247,11 +265,25 @@ public class InviteResourceTest {
     }
 
     @Test
-    public void testDeleteInvitation() throws Exception {
+    public void testDeleteInvitationForAccept() throws Exception {
 
-        sendInvitation(TEST_GROUP_ID, TEST_INVITED_USER);
+        createGroup(TEST_INVITE_USER, "Public");
+        sendInvitation(mInvitedGroupId, TEST_INVITED_USER);
 
-        deleteInvitation(TEST_GROUP_ID, TEST_INVITED_USER, "");
+        deleteInvitationWithQuery(mInvitedGroupId, TEST_INVITED_USER, true);
+
+        assertTrue(mLatch.await(1L, SECONDS));
+        assertEquals(mResponse.getStatus(), ResponseStatus.DELETED);
+
+    }
+
+    @Test
+    public void testDeleteInvitationForDeny() throws Exception {
+
+        createGroup(TEST_INVITE_USER, "Public");
+        sendInvitation(mInvitedGroupId, TEST_INVITED_USER);
+
+        deleteInvitationWithQuery(mInvitedGroupId, TEST_INVITED_USER, false);
 
         assertTrue(mLatch.await(1L, SECONDS));
         assertEquals(mResponse.getStatus(), ResponseStatus.DELETED);
@@ -347,4 +379,43 @@ public class InviteResourceTest {
         return false;
     }
 
+    private void deleteInvitationWithQuery(String gid, String uid,
+            boolean accept) {
+
+        int acceptInt = 0;
+
+        if (accept)
+            acceptInt = 1;
+
+        String uriQuery = Constants.REQ_GROUP_ID + "=" + gid + ";"
+                + Constants.REQ_UUID_ID + "=" + uid + ";"
+                + Constants.REQ_INVITE_ACCEPT + "=" + acceptInt;
+
+        IRequest request = MessageBuilder.createRequest(RequestMethod.DELETE,
+                INVITE_URI, uriQuery);
+
+        mInviteResource.onDefaultRequestReceived(mMockDevice, request);
+    }
+
+    private void createGroup(String gmid, String gtype) {
+
+        IRequest request = createGroupRequest(gmid, gtype);
+
+        mGroupResource.onDefaultRequestReceived(mMockDevice, request);
+    }
+
+    private IRequest createGroupRequest(String uuid, String gtype) {
+
+        IRequest request = null;
+
+        HashMap<String, Object> payloadData = new HashMap<String, Object>();
+        payloadData.put("gmid", uuid);
+        payloadData.put("gtype", gtype);
+
+        request = MessageBuilder.createRequest(RequestMethod.POST, GROUP_URI,
+                null, ContentFormat.APPLICATION_CBOR,
+                mCbor.encodingPayloadToCbor(payloadData));
+
+        return request;
+    }
 }
\ No newline at end of file