View Javadoc

1   package it.com.atlassian.rest.test;
2   
3   import com.atlassian.plugins.rest.module.json.JsonWithPaddingResponseFilter;
4   import com.atlassian.plugins.rest.test.Developer;
5   import com.atlassian.plugins.rest.test.Project;
6   import com.atlassian.rest.jersey.client.WebResourceFactory;
7   
8   import static com.atlassian.rest.jersey.client.WebResourceFactory.REST_VERSION;
9   
10  import com.sun.jersey.api.client.WebResource;
11  import com.sun.jersey.core.util.MultivaluedMapImpl;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertFalse;
15  import static org.junit.Assert.assertNotNull;
16  import static org.junit.Assert.assertNotSame;
17  import static org.junit.Assert.assertNull;
18  import static org.junit.Assert.assertTrue;
19  
20  import org.junit.Before;
21  import org.junit.Test;
22  
23  import javax.ws.rs.core.MediaType;
24  import javax.ws.rs.core.MultivaluedMap;
25  
26  public class ProjectsTest {
27      public static final String PROJECT_1 = "project1";
28  
29      public static final String JSONP_CALLBACK_PARAMETER_NAME = "jsonp-callback";
30      public static final String JSONP_CALLBACK_TEST_FUNCTION_NAME = "myfunction";
31  
32      private WebResource webResourceWithVersion;
33  
34      @Before
35      public void setUp() {
36          webResourceWithVersion = WebResourceFactory.authenticated(REST_VERSION).path("projects");
37      }
38  
39      @Test
40      public void testGetProjectByNameAndExpanding() {
41          Project project = webResourceWithVersion.path(PROJECT_1).get(Project.class);
42          assertEquals(PROJECT_1, project.getName());
43          assertNotNull(project.getInformation().getLink());
44          assertNull(project.getInformation().getLongName());
45          assertNull(project.getInformation().getLongDescription());
46  
47          testGetProjectExpandingInformation(webResourceWithVersion, "information");
48          testGetProjectExpandingInformation(webResourceWithVersion, "*");
49  
50          testGetProjectExpandingInformationAndSpecification(webResourceWithVersion, "information.specification");
51          testGetProjectExpandingInformationAndSpecification(webResourceWithVersion, "information.*");
52          testGetProjectExpandingInformationAndSpecification(webResourceWithVersion, "*.*");
53  
54          testGetProjectExpandingDevelopersAndFavouriteDrinks(webResourceWithVersion, "developers.developer.drinks");
55      }
56  
57      @Test
58      public void testGetProjectExpandingDevelopers() {
59          testGetProjectExpandingDevelopersWithIndex(webResourceWithVersion);
60          testGetProjectExpandingAllDevelopers(webResourceWithVersion);
61      }
62  
63      @Test
64      public void testGetProjectExpandingInformationAndDevelopers() {
65          final Project project = webResourceWithVersion.path(PROJECT_1).queryParam("expand", "information,developers").get(Project.class);
66  
67          assertEquals(PROJECT_1, project.getName());
68  
69  
70          // information expanded
71          assertNotNull(project.getInformation().getLink());
72          assertNotNull(project.getInformation().getLongName());
73          assertNotNull(project.getInformation().getLongDescription());
74  
75          // developers list expanded
76          assertEquals(6, project.getDevelopers().size());
77      }
78  
79      @Test
80      public void testGetProjectExpandingDevelopersRange() {
81          String index = "1:3";
82          Project project = webResourceWithVersion.path("project1").queryParam("expand", "developers[" + index + "]").get(Project.class);
83  
84  
85          assertEquals(3, project.getDevelopers().size());
86          assertEquals("developer2", project.getDevelopers().get(0).getUserName());
87          assertEquals("developer3", project.getDevelopers().get(1).getUserName());
88          assertEquals("developer4", project.getDevelopers().get(2).getUserName());
89  
90          index = "-3:-1";
91          project = webResourceWithVersion.path("project1").queryParam("expand", "developers[" + index + "]").get(Project.class);
92  
93          assertEquals(3, project.getDevelopers().size());
94          assertEquals("developer4", project.getDevelopers().get(0).getUserName());
95          assertEquals("developer5", project.getDevelopers().get(1).getUserName());
96          assertEquals("developer6", project.getDevelopers().get(2).getUserName());
97      }
98  
99      private void testGetProjectExpandingAllDevelopers(WebResource webResource) {
100         Project project = webResource.path(PROJECT_1).queryParam("expand", "developers").get(Project.class);
101         assertEquals(6, project.getDevelopers().size());
102 
103         for (Developer developer : project.getDevelopers()) {
104             assertNotNull(developer.getLink());
105             assertNotNull(developer.getUserName());
106             assertNull(developer.getFullName());
107             assertNull(developer.getEmail());
108         }
109 
110         project = webResource.path(PROJECT_1).queryParam("expand", "developers.developer").get(Project.class);
111         assertEquals(6, project.getDevelopers().size());
112 
113         for (Developer developer : project.getDevelopers()) {
114             assertNotNull(developer.getLink());
115             assertNotNull(developer.getUserName());
116             assertNotNull(developer.getFullName());
117             assertNotNull(developer.getEmail());
118         }
119     }
120 
121     private void testGetProjectExpandingDevelopersWithIndex(WebResource webResource) {
122         testGetProjectExpandingDevelopersWithIndex(webResource, 0);
123         testGetProjectExpandingDevelopersWithIndex(webResource, 1);
124         testGetProjectExpandingDevelopersWithIndex(webResource, 2);
125         testGetProjectExpandingDevelopersWithIndex(webResource, 3);
126         testGetProjectExpandingDevelopersWithIndex(webResource, 4);
127         testGetProjectExpandingDevelopersWithIndex(webResource, 5);
128         testGetProjectExpandingDevelopersWithIndex(webResource, 6);
129     }
130 
131     private void testGetProjectExpandingDevelopersWithIndex(WebResource webResource, int index) {
132         String expand = "developers[" + index + "]";
133         Project project = webResource.path("project1").queryParam("expand", expand).get(Project.class);
134 
135         if (index >= 0 && index < 6) {
136 
137             assertEquals(1, project.getDevelopers().size());
138             Developer developer = project.getDevelopers().get(0);
139 
140             assertNotNull(developer.getLink());
141             assertNotNull(developer.getUserName());
142             assertNull(developer.getFullName());
143             assertNull(developer.getEmail());
144 
145             expand += ".developer";
146             project = webResource.path("project1").queryParam("expand", expand).get(Project.class);
147 
148             assertEquals(1, project.getDevelopers().size());
149             developer = project.getDevelopers().get(0);
150 
151             assertNotNull(developer.getLink());
152             assertNotNull(developer.getUserName());
153             assertNotNull(developer.getFullName());
154             assertNotNull(developer.getEmail());
155         } else {
156             assertTrue(project.getDevelopers().isEmpty());
157         }
158     }
159 
160     private void testGetProjectExpandingInformation(WebResource webResource, final String expand) {
161         Project project;// expanding the information attibute
162         project = webResource.path(PROJECT_1).queryParam("expand", expand).get(Project.class);
163         assertEquals(PROJECT_1, project.getName());
164         assertNotNull(project.getInformation().getLink());
165         assertNotNull(project.getInformation().getLongName());
166         assertNotNull(project.getInformation().getLongDescription());
167 
168         assertNotNull(project.getInformation().getSpecification().getLink());
169         assertNull(project.getInformation().getSpecification().getTitle());
170         assertNull(project.getInformation().getSpecification().getText());
171     }
172 
173     private void testGetProjectExpandingInformationAndSpecification(WebResource webResource, final String expand) {
174         Project project = webResource.path(PROJECT_1).queryParam("expand", expand).get(Project.class);
175         assertEquals(PROJECT_1, project.getName());
176         assertNotNull(project.getInformation().getLink());
177         assertNotNull(project.getInformation().getLongName());
178         assertNotNull(project.getInformation().getLongDescription());
179 
180         assertNotNull(project.getInformation().getSpecification().getLink());
181         assertNotNull(project.getInformation().getSpecification().getTitle());
182         assertNotNull(project.getInformation().getSpecification().getText());
183     }
184 
185     public void testGetProjectExpandingDevelopersAndFavouriteDrinks(WebResource webResource, final String expand) {
186         Project project = webResource.path(PROJECT_1).queryParam("expand", expand).get(Project.class);
187         assertEquals(PROJECT_1, project.getName());
188         assertTrue(project.getDevelopers().get(0).getFavouriteDrinks().size() > 0);
189     }
190 }