1   package it.com.atlassian.rest.helloworld;
2   
3   import com.atlassian.rest.jersey.client.WebResourceFactory;
4   import static com.atlassian.rest.jersey.client.WebResourceFactory.LATEST;
5   import static com.atlassian.rest.jersey.client.WebResourceFactory.REST_VERSION;
6   import static com.atlassian.rest.jersey.client.WebResourceFactory.REST_VERSION_2;
7   import com.sun.jersey.api.client.UniformInterfaceException;
8   import static org.junit.Assert.assertEquals;
9   import org.junit.Test;
10  
11  import static javax.ws.rs.core.Response.Status.UNAUTHORIZED;
12  
13  public class HelloWorldTest
14  {
15      @Test
16      public void testGetAnonymousHelloWorldWhenNotAuthenticated()
17      {
18          assertGetAnonymousHelloWorldWhenNotAuthenticated(REST_VERSION, "Hello Anonymous World");
19          assertGetAnonymousHelloWorldWhenNotAuthenticated(REST_VERSION_2, "Goodbye Anonymous World");
20          assertGetAnonymousHelloWorldWhenNotAuthenticated(LATEST, "Goodbye Anonymous World");
21      }
22  
23      private void assertGetAnonymousHelloWorldWhenNotAuthenticated(final String version, final String expected)
24      {
25          assertEquals(expected, WebResourceFactory.anonymous(version).path("helloworld").path("anonymous").get(String.class));
26      }
27  
28      @Test
29      public void testGetAnonymousHelloWorldWhenAuthenticated()
30      {
31          assertGetAnonymousHelloWorldWhenAuthenticated(REST_VERSION, "Hello Anonymous World");
32          assertGetAnonymousHelloWorldWhenAuthenticated(REST_VERSION_2, "Goodbye Anonymous World");
33          assertGetAnonymousHelloWorldWhenAuthenticated(LATEST, "Goodbye Anonymous World");
34      }
35  
36      private void assertGetAnonymousHelloWorldWhenAuthenticated(final String version, final String expected)
37      {
38          assertEquals(expected, WebResourceFactory.authenticated(version).path("helloworld").path("anonymous").get(String.class));
39      }
40  
41      @Test
42      public void testGetAuthenticatedHelloWorldWhenAuthenticated()
43      {
44          assertGetAuthenticatedHelloWorldWhenAuthenticated(REST_VERSION, "Hello Authenticated World");
45          assertGetAuthenticatedHelloWorldWhenAuthenticated(REST_VERSION_2, "Goodbye Authenticated World");
46          assertGetAuthenticatedHelloWorldWhenAuthenticated(LATEST, "Goodbye Authenticated World");
47      }
48  
49      private void assertGetAuthenticatedHelloWorldWhenAuthenticated(final String restVersion, final String expected)
50      {
51          assertEquals(expected, WebResourceFactory.authenticated(restVersion).path("helloworld").path("authenticated").get(String.class));
52      }
53  
54      @Test
55      public void testGetAuthenticatedHelloWorldWhenNotAuthenticated()
56      {
57          assertGetAuthenticatedHelloWorldWhenNotAuthenticated(REST_VERSION);
58          assertGetAuthenticatedHelloWorldWhenNotAuthenticated(REST_VERSION_2);
59          assertGetAuthenticatedHelloWorldWhenNotAuthenticated(LATEST);
60      }
61  
62      private void assertGetAuthenticatedHelloWorldWhenNotAuthenticated(final String version)
63      {
64          try
65          {
66              WebResourceFactory.anonymous(version).path("helloworld").path("authenticated").get(String.class);
67          }
68          catch (UniformInterfaceException e)
69          {
70              assertEquals(UNAUTHORIZED, e.getResponse().getResponseStatus());
71          }
72      }
73  
74      @Test
75      public void testGetAdminHelloWorldWhenAdmin()
76      {
77          assertGetAdminHelloWorldWhenAdmin(REST_VERSION, "Hello admin");
78          assertGetAdminHelloWorldWhenAdmin(REST_VERSION_2, "Goodbye admin");
79          assertGetAdminHelloWorldWhenAdmin(LATEST, "Goodbye admin");
80      }
81  
82      private void assertGetAdminHelloWorldWhenAdmin(final String restVersion, final String expected)
83      {
84          assertEquals(expected, WebResourceFactory.authenticated(restVersion).path("helloworld").path("admin").get(String.class));
85      }
86  
87      @Test
88      public void testGetAdminHelloWorldWhenNotFred()
89      {
90          assertGetAdminHelloWorldWhenNotFred(REST_VERSION);
91          assertGetAdminHelloWorldWhenNotFred(REST_VERSION_2);
92          assertGetAdminHelloWorldWhenNotFred(LATEST);
93      }
94  
95      private void assertGetAdminHelloWorldWhenNotFred(final String version)
96      {
97          try
98          {
99              // fred is an existing user
100             WebResourceFactory.authenticate(WebResourceFactory.anonymous(version), "fred", "fred").path("helloworld").path("admin").get(String.class);
101         }
102         catch (UniformInterfaceException e)
103         {
104             assertEquals(UNAUTHORIZED, e.getResponse().getResponseStatus());
105         }
106     }
107 
108     @Test
109     public void testGetAdminHelloWorldWhenNotAuthenticated()
110     {
111         assertGetAdminHelloWorldWhenNotAuthenticated(REST_VERSION);
112         assertGetAdminHelloWorldWhenNotAuthenticated(REST_VERSION_2);
113         assertGetAdminHelloWorldWhenNotAuthenticated(LATEST);
114     }
115 
116     private void assertGetAdminHelloWorldWhenNotAuthenticated(final String version)
117     {
118         try
119         {
120             WebResourceFactory.authenticate(WebResourceFactory.anonymous(version), "bla", "bli").path("helloworld").path("admin").get(String.class);
121         }
122         catch (UniformInterfaceException e)
123         {
124             assertEquals(UNAUTHORIZED, e.getResponse().getResponseStatus());
125         }
126     }
127 }