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