Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 5b2a72e17cc35a2b3d0787ea607bce3321da79f3
Author: Mikolaj Izdebski <mizdebsk(a)redhat.com>
Date: Tue Sep 16 08:00:39 2014 +0200
[java] Implement playground list API call
---------------------------------------------------------------
.../org/fedoraproject/copr/client/CoprSession.java | 3 +
...BuildResult.java => PlaygroundListRequest.java} | 8 +-
.../{ListResult.java => PlaygroundListResult.java} | 2 +-
.../copr/client/impl/DefaultCoprSession.java | 10 ++
...esult.java => DefaultPlaygroundListResult.java} | 8 +-
...ListCommand.java => PlaygroundListCommand.java} | 23 ++---
.../copr/client/impl/PlaygroundListTest.java | 93 ++++++++++++++++++++
java/copr-impl/src/test/resources/playground.json | 41 +++++++++
8 files changed, 166 insertions(+), 22 deletions(-)
diff --git a/java/copr-api/src/main/java/org/fedoraproject/copr/client/CoprSession.java
b/java/copr-api/src/main/java/org/fedoraproject/copr/client/CoprSession.java
index 91e41c7..83bfbe2 100644
--- a/java/copr-api/src/main/java/org/fedoraproject/copr/client/CoprSession.java
+++ b/java/copr-api/src/main/java/org/fedoraproject/copr/client/CoprSession.java
@@ -24,6 +24,9 @@ public interface CoprSession
ListResult list( ListRequest request )
throws CoprException;
+ PlaygroundListResult playgroundList( PlaygroundListRequest request )
+ throws CoprException;
+
BuildResult build( BuildRequest request )
throws CoprException;
diff --git a/java/copr-api/src/main/java/org/fedoraproject/copr/client/BuildResult.java
b/java/copr-api/src/main/java/org/fedoraproject/copr/client/PlaygroundListRequest.java
similarity index 89%
copy from java/copr-api/src/main/java/org/fedoraproject/copr/client/BuildResult.java
copy to
java/copr-api/src/main/java/org/fedoraproject/copr/client/PlaygroundListRequest.java
index 5efa6e8..f0234f7 100644
--- a/java/copr-api/src/main/java/org/fedoraproject/copr/client/BuildResult.java
+++
b/java/copr-api/src/main/java/org/fedoraproject/copr/client/PlaygroundListRequest.java
@@ -18,9 +18,9 @@ package org.fedoraproject.copr.client;
/**
* @author Mikolaj Izdebski
*/
-public interface BuildResult
+public class PlaygroundListRequest
{
- String getMessage();
-
- long getBuildId();
+ public PlaygroundListRequest()
+ {
+ }
}
diff --git a/java/copr-api/src/main/java/org/fedoraproject/copr/client/ListResult.java
b/java/copr-api/src/main/java/org/fedoraproject/copr/client/PlaygroundListResult.java
similarity index 95%
copy from java/copr-api/src/main/java/org/fedoraproject/copr/client/ListResult.java
copy to
java/copr-api/src/main/java/org/fedoraproject/copr/client/PlaygroundListResult.java
index cb1c4d2..630214d 100644
--- a/java/copr-api/src/main/java/org/fedoraproject/copr/client/ListResult.java
+++ b/java/copr-api/src/main/java/org/fedoraproject/copr/client/PlaygroundListResult.java
@@ -20,7 +20,7 @@ import java.util.List;
/**
* @author Mikolaj Izdebski
*/
-public interface ListResult
+public interface PlaygroundListResult
{
List<ProjectId> getProjects();
}
diff --git
a/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultCoprSession.java
b/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultCoprSession.java
index 6a6bb53..4437863 100644
---
a/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultCoprSession.java
+++
b/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultCoprSession.java
@@ -24,6 +24,8 @@ import org.fedoraproject.copr.client.CoprException;
import org.fedoraproject.copr.client.CoprSession;
import org.fedoraproject.copr.client.ListRequest;
import org.fedoraproject.copr.client.ListResult;
+import org.fedoraproject.copr.client.PlaygroundListRequest;
+import org.fedoraproject.copr.client.PlaygroundListResult;
/**
* @author Mikolaj Izdebski
@@ -66,6 +68,14 @@ public class DefaultCoprSession
}
@Override
+ public PlaygroundListResult playgroundList( PlaygroundListRequest request )
+ throws CoprException
+ {
+ PlaygroundListCommand command = new PlaygroundListCommand( request );
+ return command.execute( this );
+ }
+
+ @Override
public BuildResult build( BuildRequest request )
throws CoprException
{
diff --git
a/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultListResult.java
b/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultPlaygroundListResult.java
similarity index 83%
copy from
java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultListResult.java
copy to
java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultPlaygroundListResult.java
index 1c4f64b..54277ce 100644
---
a/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultListResult.java
+++
b/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/DefaultPlaygroundListResult.java
@@ -18,18 +18,18 @@ package org.fedoraproject.copr.client.impl;
import java.util.Collections;
import java.util.List;
-import org.fedoraproject.copr.client.ListResult;
+import org.fedoraproject.copr.client.PlaygroundListResult;
import org.fedoraproject.copr.client.ProjectId;
/**
* @author Mikolaj Izdebski
*/
-public class DefaultListResult
- implements ListResult
+public class DefaultPlaygroundListResult
+ implements PlaygroundListResult
{
private final List<ProjectId> projects;
- public DefaultListResult( List<ProjectId> projects )
+ public DefaultPlaygroundListResult( List<ProjectId> projects )
{
this.projects = Collections.unmodifiableList( projects );
}
diff --git
a/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/ListCommand.java
b/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/PlaygroundListCommand.java
similarity index 71%
copy from
java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/ListCommand.java
copy to
java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/PlaygroundListCommand.java
index 0284869..8355058 100644
--- a/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/ListCommand.java
+++
b/java/copr-impl/src/main/java/org/fedoraproject/copr/client/impl/PlaygroundListCommand.java
@@ -19,8 +19,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.fedoraproject.copr.client.ListRequest;
-import org.fedoraproject.copr.client.ListResult;
+import org.fedoraproject.copr.client.PlaygroundListRequest;
+import org.fedoraproject.copr.client.PlaygroundListResult;
import org.fedoraproject.copr.client.ProjectId;
import com.google.gson.JsonArray;
@@ -30,20 +30,17 @@ import com.google.gson.JsonObject;
/**
* @author Mikolaj Izdebski
*/
-public class ListCommand
- extends RpcCommand<ListResult>
+public class PlaygroundListCommand
+ extends RpcCommand<PlaygroundListResult>
{
- private final ListRequest request;
-
- public ListCommand( ListRequest request )
+ public PlaygroundListCommand( PlaygroundListRequest request )
{
- this.request = request;
}
@Override
protected String getCommandUrl()
{
- return "/api/coprs/" + request.getUserName() + "/";
+ return "/api/playground/list/";
}
@Override
@@ -53,7 +50,7 @@ public class ListCommand
}
@Override
- protected ListResult parseResponse( JsonObject response )
+ protected PlaygroundListResult parseResponse( JsonObject response )
{
List<ProjectId> projects = new ArrayList<>();
@@ -63,12 +60,12 @@ public class ListCommand
JsonObject repo = element.getAsJsonObject();
ProjectId id = new ProjectId();
- id.setUserName( request.getUserName() );
- id.setProjectName( repo.get( "name" ).getAsString() );
+ id.setUserName( repo.get( "username" ).getAsString() );
+ id.setProjectName( repo.get( "coprname" ).getAsString() );
projects.add( id );
}
- return new DefaultListResult( projects );
+ return new DefaultPlaygroundListResult( projects );
}
}
diff --git
a/java/copr-impl/src/test/java/org/fedoraproject/copr/client/impl/PlaygroundListTest.java
b/java/copr-impl/src/test/java/org/fedoraproject/copr/client/impl/PlaygroundListTest.java
new file mode 100644
index 0000000..55923c7
--- /dev/null
+++
b/java/copr-impl/src/test/java/org/fedoraproject/copr/client/impl/PlaygroundListTest.java
@@ -0,0 +1,93 @@
+/*-
+ * Copyright (c) 2014 Red Hat, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.fedoraproject.copr.client.impl;
+
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.easymock.EasyMockRunner;
+import org.fedoraproject.copr.client.CoprException;
+import org.fedoraproject.copr.client.PlaygroundListRequest;
+import org.fedoraproject.copr.client.PlaygroundListResult;
+import org.fedoraproject.copr.client.ProjectId;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith( EasyMockRunner.class )
+public class PlaygroundListTest
+ extends RpcTest
+{
+ @Test
+ public void testApiFailure()
+ throws Exception
+ {
+ expect( mock.get( "/api/playground/list/" ) ).andReturn(
"fail" );
+ replay( mock );
+
+ PlaygroundListRequest request = new PlaygroundListRequest();
+
+ try
+ {
+ session.playgroundList( request );
+ fail();
+ }
+ catch ( CoprException e )
+ {
+ verify( mock );
+ assertEquals( 1, server.getAcceptedConnectionCount() );
+ }
+ }
+
+ @Test
+ public void testPlaygroundList()
+ throws Exception
+ {
+ expect( mock.get( "/api/playground/list/" ) ).andReturn(
"playground" );
+ replay( mock );
+
+ PlaygroundListRequest request = new PlaygroundListRequest();
+ PlaygroundListResult result = session.playgroundList( request );
+
+ verify( mock );
+ assertEquals( 1, server.getAcceptedConnectionCount() );
+
+ assertNotNull( result );
+ List<ProjectId> projects = result.getProjects();
+
+ assertNotNull( projects );
+ assertEquals( 3, projects.size() );
+ Iterator<ProjectId> projectIterator = projects.iterator();
+
+ ProjectId project1 = projectIterator.next();
+ assertEquals( "sochotni", project1.getUserName() );
+ assertEquals( "fedwatch", project1.getProjectName() );
+
+ ProjectId project2 = projectIterator.next();
+ assertEquals( "bkabrda", project2.getUserName() );
+ assertEquals( "python-3.4", project2.getProjectName() );
+
+ ProjectId project3 = projectIterator.next();
+ assertEquals( "james", project3.getUserName() );
+ assertEquals( "yum-rawhide", project3.getProjectName() );
+ }
+}
diff --git a/java/copr-impl/src/test/resources/playground.json
b/java/copr-impl/src/test/resources/playground.json
new file mode 100644
index 0000000..cc94d43
--- /dev/null
+++ b/java/copr-impl/src/test/resources/playground.json
@@ -0,0 +1,41 @@
+{
+ "output": "ok",
+ "repos": [
+ {
+ "chroots": [
+ "epel-6-i386",
+ "epel-6-x86_64",
+ "fedora-rawhide-x86_64",
+ "fedora-rawhide-i386",
+ "fedora-20-x86_64",
+ "fedora-20-i386",
+ "epel-7-x86_64"
+ ],
+ "coprname": "fedwatch",
+ "username": "sochotni"
+ },
+ {
+ "chroots": [
+ "fedora-rawhide-x86_64",
+ "fedora-rawhide-i386"
+ ],
+ "coprname": "python-3.4",
+ "username": "bkabrda"
+ },
+ {
+ "chroots": [
+ "fedora-19-i386",
+ "epel-6-i386",
+ "fedora-20-i386",
+ "fedora-rawhide-i386",
+ "fedora-19-x86_64",
+ "epel-6-x86_64",
+ "fedora-rawhide-x86_64",
+ "fedora-20-x86_64",
+ "epel-7-x86_64"
+ ],
+ "coprname": "yum-rawhide",
+ "username": "james"
+ }
+ ]
+}