View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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.Before;
26  import org.junit.Test;
27  
28  public class DefaultOfflineControllerTest {
29  
30      private DefaultOfflineController controller;
31  
32      private RepositorySystemSession newSession(boolean offline, String protocols, String hosts) {
33          DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
34          session.setOffline(offline);
35          session.setConfigProperty(DefaultOfflineController.CONFIG_PROP_OFFLINE_PROTOCOLS, protocols);
36          session.setConfigProperty(DefaultOfflineController.CONFIG_PROP_OFFLINE_HOSTS, hosts);
37          return session;
38      }
39  
40      private RemoteRepository newRepo(String url) {
41          return new RemoteRepository.Builder("central", "default", url).build();
42      }
43  
44      @Before
45      public void setup() {
46          controller = new DefaultOfflineController();
47      }
48  
49      @Test(expected = RepositoryOfflineException.class)
50      public void testCheckOffline_Online() throws Exception {
51          controller.checkOffline(newSession(false, null, null), newRepo("http://eclipse.org"));
52      }
53  
54      @Test(expected = RepositoryOfflineException.class)
55      public void testCheckOffline_Offline() throws Exception {
56          controller.checkOffline(newSession(true, null, null), newRepo("http://eclipse.org"));
57      }
58  
59      @Test
60      public void testCheckOffline_Offline_OfflineProtocol() throws Exception {
61          controller.checkOffline(newSession(true, "file", null), newRepo("file://repo"));
62          controller.checkOffline(newSession(true, "file", null), newRepo("FILE://repo"));
63          controller.checkOffline(newSession(true, "  file  ,  classpath  ", null), newRepo("file://repo"));
64          controller.checkOffline(newSession(true, "  file  ,  classpath  ", null), newRepo("classpath://repo"));
65      }
66  
67      @Test(expected = RepositoryOfflineException.class)
68      public void testCheckOffline_Offline_OnlineProtocol() throws Exception {
69          controller.checkOffline(newSession(true, "file", null), newRepo("http://eclipse.org"));
70      }
71  
72      @Test
73      public void testCheckOffline_Offline_OfflineHost() throws Exception {
74          controller.checkOffline(newSession(true, null, "localhost"), newRepo("http://localhost"));
75          controller.checkOffline(newSession(true, null, "localhost"), newRepo("http://LOCALHOST"));
76          controller.checkOffline(newSession(true, null, "  localhost  ,  127.0.0.1  "), newRepo("http://localhost"));
77          controller.checkOffline(newSession(true, null, "  localhost  ,  127.0.0.1  "), newRepo("http://127.0.0.1"));
78      }
79  
80      @Test(expected = RepositoryOfflineException.class)
81      public void testCheckOffline_Offline_OnlineHost() throws Exception {
82          controller.checkOffline(newSession(true, null, "localhost"), newRepo("http://eclipse.org"));
83      }
84  }