/test-plugin/src/main/java/junit/jira/JiraReadUsersAndGroupsScopeTest.java

https://bitbucket.org/rodogu/remotable-plugins · Java · 119 lines · 104 code · 12 blank · 3 comment · 0 complexity · 9fd93e2a1f408ffc51fb906f18e29aec MD5 · raw file

  1. package junit.jira;
  2. import com.atlassian.jira.rest.client.api.UserRestClient;
  3. import com.atlassian.jira.rest.client.api.domain.User;
  4. import com.atlassian.jira.rpc.soap.client.JiraSoapService;
  5. import com.atlassian.jira.rpc.soap.client.JiraSoapServiceServiceLocator;
  6. import com.atlassian.jira.rpc.soap.client.RemoteUser;
  7. import com.atlassian.plugin.remotable.api.service.SignedRequestHandler;
  8. import com.google.common.collect.ImmutableMap;
  9. import org.apache.axis.client.Stub;
  10. import org.apache.axis.transport.http.HTTPConstants;
  11. import org.json.simple.JSONArray;
  12. import org.json.simple.JSONObject;
  13. import org.json.simple.parser.JSONParser;
  14. import org.junit.Test;
  15. import services.ServiceAccessor;
  16. import java.io.InputStreamReader;
  17. import java.io.OutputStreamWriter;
  18. import java.io.PrintWriter;
  19. import java.net.HttpURLConnection;
  20. import java.net.URI;
  21. import java.net.URL;
  22. import java.util.Hashtable;
  23. import java.util.concurrent.Callable;
  24. import static java.util.Arrays.asList;
  25. import static java.util.Collections.*;
  26. import static junit.ClientKeyRetriever.*;
  27. import static org.junit.Assert.*;
  28. import static services.ServiceAccessor.*;
  29. import static util.JsonUtils.toArray;
  30. /**
  31. *
  32. */
  33. public class JiraReadUsersAndGroupsScopeTest
  34. {
  35. private final SignedRequestHandler signedRequestHandler = ServiceAccessor.getSignedRequestHandler();
  36. private final String hostBaseUrl = System.getProperty("baseurl");
  37. @Test
  38. public void testCall() throws Exception
  39. {
  40. JiraSoapServiceServiceLocator locator = new JiraSoapServiceServiceLocator();
  41. URI url = URI.create(hostBaseUrl + "/rpc/soap/jirasoapservice-v2");
  42. JiraSoapService service = locator.getJirasoapserviceV2(new URL(url + "?user_id=betty"));
  43. String authorization = signedRequestHandler.getAuthorizationHeaderValue(url, "POST", "betty");
  44. ((Stub)service)._setProperty(HTTPConstants.REQUEST_HEADERS, new Hashtable(singletonMap(HTTPConstants.HEADER_AUTHORIZATION, authorization)));
  45. RemoteUser user = service.getUser("", "betty");
  46. assertEquals("betty", user.getName());
  47. }
  48. @Test
  49. public void testJsonCall() throws Exception
  50. {
  51. URI url = URI.create(hostBaseUrl + "/rpc/json-rpc/jirasoapservice-v2");
  52. HttpURLConnection conn = (HttpURLConnection) new URL(url + "?user_id=betty").openConnection();
  53. conn.setDoOutput(true);
  54. conn.setDoInput(true);
  55. conn.setRequestMethod("POST");
  56. conn.setRequestProperty("Content-Type", "application/json");
  57. signedRequestHandler.sign(url, "POST", "betty", conn);
  58. PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream()));
  59. String body = new JSONObject(ImmutableMap.builder()
  60. .put("jsonrpc", "2.0")
  61. .put("method", "getUser")
  62. .put("id", 1)
  63. .put("params", toArray("", "betty"))
  64. .build())
  65. .toJSONString();
  66. System.out.println("sending body: " + body);
  67. out.write(body);
  68. out.close();
  69. JSONObject result = (JSONObject) new JSONParser().parse(new InputStreamReader(conn.getInputStream()));
  70. System.out.println("response: " + result.toJSONString());
  71. assertEquals("betty", ((JSONObject) result.get("result")).get("name"));
  72. }
  73. @Test
  74. public void testJsonLightCall() throws Exception
  75. {
  76. URI url = URI.create(hostBaseUrl + "/rpc/json-rpc/jirasoapservice-v2/getUser");
  77. HttpURLConnection conn = (HttpURLConnection) new URL(url + "?user_id=betty").openConnection();
  78. conn.setDoOutput(true);
  79. conn.setDoInput(true);
  80. conn.setRequestMethod("POST");
  81. conn.setRequestProperty("Content-Type", "application/json");
  82. signedRequestHandler.sign(url, "POST", "betty", conn);
  83. PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream()));
  84. JSONArray arr = new JSONArray();
  85. arr.addAll(asList("", "betty"));
  86. String body = arr.toJSONString();
  87. System.out.println("sending body: " + body);
  88. out.write(body);
  89. out.close();
  90. JSONObject result = (JSONObject) new JSONParser().parse(new InputStreamReader(conn.getInputStream()));
  91. System.out.println("response: " + result.toString());
  92. assertEquals("betty", result.get("name"));
  93. }
  94. @Test
  95. public void testCallWithClient() throws Exception
  96. {
  97. User user = getHostHttpClient().callAs(getClientKey(), "betty", new Callable<User>()
  98. {
  99. @Override
  100. public User call() throws Exception
  101. {
  102. return getService(UserRestClient.class).getUser("betty").claim();
  103. }
  104. });
  105. assertEquals("betty", user.getName());
  106. }
  107. }