mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-04 15:50:14 +00:00
356 lines
8.7 KiB
Java
356 lines
8.7 KiB
Java
package security;
|
|
|
|
import static auth.AuthUtils.*;
|
|
import static auth.sso.oidc.OidcConfigs.*;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
import auth.sso.oidc.OidcConfigs;
|
|
import auth.sso.oidc.OidcProvider;
|
|
import com.typesafe.config.Config;
|
|
import com.typesafe.config.ConfigList;
|
|
import com.typesafe.config.ConfigMemorySize;
|
|
import com.typesafe.config.ConfigMergeable;
|
|
import com.typesafe.config.ConfigObject;
|
|
import com.typesafe.config.ConfigOrigin;
|
|
import com.typesafe.config.ConfigResolveOptions;
|
|
import com.typesafe.config.ConfigValue;
|
|
import com.typesafe.config.ConfigValueFactory;
|
|
import java.time.Duration;
|
|
import java.time.Period;
|
|
import java.time.temporal.TemporalAmount;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.concurrent.TimeUnit;
|
|
import org.json.JSONObject;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.pac4j.oidc.client.OidcClient;
|
|
|
|
public class OidcConfigurationTest {
|
|
|
|
private static final com.typesafe.config.Config CONFIG =
|
|
new Config() {
|
|
|
|
private final Map<String, Object> _map = new HashMap<>();
|
|
|
|
@Override
|
|
public ConfigObject root() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ConfigOrigin origin() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config withFallback(ConfigMergeable other) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config resolve() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config resolve(ConfigResolveOptions options) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public boolean isResolved() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public Config resolveWith(Config source) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config resolveWith(Config source, ConfigResolveOptions options) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void checkValid(Config reference, String... restrictToPaths) {}
|
|
|
|
@Override
|
|
public boolean hasPath(String path) {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasPathOrNull(String path) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public Set<Map.Entry<String, ConfigValue>> entrySet() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public boolean getIsNull(String path) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean getBoolean(String path) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public Number getNumber(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public int getInt(String path) {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public long getLong(String path) {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public double getDouble(String path) {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public String getString(String path) {
|
|
return (String) _map.getOrDefault(path, "1");
|
|
}
|
|
|
|
@Override
|
|
public <T extends Enum<T>> T getEnum(Class<T> enumClass, String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ConfigObject getObject(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config getConfig(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Object getAnyRef(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ConfigValue getValue(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Long getBytes(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ConfigMemorySize getMemorySize(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Long getMilliseconds(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Long getNanoseconds(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public long getDuration(String path, TimeUnit unit) {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public Duration getDuration(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Period getPeriod(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public TemporalAmount getTemporal(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ConfigList getList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Boolean> getBooleanList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Number> getNumberList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Integer> getIntList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Long> getLongList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Double> getDoubleList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<String> getStringList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public <T extends Enum<T>> List<T> getEnumList(Class<T> enumClass, String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<? extends ConfigObject> getObjectList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<? extends Config> getConfigList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<? extends Object> getAnyRefList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Long> getBytesList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<ConfigMemorySize> getMemorySizeList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Long> getMillisecondsList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Long> getNanosecondsList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Long> getDurationList(String path, TimeUnit unit) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<Duration> getDurationList(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config withOnlyPath(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config withoutPath(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config atPath(String path) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config atKey(String key) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Config withValue(String path, ConfigValue value) {
|
|
_map.put(path, value.unwrapped());
|
|
return this;
|
|
}
|
|
};
|
|
|
|
@Test
|
|
public void readTimeoutPropagation() {
|
|
|
|
CONFIG.withValue(OIDC_READ_TIMEOUT, ConfigValueFactory.fromAnyRef("10000"));
|
|
OidcConfigs.Builder oidcConfigsBuilder = new OidcConfigs.Builder();
|
|
oidcConfigsBuilder.from(CONFIG);
|
|
OidcConfigs oidcConfigs = oidcConfigsBuilder.build();
|
|
OidcProvider oidcProvider = new OidcProvider(oidcConfigs);
|
|
assertEquals(10000, ((OidcClient) oidcProvider.client()).getConfiguration().getReadTimeout());
|
|
}
|
|
|
|
@Test
|
|
public void readPreferredJwsAlgorithmPropagationFromConfig() {
|
|
final String SSO_SETTINGS_JSON_STR = new JSONObject().toString();
|
|
CONFIG.withValue(OIDC_PREFERRED_JWS_ALGORITHM, ConfigValueFactory.fromAnyRef("RS256"));
|
|
OidcConfigs.Builder oidcConfigsBuilder = new OidcConfigs.Builder();
|
|
oidcConfigsBuilder.from(CONFIG, SSO_SETTINGS_JSON_STR);
|
|
OidcConfigs oidcConfigs = new OidcConfigs(oidcConfigsBuilder);
|
|
OidcProvider oidcProvider = new OidcProvider(oidcConfigs);
|
|
assertEquals(
|
|
"RS256",
|
|
((OidcClient) oidcProvider.client())
|
|
.getConfiguration()
|
|
.getPreferredJwsAlgorithm()
|
|
.toString());
|
|
}
|
|
|
|
@Test
|
|
public void readPreferredJwsAlgorithmPropagationFromJSON() {
|
|
final String SSO_SETTINGS_JSON_STR =
|
|
new JSONObject().put(PREFERRED_JWS_ALGORITHM, "HS256").toString();
|
|
CONFIG.withValue(OIDC_PREFERRED_JWS_ALGORITHM, ConfigValueFactory.fromAnyRef("RS256"));
|
|
OidcConfigs.Builder oidcConfigsBuilder = new OidcConfigs.Builder();
|
|
oidcConfigsBuilder.from(CONFIG, SSO_SETTINGS_JSON_STR);
|
|
OidcConfigs oidcConfigs = new OidcConfigs(oidcConfigsBuilder);
|
|
OidcProvider oidcProvider = new OidcProvider(oidcConfigs);
|
|
assertEquals(
|
|
"HS256",
|
|
((OidcClient) oidcProvider.client())
|
|
.getConfiguration()
|
|
.getPreferredJwsAlgorithm()
|
|
.toString());
|
|
}
|
|
}
|