View Javadoc

1   package com.atlassian.marketplace.client.impl;
2   
3   import java.net.URI;
4   
5   import com.atlassian.marketplace.client.MpacException;
6   import com.atlassian.marketplace.client.api.AddonVersionsQuery;
7   import com.atlassian.marketplace.client.model.AddonVersion;
8   import com.atlassian.marketplace.client.model.AddonVersionSummary;
9   import com.atlassian.marketplace.client.model.TestModelBuilders;
10  import com.atlassian.marketplace.client.util.UriBuilder;
11  
12  import com.google.common.collect.ImmutableList;
13  
14  import org.junit.Test;
15  
16  import static com.atlassian.fugue.Option.some;
17  import static com.atlassian.marketplace.client.TestObjects.HOST_BASE;
18  import static com.atlassian.marketplace.client.api.AddonVersionSpecifier.buildNumber;
19  import static com.atlassian.marketplace.client.api.AddonVersionSpecifier.latest;
20  import static com.atlassian.marketplace.client.api.AddonVersionSpecifier.versionName;
21  import static com.atlassian.marketplace.client.api.ApplicationKey.JIRA;
22  import static com.atlassian.marketplace.client.impl.ClientTester.FAKE_ADDONS_PATH;
23  import static com.atlassian.marketplace.client.model.TestModelBuilders.addonVersion;
24  import static org.hamcrest.MatcherAssert.assertThat;
25  import static org.hamcrest.Matchers.contains;
26  import static org.mockito.Mockito.verify;
27  
28  public class AddonsImplVersionsTest extends AddonsImplTestBase<AddonVersion>
29  {
30      @Test
31      public void getVersionByBuildUsesAppropriateUri() throws Exception
32      {
33          setupVersionResource("x", versionByBuildUri(100));
34          assertThat(tester.client.addons().getVersion("x", buildNumber(100), AddonVersionsQuery.any()),
35              contains(ADDON_VERSION_REP));
36      }
37  
38      @Test
39      public void getVersionByNameUsesAppropriateUri() throws Exception
40      {
41          setupVersionResource("x", versionByNameUri("1.0"));
42          assertThat(tester.client.addons().getVersion("x", versionName("1.0"), AddonVersionsQuery.any()),
43              contains(ADDON_VERSION_REP));
44      }
45      
46      @Test
47      public void getLatestVersionUsesAddonResource() throws Exception
48      {
49          setupVersionResource("x", latestVersionUri("x"));
50          tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.any());
51          verify(tester.httpTransport).get(URI.create(HOST_BASE + FAKE_ADDONS_PATH + "?limit=0"));
52      }
53  
54      @Test
55      public void getLatestVersionUsesLatestVersionResource() throws Exception
56      {
57          setupVersionResource("x", latestVersionUri("x"));
58          assertThat(tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.any()), contains(ADDON_VERSION_REP));
59      }
60  
61      @Test
62      public void getLatestVersionPassesOtherParamsInQueryString() throws Exception
63      {
64          // Since we use the same code for encoding all AddonQuery parameters in general, we'll just verify that this
65          // resource can pass any of those parameters.
66          setupVersionResource("x", latestVersionUri("x").queryParam("application", "jira"));
67          assertThat(tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.builder().application(some(JIRA)).build()),
68                  contains(ADDON_VERSION_REP));
69      }
70  
71      @Test
72      public void getLatestVersionAfterPassesAfterVersionInQueryString() throws Exception
73      {
74          setupVersionResource("x", latestVersionUri("x").queryParam("afterVersion", "1.0"));
75          assertThat(tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.builder().afterVersion(some("1.0")).build()),
76                  contains(ADDON_VERSION_REP));
77      }
78  
79      @Test
80      public void getLatestVersionAfterPassesOtherParamsInQueryString() throws Exception
81      {
82          // Since we use the same code for encoding all AddonQuery parameters in general, we'll just verify that this
83          // resource can pass any of those parameters.
84          setupVersionResource("x", latestVersionUri("x").queryParam("application", "jira").queryParam("afterVersion", "1.0"));
85          assertThat(tester.client.addons().getVersion("x", latest(),
86              AddonVersionsQuery.builder().application(some(JIRA)).afterVersion(some("1.0")).build()),
87                  contains(ADDON_VERSION_REP));
88      }
89      
90      @Test
91      public void getVersionsPassesQueryParams() throws Exception
92      {
93          AddonVersionSummary version1 = TestModelBuilders.addonVersionSummary().name("1.0").build();
94          AddonVersionSummary version2 = TestModelBuilders.addonVersionSummary().name("2.0").build();
95          InternalModel.AddonVersions versionsRep =
96              InternalModel.addonVersions(ADDON_VERSIONS_LINKS, ImmutableList.of(version1, version2), 2);
97          
98          setupAddonByKeyResource(addonByKeyUri("x"));
99          tester.mockResource(UriBuilder.fromUri(HOST_BASE + FAKE_ADDON_VERSIONS_PATH)
100             .queryParam("application", "jira").build(), versionsRep);
101         assertThat(tester.client.addons().getVersions("x",
102             AddonVersionsQuery.builder().application(some(JIRA)).build()),
103             contains(version1, version2));
104     }
105     
106     @Override
107     protected URI getCollectionUri()
108     {
109         return URI.create(HOST_BASE + FAKE_ADDON_VERSIONS_PATH);
110     }
111     
112     @Override
113     protected AddonVersion makeEntityToCreate()
114     {
115         return addonVersion().build();
116     }
117     
118     @Override
119     protected AddonVersion makeEntityFromServer()
120     {
121         return addonVersion().links(ADDON_LINKS).build();
122     }
123     
124     @Override
125     protected AddonVersion makeEntityWithUpdates(AddonVersion from)
126     {
127         return addonVersion(from).build();
128     }
129     
130     @Override
131     protected AddonVersion createEntity(AddonVersion entity) throws Exception
132     {
133         setupAddonByKeyResource(addonByKeyUri("x"));
134         return tester.client.addons().createVersion("x", entity);
135     }
136     
137     @Override
138     protected AddonVersion updateEntity(AddonVersion original, AddonVersion updated) throws MpacException
139     {
140         return tester.client.addons().updateVersion(original, updated);
141     }
142 }