forked from jooby-project/jooby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIssue1990.java
More file actions
77 lines (61 loc) · 2.87 KB
/
Copy pathIssue1990.java
File metadata and controls
77 lines (61 loc) · 2.87 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package io.jooby;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import io.jooby.internal.pac4j.UrlResolverImpl;
import io.jooby.junit.ServerTest;
import io.jooby.junit.ServerTestRunner;
import io.jooby.pac4j.Pac4jContext;
import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;
import java.util.concurrent.atomic.AtomicInteger;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class Issue1990 {
@Test
public void withoutContextRelative() {
Logger log = (Logger) LoggerFactory.getLogger(UrlResolverImpl.class);
ListAppender<ILoggingEvent> appender = new ListAppender<>();
appender.start();
log.addAppender(appender);
UrlResolverImpl resolver = new UrlResolverImpl();
assertEquals("/callback", resolver.compute("/callback", null));
assertFalse(appender.list.isEmpty());
ILoggingEvent event = appender.list.get(0);
assertEquals("Unable to resolve URL from path '{}' since no web context was provided." +
" This may prevent some authentication clients to work properly." +
" Consider explicitly specifying an absolute callback URL or using a custom url resolver.", event.getMessage());
assertEquals(Level.WARN, event.getLevel());
assertNotNull(event.getArgumentArray());
assertTrue(event.getArgumentArray().length > 0);
assertEquals("/callback", event.getArgumentArray()[0]);
}
@Test
public void withoutContextAbsolute() {
Logger log = (Logger) LoggerFactory.getLogger(UrlResolverImpl.class);
ListAppender<ILoggingEvent> appender = new ListAppender<>();
appender.start();
log.addAppender(appender);
UrlResolverImpl resolver = new UrlResolverImpl();
assertEquals("https://foo/bar", resolver.compute("https://foo/bar", null));
assertEquals("http://foo/bar", resolver.compute("http://foo/bar", null));
assertEquals("HTTPS://foo/bar", resolver.compute("HTTPS://foo/bar", null));
assertEquals("HTTP://foo/bar", resolver.compute("HTTP://foo/bar", null));
assertTrue(appender.list.isEmpty());
}
@ServerTest
public void withContext(ServerTestRunner runner) {
AtomicInteger port = new AtomicInteger();
runner.define(app -> {
UrlResolverImpl resolver = new UrlResolverImpl();
app.get("/", ctx -> resolver.compute("/callback?q=foo", Pac4jContext.create(ctx)));
app.onStarted(() -> port.set(app.getServerOptions().getPort()));
}).ready(http -> {
String portFragment = port.get() == Context.PORT ? "" : ":" + port.get();
http.get("/", rsp -> assertEquals("http://localhost" + portFragment + "/callback", rsp.body().string()));
});
}
}