1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl;
20
21 import org.eclipse.aether.DefaultRepositorySystemSession;
22 import org.eclipse.aether.RepositorySystemSession;
23 import org.eclipse.aether.internal.test.util.TestUtils;
24 import org.eclipse.aether.repository.RemoteRepository;
25 import org.eclipse.aether.transfer.RepositoryOfflineException;
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.api.Test;
28
29 import static org.junit.jupiter.api.Assertions.*;
30
31 public class DefaultOfflineControllerTest {
32
33 private DefaultOfflineController controller;
34
35 private RepositorySystemSession newSession(boolean offline, String protocols, String hosts) {
36 DefaultRepositorySystemSession session = TestUtils.newSession();
37 session.setOffline(offline);
38 session.setConfigProperty(DefaultOfflineController.CONFIG_PROP_OFFLINE_PROTOCOLS, protocols);
39 session.setConfigProperty(DefaultOfflineController.CONFIG_PROP_OFFLINE_HOSTS, hosts);
40 return session;
41 }
42
43 private RemoteRepository newRepo(String url) {
44 return new RemoteRepository.Builder("central", "default", url).build();
45 }
46
47 @BeforeEach
48 void setup() {
49 controller = new DefaultOfflineController();
50 }
51
52 @Test
53 void testCheckOffline_Online() {
54 assertThrows(
55 RepositoryOfflineException.class,
56 () -> controller.checkOffline(newSession(false, null, null), newRepo("http://eclipse.org")));
57 }
58
59 @Test
60 void testCheckOffline_Offline() {
61 assertThrows(
62 RepositoryOfflineException.class,
63 () -> controller.checkOffline(newSession(true, null, null), newRepo("http://eclipse.org")));
64 }
65
66 @Test
67 void testCheckOffline_Offline_OfflineProtocol() throws Exception {
68 controller.checkOffline(newSession(true, "file", null), newRepo("file://repo"));
69 controller.checkOffline(newSession(true, "file", null), newRepo("FILE://repo"));
70 controller.checkOffline(newSession(true, " file , classpath ", null), newRepo("file://repo"));
71 controller.checkOffline(newSession(true, " file , classpath ", null), newRepo("classpath://repo"));
72 }
73
74 @Test
75 void testCheckOffline_Offline_OnlineProtocol() {
76 assertThrows(
77 RepositoryOfflineException.class,
78 () -> controller.checkOffline(newSession(true, "file", null), newRepo("http://eclipse.org")));
79 }
80
81 @Test
82 void testCheckOffline_Offline_OfflineHost() throws Exception {
83 controller.checkOffline(newSession(true, null, "localhost"), newRepo("http://localhost"));
84 controller.checkOffline(newSession(true, null, "localhost"), newRepo("http://LOCALHOST"));
85 controller.checkOffline(newSession(true, null, " localhost , 127.0.0.1 "), newRepo("http://localhost"));
86 controller.checkOffline(newSession(true, null, " localhost , 127.0.0.1 "), newRepo("http://127.0.0.1"));
87 }
88
89 @Test
90 void testCheckOffline_Offline_OnlineHost() {
91 assertThrows(
92 RepositoryOfflineException.class,
93 () -> controller.checkOffline(newSession(true, null, "localhost"), newRepo("http://eclipse.org")));
94 }
95 }