1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 package org.eclipse.jgit.http.test;
45
46 import static org.junit.Assert.fail;
47
48 import java.io.IOException;
49
50 import javax.servlet.http.HttpServletRequestWrapper;
51
52 import org.eclipse.jetty.server.Request;
53 import org.eclipse.jgit.http.server.resolver.AsIsFileService;
54 import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
55 import org.eclipse.jgit.lib.Repository;
56 import org.eclipse.jgit.lib.StoredConfig;
57 import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
58 import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
59 import org.junit.Before;
60 import org.junit.Test;
61
62 public class AsIsServiceTest extends LocalDiskRepositoryTestCase {
63 private Repository db;
64
65 private AsIsFileService service;
66
67 @Override
68 @Before
69 public void setUp() throws Exception {
70 super.setUp();
71
72 db = createBareRepository();
73 service = new AsIsFileService();
74 }
75
76 @Test
77 public void testDisabledSingleton() throws ServiceNotAuthorizedException {
78 service = AsIsFileService.DISABLED;
79 try {
80 service.access(new R(null, "1.2.3.4"), db);
81 fail("Created session for anonymous user: null");
82 } catch (ServiceNotEnabledException e) {
83
84 }
85
86 try {
87 service.access(new R("bob", "1.2.3.4"), db);
88 fail("Created session for user: \"bob\"");
89 } catch (ServiceNotEnabledException e) {
90
91 }
92 }
93
94 @Test
95 public void testCreate_Default() throws ServiceNotEnabledException,
96 ServiceNotAuthorizedException {
97 service.access(new R(null, "1.2.3.4"), db);
98 service.access(new R("bob", "1.2.3.4"), db);
99 }
100
101 @Test
102 public void testCreate_Disabled() throws ServiceNotAuthorizedException,
103 IOException {
104 final StoredConfig cfg = db.getConfig();
105 cfg.setBoolean("http", null, "getanyfile", false);
106 cfg.save();
107
108 try {
109 service.access(new R(null, "1.2.3.4"), db);
110 fail("Created session for anonymous user: null");
111 } catch (ServiceNotEnabledException e) {
112
113 }
114
115 try {
116 service.access(new R("bob", "1.2.3.4"), db);
117 fail("Created session for user: \"bob\"");
118 } catch (ServiceNotEnabledException e) {
119
120 }
121 }
122
123 @Test
124 public void testCreate_Enabled() throws ServiceNotEnabledException,
125 ServiceNotAuthorizedException {
126 db.getConfig().setBoolean("http", null, "getanyfile", true);
127 service.access(new R(null, "1.2.3.4"), db);
128 service.access(new R("bob", "1.2.3.4"), db);
129 }
130
131 private static final class R extends HttpServletRequestWrapper {
132 private final String user;
133
134 private final String host;
135
136 R(String user, String host) {
137 super(new Request(null, null) );
138 this.user = user;
139 this.host = host;
140 }
141
142 @Override
143 public String getRemoteHost() {
144 return host;
145 }
146
147 @Override
148 public String getRemoteUser() {
149 return user;
150 }
151 }
152 }