blob: a1782c4565fc0275c7518c13087b0e2d173cdb86 [file] [log] [blame]
/*
* 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.
*/
package org.apache.nifi.registry.service.alias;
import org.apache.nifi.registry.url.aliaser.generated.Alias;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
public class RegistryUrlAliasServiceTest {
private static Alias createAlias(String internal, String external) {
Alias result = new Alias();
result.setInternal(internal);
result.setExternal(external);
return result;
}
@Test
public void testNoAliases() {
RegistryUrlAliasService aliaser = new RegistryUrlAliasService(Collections.emptyList());
String url = "https://registry.com:18080";
assertEquals(url, aliaser.getExternal(url));
assertEquals(url, aliaser.getInternal(url));
}
@Test(expected = IllegalArgumentException.class)
public void testMalformedExternal() {
new RegistryUrlAliasService(Collections.singletonList(createAlias("https://registry.com:18080", "registry.com:18080")));
}
@Test
public void testSingleAliasUrl() {
String internal = "https://registry-1.com:18443";
String external = "http://localhost:18080";
String unchanged = "https://registry-2.com:18443";
RegistryUrlAliasService aliaser = new RegistryUrlAliasService(Collections.singletonList(createAlias(internal, external)));
assertEquals(external, aliaser.getExternal(internal));
assertEquals(internal, aliaser.getInternal(external));
assertEquals(unchanged, aliaser.getExternal(unchanged));
assertEquals(unchanged, aliaser.getInternal(unchanged));
// Ensure replacement is only the prefix
internal += "/nifi-registry/";
external += "/nifi-registry/";
unchanged += "/nifi-registry/";
assertEquals(external, aliaser.getExternal(internal));
assertEquals(internal, aliaser.getInternal(external));
assertEquals(unchanged, aliaser.getExternal(unchanged));
assertEquals(unchanged, aliaser.getInternal(unchanged));
}
@Test
public void testSingleAliasToken() {
String internal = "THIS_NIFI_REGISTRY";
String external = "http://localhost:18080";
String unchanged = "https://registry-2.com:18443";
RegistryUrlAliasService aliaser = new RegistryUrlAliasService(Collections.singletonList(createAlias(internal, external)));
assertEquals(external, aliaser.getExternal(internal));
assertEquals(internal, aliaser.getInternal(external));
assertEquals(unchanged, aliaser.getExternal(unchanged));
assertEquals(unchanged, aliaser.getInternal(unchanged));
// Ensure replacement is only the prefix
internal += "/nifi-registry/";
external += "/nifi-registry/";
unchanged += "/nifi-registry/";
assertEquals(external, aliaser.getExternal(internal));
assertEquals(internal, aliaser.getInternal(external));
assertEquals(unchanged, aliaser.getExternal(unchanged));
assertEquals(unchanged, aliaser.getInternal(unchanged));
}
@Test
public void testMultipleAliases() {
String internal1 = "https://registry-1.com:18443";
String external1 = "http://localhost:18080";
String internal2 = "https://registry-2.com:18443";
String external2 = "http://localhost:18081";
String internal3 = "THIS_NIFI_REGISTRY";
String external3 = "http://localhost:18082";
String unchanged = "https://registry-3.com:18443";
RegistryUrlAliasService aliaser = new RegistryUrlAliasService(Arrays.asList(createAlias(internal1, external1), createAlias(internal2, external2), createAlias(internal3, external3)));
assertEquals(external1, aliaser.getExternal(internal1));
assertEquals(external2, aliaser.getExternal(internal2));
assertEquals(external3, aliaser.getExternal(internal3));
assertEquals(internal1, aliaser.getInternal(external1));
assertEquals(internal2, aliaser.getInternal(external2));
assertEquals(internal3, aliaser.getInternal(external3));
assertEquals(unchanged, aliaser.getExternal(unchanged));
assertEquals(unchanged, aliaser.getInternal(unchanged));
// Ensure replacement is only the prefix
internal1 += "/nifi-registry/";
internal2 += "/nifi-registry/";
internal3 += "/nifi-registry/";
external1 += "/nifi-registry/";
external2 += "/nifi-registry/";
external3 += "/nifi-registry/";
unchanged += "/nifi-registry/";
assertEquals(external1, aliaser.getExternal(internal1));
assertEquals(external2, aliaser.getExternal(internal2));
assertEquals(external3, aliaser.getExternal(internal3));
assertEquals(internal1, aliaser.getInternal(external1));
assertEquals(internal2, aliaser.getInternal(external2));
assertEquals(internal3, aliaser.getInternal(external3));
assertEquals(unchanged, aliaser.getExternal(unchanged));
assertEquals(unchanged, aliaser.getInternal(unchanged));
}
@Test
public void testMigrationPath() {
String internal1 = "INTERNAL_TOKEN";
String internal2 = "http://old.registry.url";
String external = "https://new.registry.url";
RegistryUrlAliasService aliaser = new RegistryUrlAliasService(Arrays.asList(createAlias(internal1, external), createAlias(internal2, external)));
assertEquals(internal1, aliaser.getInternal(external));
assertEquals(external, aliaser.getExternal(internal1));
assertEquals(external, aliaser.getExternal(internal2));
}
@Test(expected = IllegalArgumentException.class)
public void testDuplicateInternalTokens() {
String internal = "THIS_NIFI_REGISTRY";
String external1 = "http://localhost:18080";
String external2 = "http://localhost:18081";
new RegistryUrlAliasService(Arrays.asList(createAlias(internal, external1), createAlias(internal, external2)));
}
}