Repository: ambari Updated Branches: refs/heads/trunk 93ff22f24 -> 7833901f6
AMBARI-11310 - Views: URLStreamProvider.readFrom requires body, no way to do GET request (tbeerbower) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7833901f Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7833901f Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7833901f Branch: refs/heads/trunk Commit: 7833901f6d71bd8c5dc1f1e98b17106017435ed6 Parents: 93ff22f Author: tbeerbower <[email protected]> Authored: Thu May 21 15:13:26 2015 -0400 Committer: tbeerbower <[email protected]> Committed: Thu May 21 15:21:12 2015 -0400 ---------------------------------------------------------------------- .../server/view/ViewAmbariStreamProvider.java | 4 +- .../server/view/ViewURLStreamProvider.java | 4 +- .../view/ViewAmbariStreamProviderTest.java | 70 ++++++++++++++++++++ .../server/view/ViewURLStreamProviderTest.java | 56 ++++++++++++++++ 4 files changed, 130 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/7833901f/ambari-server/src/main/java/org/apache/ambari/server/view/ViewAmbariStreamProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewAmbariStreamProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewAmbariStreamProvider.java index d36f562..1dacd92 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewAmbariStreamProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewAmbariStreamProvider.java @@ -75,14 +75,14 @@ public class ViewAmbariStreamProvider implements AmbariStreamProvider { @Override public InputStream readFrom(String path, String requestMethod, String body, Map<String, String> headers, boolean useAmbariSession) throws IOException { - return getInputStream(path, requestMethod, headers, useAmbariSession, body.getBytes()); + return getInputStream(path, requestMethod, headers, useAmbariSession, body == null ? null : body.getBytes()); } @Override public InputStream readFrom(String path, String requestMethod, InputStream body, Map<String, String> headers, boolean useAmbariSession) throws IOException { - return getInputStream(path, requestMethod, headers, useAmbariSession, IOUtils.toByteArray(body)); + return getInputStream(path, requestMethod, headers, useAmbariSession, body == null ? null : IOUtils.toByteArray(body)); } http://git-wip-us.apache.org/repos/asf/ambari/blob/7833901f/ambari-server/src/main/java/org/apache/ambari/server/view/ViewURLStreamProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewURLStreamProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewURLStreamProvider.java index 32c130d..459cea1 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewURLStreamProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewURLStreamProvider.java @@ -71,13 +71,13 @@ public class ViewURLStreamProvider implements org.apache.ambari.view.URLStreamPr @Override public InputStream readFrom(String spec, String requestMethod, String body, Map<String, String> headers) throws IOException { - return getInputStream(spec, requestMethod, headers, body.getBytes()); + return getInputStream(spec, requestMethod, headers, body == null ? null : body.getBytes()); } @Override public InputStream readFrom(String spec, String requestMethod, InputStream body, Map<String, String> headers) throws IOException { - return getInputStream(spec, requestMethod, headers, IOUtils.toByteArray(body)); + return getInputStream(spec, requestMethod, headers, body == null ? null : IOUtils.toByteArray(body)); } http://git-wip-us.apache.org/repos/asf/ambari/blob/7833901f/ambari-server/src/test/java/org/apache/ambari/server/view/ViewAmbariStreamProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewAmbariStreamProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewAmbariStreamProviderTest.java index d424a29..8549d4a 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewAmbariStreamProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewAmbariStreamProviderTest.java @@ -108,4 +108,74 @@ public class ViewAmbariStreamProviderTest { verify(streamProvider, sessionManager, urlConnection, inputStream); } + + @Test + public void testReadFromNullStringBody() throws Exception { + URLStreamProvider streamProvider = createNiceMock(URLStreamProvider.class); + AmbariSessionManager sessionManager = createNiceMock(AmbariSessionManager.class); + AmbariManagementController controller = createNiceMock(AmbariManagementController.class); + + HttpURLConnection urlConnection = createNiceMock(HttpURLConnection.class); + InputStream inputStream = createNiceMock(InputStream.class); + + String body = null; + + Map<String, String> headers = new HashMap<String, String>(); + headers.put("header", "headerValue"); + headers.put("Cookie", "FOO=bar"); + + Map<String, List<String>> headerMap = new HashMap<String, List<String>>(); + headerMap.put("header", Collections.singletonList("headerValue")); + headerMap.put("Cookie", Collections.singletonList("FOO=bar; AMBARISESSIONID=abcdefg")); + + expect(sessionManager.getCurrentSessionId()).andReturn("abcdefg"); + expect(sessionManager.getSessionCookie()).andReturn("AMBARISESSIONID"); + + expect(controller.getAmbariServerURI("/spec")).andReturn("http://c6401.ambari.apache.org:8080/spec"); + expect(streamProvider.processURL(eq("http://c6401.ambari.apache.org:8080/spec"), eq("requestMethod"), aryEq((byte[])null), eq(headerMap))).andReturn(urlConnection); + expect(urlConnection.getInputStream()).andReturn(inputStream); + + replay(streamProvider, sessionManager, controller, urlConnection, inputStream); + + ViewAmbariStreamProvider viewAmbariStreamProvider = new ViewAmbariStreamProvider(streamProvider, sessionManager, controller); + + Assert.assertEquals(inputStream, viewAmbariStreamProvider.readFrom("spec", "requestMethod", body, headers, true)); + + verify(streamProvider, sessionManager, urlConnection, inputStream); + } + + @Test + public void testReadFromNullInputStreamBody() throws Exception { + URLStreamProvider streamProvider = createNiceMock(URLStreamProvider.class); + AmbariSessionManager sessionManager = createNiceMock(AmbariSessionManager.class); + AmbariManagementController controller = createNiceMock(AmbariManagementController.class); + + HttpURLConnection urlConnection = createNiceMock(HttpURLConnection.class); + InputStream inputStream = createNiceMock(InputStream.class); + + InputStream body = null; + + Map<String, String> headers = new HashMap<String, String>(); + headers.put("header", "headerValue"); + headers.put("Cookie", "FOO=bar"); + + Map<String, List<String>> headerMap = new HashMap<String, List<String>>(); + headerMap.put("header", Collections.singletonList("headerValue")); + headerMap.put("Cookie", Collections.singletonList("FOO=bar; AMBARISESSIONID=abcdefg")); + + expect(sessionManager.getCurrentSessionId()).andReturn("abcdefg"); + expect(sessionManager.getSessionCookie()).andReturn("AMBARISESSIONID"); + + expect(controller.getAmbariServerURI("/spec")).andReturn("http://c6401.ambari.apache.org:8080/spec"); + expect(streamProvider.processURL(eq("http://c6401.ambari.apache.org:8080/spec"), eq("requestMethod"), aryEq((byte[])null), eq(headerMap))).andReturn(urlConnection); + expect(urlConnection.getInputStream()).andReturn(inputStream); + + replay(streamProvider, sessionManager, controller, urlConnection, inputStream); + + ViewAmbariStreamProvider viewAmbariStreamProvider = new ViewAmbariStreamProvider(streamProvider, sessionManager, controller); + + Assert.assertEquals(inputStream, viewAmbariStreamProvider.readFrom("spec", "requestMethod", body, headers, true)); + + verify(streamProvider, sessionManager, urlConnection, inputStream); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/7833901f/ambari-server/src/test/java/org/apache/ambari/server/view/ViewURLStreamProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewURLStreamProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewURLStreamProviderTest.java index 908e63c..267a605 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewURLStreamProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewURLStreamProviderTest.java @@ -67,6 +67,34 @@ public class ViewURLStreamProviderTest { } @Test + public void testReadFromNullBody() throws Exception { + + URLStreamProvider streamProvider = createNiceMock(URLStreamProvider.class); + HttpURLConnection urlConnection = createNiceMock(HttpURLConnection.class); + InputStream inputStream = createNiceMock(InputStream.class); + ViewContext viewContext = createNiceMock(ViewContext.class); + + String body = null; + + Map<String, String> headers = new HashMap<String, String>(); + headers.put("header", "headerValue"); + + Map<String, List<String>> headerMap = new HashMap<String, List<String>>(); + headerMap.put("header", Collections.singletonList("headerValue")); + + expect(streamProvider.processURL(eq("spec"), eq("requestMethod"), aryEq((byte[]) null), eq(headerMap))).andReturn(urlConnection); + expect(urlConnection.getInputStream()).andReturn(inputStream); + + replay(streamProvider, urlConnection, inputStream); + + ViewURLStreamProvider viewURLStreamProvider = new ViewURLStreamProvider(viewContext, streamProvider); + + Assert.assertEquals(inputStream, viewURLStreamProvider.readFrom("spec", "requestMethod", body, headers)); + + verify(streamProvider, urlConnection, inputStream); + } + + @Test public void testReadAs() throws Exception { URLStreamProvider streamProvider = createNiceMock(URLStreamProvider.class); @@ -152,6 +180,34 @@ public class ViewURLStreamProviderTest { } @Test + public void testReadFromNullInputStreamBody() throws Exception { + + URLStreamProvider streamProvider = createNiceMock(URLStreamProvider.class); + HttpURLConnection urlConnection = createNiceMock(HttpURLConnection.class); + InputStream inputStream = createNiceMock(InputStream.class); + ViewContext viewContext = createNiceMock(ViewContext.class); + + InputStream body = null; + + Map<String, String> headers = new HashMap<String, String>(); + headers.put("header", "headerValue"); + + Map<String, List<String>> headerMap = new HashMap<String, List<String>>(); + headerMap.put("header", Collections.singletonList("headerValue")); + + expect(streamProvider.processURL(eq("spec"), eq("requestMethod"), aryEq((byte[]) null), eq(headerMap))).andReturn(urlConnection); + expect(urlConnection.getInputStream()).andReturn(inputStream); + + replay(streamProvider, urlConnection, inputStream); + + ViewURLStreamProvider viewURLStreamProvider = new ViewURLStreamProvider(viewContext, streamProvider); + + Assert.assertEquals(inputStream, viewURLStreamProvider.readFrom("spec", "requestMethod", body, headers)); + + verify(streamProvider, urlConnection, inputStream); + } + + @Test public void testReadAsInputStream() throws Exception { URLStreamProvider streamProvider = createNiceMock(URLStreamProvider.class);
