[ONOS-3603] Add getGroupByDeviceIdAndAppCookie method in group REST API

* Add a new method for getting a specific group result
* Add descriptions in swagger doc

Change-Id: I62a476bd2cd774eed157dd3954349eb5aa335db3
diff --git a/web/api/src/test/java/org/onosproject/rest/GroupsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/GroupsResourceTest.java
index 78c9d8f..db322e3 100644
--- a/web/api/src/test/java/org/onosproject/rest/GroupsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/GroupsResourceTest.java
@@ -49,6 +49,7 @@
 import org.onosproject.net.group.GroupDescription;
 import org.onosproject.net.group.GroupKey;
 import org.onosproject.net.group.GroupService;
+import org.onosproject.rest.resources.CoreWebApplication;
 
 import javax.ws.rs.core.MediaType;
 import java.io.InputStream;
@@ -70,6 +71,7 @@
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.notNullValue;
 import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 import static org.onosproject.net.NetTestTools.APP_ID;
 
 /**
@@ -100,6 +102,10 @@
     final MockGroup group5 = new MockGroup(deviceId3, 5, "555", 5);
     final MockGroup group6 = new MockGroup(deviceId3, 6, "666", 6);
 
+    public GroupsResourceTest() {
+        super(CoreWebApplication.class);
+    }
+
     /**
      * Mock class for a group.
      */
@@ -444,6 +450,42 @@
     }
 
     /**
+     * Test the result of a rest api GET with specifying device id and appcookie.
+     */
+    @Test
+    public void testGroupByDeviceIdAndAppCookie() {
+        setupMockGroups();
+        expect(mockGroupService.getGroup(anyObject(), anyObject()))
+                .andReturn(group5).anyTimes();
+        replay(mockGroupService);
+        final WebResource rs = resource();
+        final String response = rs.path("groups/" + deviceId3 + "/" + "111").get(String.class);
+        final JsonObject result = JsonObject.readFrom(response);
+        assertThat(result, notNullValue());
+
+        assertThat(result.names(), hasSize(1));
+        assertThat(result.names().get(0), is("groups"));
+        final JsonArray jsonFlows = result.get("groups").asArray();
+        assertThat(jsonFlows, notNullValue());
+        assertThat(jsonFlows, hasGroup(group5));
+    }
+
+    /**
+     * Test whether the REST API returns 404 if no entry has been found.
+     */
+    @Test
+    public void testGroupByDeviceIdAndAppCookieNull() {
+        setupMockGroups();
+        expect(mockGroupService.getGroup(anyObject(), anyObject()))
+                .andReturn(null).anyTimes();
+        replay(mockGroupService);
+        final WebResource rs = resource();
+        final ClientResponse response = rs.path("groups/" + deviceId3 + "/" + "222").get(ClientResponse.class);
+
+        assertEquals(404, response.getStatus());
+    }
+
+    /**
      * Tests creating a group with POST.
      */
     @Test