content: package org.apache.archiva.admin.repository.proxyconnector;
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
  
  import org.apache.archiva.admin.model.beans.ProxyConnector;
  import org.apache.archiva.admin.model.beans.RemoteRepository;
  import org.apache.archiva.admin.repository.AbstractRepositoryAdminTest;
  import org.apache.archiva.metadata.model.facets.AuditEvent;
  import org.junit.Test;
  
  import java.util.Arrays;
  
  /**
   * @author Olivier Lamy
   */
  public class ProxyConnectorAdminTest
      extends AbstractRepositoryAdminTest
  {
  
      @Test
      public void addAndDelete()
          throws Exception
      {
          mockAuditListener.clearEvents();
          assertEquals( "not proxyConnectors 1 " + proxyConnectorAdmin.getProxyConnectors(), 1,
                        proxyConnectorAdmin.getProxyConnectors().size() );
          assertFalse( proxyConnectorAdmin.getProxyConnectors().isEmpty() );
          ProxyConnector proxyConnector = new ProxyConnector();
          proxyConnector.setSourceRepoId( "snapshots" );
          proxyConnector.setTargetRepoId( "central" );
          proxyConnectorAdmin.addProxyConnector( proxyConnector, getFakeAuditInformation() );
  
          assertFalse( proxyConnectorAdmin.getProxyConnectors().isEmpty() );
          assertEquals( 2, proxyConnectorAdmin.getProxyConnectors().size() );
  
          assertNotNull( proxyConnectorAdmin.getProxyConnector( "snapshots", "central" ) );
  
          proxyConnectorAdmin.deleteProxyConnector( proxyConnector, getFakeAuditInformation() );
  
          assertEquals( 1, proxyConnectorAdmin.getProxyConnectors().size() );
          assertFalse( proxyConnectorAdmin.getProxyConnectors().isEmpty() );
  
          assertEquals( 2, mockAuditListener.getAuditEvents().size() );
  
          assertEquals( AuditEvent.ADD_PROXY_CONNECTOR, mockAuditListener.getAuditEvents().get( 0 ).getAction() );
          assertEquals( "root", mockAuditListener.getAuditEvents().get( 0 ).getUserId() );
          assertEquals( "archiva-localhost", mockAuditListener.getAuditEvents().get( 0 ).getRemoteIP() );
  
          assertEquals( AuditEvent.DELETE_PROXY_CONNECTOR, mockAuditListener.getAuditEvents().get( 1 ).getAction() );
          assertEquals( "root", mockAuditListener.getAuditEvents().get( 1 ).getUserId() );
  
          assertNull( proxyConnectorAdmin.getProxyConnector( "snapshots", "central" ) );
  
          mockAuditListener.clearEvents();
      }
  
      @Test
      public void addAndUpdateAndDelete()
          throws Exception
      {
          mockAuditListener.clearEvents();
          RemoteRepository remoteRepository = getRemoteRepository( "test-new-one" );
  
          remoteRepositoryAdmin.addRemoteRepository( remoteRepository, getFakeAuditInformation() );
  
          assertEquals( "not proxyConnectors 1 " + proxyConnectorAdmin.getProxyConnectors(), 1,
                        proxyConnectorAdmin.getProxyConnectors().size() );
          assertFalse( proxyConnectorAdmin.getProxyConnectors().isEmpty() );
          ProxyConnector proxyConnector = new ProxyConnector();
          proxyConnector.setSourceRepoId( "snapshots" );
          proxyConnector.setTargetRepoId( "central" );
          proxyConnector.setWhiteListPatterns( Arrays.asList( "foo", "bar" ) );
          proxyConnectorAdmin.addProxyConnector( proxyConnector, getFakeAuditInformation() );
  
          assertFalse( proxyConnectorAdmin.getProxyConnectors().isEmpty() );
          assertEquals( 2, proxyConnectorAdmin.getProxyConnectors().size() );
  
          assertNotNull( proxyConnectorAdmin.getProxyConnector( "snapshots", "central" ) );
          assertEquals( Arrays.asList( "foo", "bar" ),
                        proxyConnectorAdmin.getProxyConnector( "snapshots", "central" ).getWhiteListPatterns() );
  
          proxyConnectorAdmin.deleteProxyConnector( proxyConnector, getFakeAuditInformation() );
  
          proxyConnector.setTargetRepoId( remoteRepository.getId() );
          proxyConnectorAdmin.addProxyConnector( proxyConnector, getFakeAuditInformation() );
  
          assertNull( proxyConnectorAdmin.getProxyConnector( "snapshots", "central" ) );
          assertNotNull( remoteRepository.getId(),
                         proxyConnectorAdmin.getProxyConnector( "snapshots", remoteRepository.getId() ) );
  
          proxyConnectorAdmin.deleteProxyConnector( proxyConnector, getFakeAuditInformation() );
  
          assertNull( proxyConnectorAdmin.getProxyConnector( "snapshots", "central" ) );
  
          assertEquals( 1, proxyConnectorAdmin.getProxyConnectors().size() );
          assertFalse( proxyConnectorAdmin.getProxyConnectors().isEmpty() );
  
          assertEquals( 5, mockAuditListener.getAuditEvents().size() );
  
          assertEquals( AuditEvent.ADD_REMOTE_REPO, mockAuditListener.getAuditEvents().get( 0 ).getAction() );
  
          assertEquals( AuditEvent.ADD_PROXY_CONNECTOR, mockAuditListener.getAuditEvents().get( 1 ).getAction() );
          assertEquals( "root", mockAuditListener.getAuditEvents().get( 2 ).getUserId() );
          assertEquals( "archiva-localhost", mockAuditListener.getAuditEvents().get( 2 ).getRemoteIP() );
  
          assertEquals( AuditEvent.DELETE_PROXY_CONNECTOR, mockAuditListener.getAuditEvents().get( 2 ).getAction() );
  
          assertEquals( AuditEvent.ADD_PROXY_CONNECTOR, mockAuditListener.getAuditEvents().get( 3 ).getAction() );
  
          assertEquals( AuditEvent.DELETE_PROXY_CONNECTOR, mockAuditListener.getAuditEvents().get( 4 ).getAction() );
          assertEquals( "root", mockAuditListener.getAuditEvents().get( 4 ).getUserId() );
  
          remoteRepositoryAdmin.deleteRemoteRepository( remoteRepository.getId(), getFakeAuditInformation() );
          mockAuditListener.clearEvents();
      }
  
      @Test
      public void findProxyConnector()
          throws Exception
      {
          ProxyConnector proxyConnector = proxyConnectorAdmin.getProxyConnector( "internal", "central" );
          assertNotNull( proxyConnector );
      }
  
      @Test
      public void updateProxyConnector()
          throws Exception
      {
          mockAuditListener.clearEvents();
          ProxyConnector proxyConnector = proxyConnectorAdmin.getProxyConnector( "internal", "central" );
          assertNotNull( proxyConnector );
          proxyConnector.setDisabled( false );
          proxyConnectorAdmin.updateProxyConnector( proxyConnector, getFakeAuditInformation() );
          proxyConnector = proxyConnectorAdmin.getProxyConnector( "internal", "central" );
          assertFalse( proxyConnector.isDisabled() );
  
          proxyConnector.setDisabled( true );
          proxyConnectorAdmin.updateProxyConnector( proxyConnector, getFakeAuditInformation() );
          proxyConnector = proxyConnectorAdmin.getProxyConnector( "internal", "central" );
          assertTrue( proxyConnector.isDisabled() );
  
          proxyConnector.setOrder( 4 );
          proxyConnectorAdmin.updateProxyConnector( proxyConnector, getFakeAuditInformation() );
          proxyConnector = proxyConnectorAdmin.getProxyConnector( "internal", "central" );
          assertEquals( 4, proxyConnector.getOrder() );
          mockAuditListener.clearEvents();
  
      }
  
  }
  