From 195913d77300f261c47f99d497c394648f19600e Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 27 Sep 2017 15:57:06 +0530 Subject: [PATCH] cloudian: start adding unit tests using wiremock Signed-off-by: Rohit Yadav --- plugins/integrations/cloudian/pom.xml | 6 + .../cloudian/client/CloudianClientTest.java | 112 +++++++++++++++++- 2 files changed, 115 insertions(+), 3 deletions(-) diff --git a/plugins/integrations/cloudian/pom.xml b/plugins/integrations/cloudian/pom.xml index d9836323e53..867436788af 100644 --- a/plugins/integrations/cloudian/pom.xml +++ b/plugins/integrations/cloudian/pom.xml @@ -50,6 +50,12 @@ jackson-databind ${cs.jackson.version} + + com.github.tomakehurst + wiremock + 2.8.0 + test + diff --git a/plugins/integrations/cloudian/test/com/cloudian/client/CloudianClientTest.java b/plugins/integrations/cloudian/test/com/cloudian/client/CloudianClientTest.java index cf69562c011..d5829679b8b 100644 --- a/plugins/integrations/cloudian/test/com/cloudian/client/CloudianClientTest.java +++ b/plugins/integrations/cloudian/test/com/cloudian/client/CloudianClientTest.java @@ -1,16 +1,29 @@ package com.cloudian.client; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; + +import java.util.List; + import org.junit.After; +import org.junit.Assert; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.junit.WireMockRule; + public class CloudianClientTest { + @Rule + public WireMockRule wireMockRule = new WireMockRule(14333); + private CloudianClient client; @Before public void setUp() throws Exception { - client = new CloudianClient("https://admin.hs.yadav.xyz:19443", "admin", "public", false); + client = new CloudianClient("http://localhost:14333", "admin", "public", false); } @After @@ -22,7 +35,55 @@ public class CloudianClientTest { } @Test - public void listUserAccount() throws Exception { + public void listUserAccount() { + final String userId = "someUser"; + final String groupId = "someGroup"; + wireMockRule.stubFor(WireMock.get(urlPathMatching("/user?.*")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody("{\"userId\":\"someUser\",\"userType\":\"User\",\"fullName\":\"John Doe (jdoe)\",\"emailAddr\":\"j@doe.com\",\"address1\":null,\"address2\":null,\"city\":null,\"state\":null,\"zip\":null,\"country\":null,\"phone\":null,\"groupId\":\"someGroup\",\"website\":null,\"active\":\"true\",\"canonicalUserId\":\"b3940886468689d375ebf8747b151c37\",\"ldapEnabled\":false}"))); + + final CloudianUser user = client.listUser(userId, groupId); + Assert.assertEquals(user.getActive(), true); + Assert.assertEquals(user.getUserId(), userId); + Assert.assertEquals(user.getGroupId(), groupId); + Assert.assertEquals(user.getUserType(), "User"); + } + + @Test + public void listUserAccountFail() { + wireMockRule.stubFor(WireMock.get(urlPathMatching("/user?.*")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(""))); + + final CloudianUser user = client.listUser("abc", "xyz"); + Assert.assertNull(user); + } + + @Test + public void listUserAccounts() { + final String groupId = "someGroup"; + wireMockRule.stubFor(WireMock.get(urlPathMatching("/user/list?.*")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody("[{\"userId\":\"someUser\",\"userType\":\"User\",\"fullName\":\"John Doe (jdoe)\",\"emailAddr\":\"j@doe.com\",\"address1\":null,\"address2\":null,\"city\":null,\"state\":null,\"zip\":null,\"country\":null,\"phone\":null,\"groupId\":\"someGroup\",\"website\":null,\"active\":\"true\",\"canonicalUserId\":\"b3940886468689d375ebf8747b151c37\",\"ldapEnabled\":false}]"))); + + final List users = client.listUsers(groupId); + Assert.assertEquals(users.size(), 1); + Assert.assertEquals(users.get(0).getActive(), true); + Assert.assertEquals(users.get(0).getGroupId(), groupId); + } + + @Test + public void listUserAccountsFail() { + wireMockRule.stubFor(WireMock.get(urlPathMatching("/user/list?.*")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(""))); + + final List users = client.listUsers("xyz"); + Assert.assertEquals(users.size(), 0); } @Test @@ -39,7 +100,52 @@ public class CloudianClientTest { } @Test - public void listGroup() throws Exception { + public void listGroup() { + final String groupId = "someGroup"; + wireMockRule.stubFor(WireMock.get(urlPathMatching("/group.*")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody("{\"groupId\":\"someGroup\",\"groupName\":\"/someDomain\",\"ldapGroup\":null,\"active\":\"true\",\"ldapEnabled\":false,\"ldapServerURL\":null,\"ldapUserDNTemplate\":null,\"ldapSearch\":null,\"ldapSearchUserBase\":null,\"ldapMatchAttribute\":null}"))); + + final CloudianGroup group = client.listGroup(groupId); + Assert.assertEquals(group.getActive(), true); + Assert.assertEquals(group.getGroupId(), groupId); + } + + @Test + public void listGroupFail() { + wireMockRule.stubFor(WireMock.get(urlPathMatching("/group.*")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(""))); + + final CloudianGroup group = client.listGroup("xyz"); + Assert.assertNull(group); + } + + @Test + public void listGroups() { + final String groupId = "someGroup"; + wireMockRule.stubFor(WireMock.get(urlEqualTo("/group/list")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody("[{\"groupId\":\"someGroup\",\"groupName\":\"/someDomain\",\"ldapGroup\":null,\"active\":\"true\",\"ldapEnabled\":false,\"ldapServerURL\":null,\"ldapUserDNTemplate\":null,\"ldapSearch\":null,\"ldapSearchUserBase\":null,\"ldapMatchAttribute\":null}]"))); + + final List groups = client.listGroups(); + Assert.assertEquals(groups.size(), 1); + Assert.assertEquals(groups.get(0).getActive(), true); + Assert.assertEquals(groups.get(0).getGroupId(), groupId); + } + + @Test + public void listGroupsFail() { + wireMockRule.stubFor(WireMock.get(urlEqualTo("/group/list")) + .willReturn(WireMock.aResponse() + .withHeader("Content-Type", "application/json") + .withBody(""))); + + final List groups = client.listGroups(); + Assert.assertEquals(groups.size(), 0); } @Test