@Provides @Singleton JMAPConfiguration provideConfiguration(PropertiesProvider propertiesProvider, FileSystem fileSystem) throws ConfigurationException, IOException { try { Configuration configuration = propertiesProvider.getConfiguration("jmap"); return JMAPConfiguration.builder() .enabled(configuration.getBoolean("enabled", true)) .keystore(configuration.getString("tls.keystoreURL")) .secret(configuration.getString("tls.secret")) .jwtPublicKeyPem(loadPublicKey(fileSystem, Optional.ofNullable(configuration.getString("jwt.publickeypem.url")))) .port(configuration.getInt("jmap.port", DEFAULT_JMAP_PORT)) .build(); } catch (FileNotFoundException e) { LOGGER.warn("Could not find JMAP configuration file. JMAP server will not be enabled."); return JMAPConfiguration.builder() .disable() .build(); } }
@Test public void buildShouldWorkWhenRandomPort() { JMAPConfiguration expectedJMAPConfiguration = new JMAPConfiguration(ENABLED, "keystore", "secret", Optional.of("file://conf/jwt_publickey"), Optional.empty()); JMAPConfiguration jmapConfiguration = JMAPConfiguration.builder() .enable() .keystore("keystore") .secret("secret") .jwtPublicKeyPem(Optional.of("file://conf/jwt_publickey")) .randomPort() .build(); assertThat(jmapConfiguration).isEqualToComparingFieldByField(expectedJMAPConfiguration); }
public Builder disable() { return enabled(false); }
public Builder enable() { return enabled(true); }
@Test public void buildShouldWorkWhenDisabled() { String keystore = null; String secret = null; Optional<String> jwtPublicKeyPem = Optional.empty(); Optional<Integer> port = Optional.empty(); JMAPConfiguration expectedJMAPConfiguration = new JMAPConfiguration(DISABLED, keystore, secret, jwtPublicKeyPem, port); JMAPConfiguration jmapConfiguration = JMAPConfiguration.builder() .disable() .build(); assertThat(jmapConfiguration).isEqualToComparingFieldByField(expectedJMAPConfiguration); } }
@Test public void buildShouldThrowWhenJwtPublicKeyPemIsEmpty() { assertThatThrownBy(() -> JMAPConfiguration.builder() .enable() .keystore("keystore") .secret("secret") .jwtPublicKeyPem(Optional.empty()) .build()) .isInstanceOf(IllegalStateException.class); }
public static Builder newConfigurationBuilder() { return JMAPConfiguration.builder() .enable() .keystore("keystore") .secret("james72laBalle") .jwtPublicKeyPem(Optional.of(JWT_PUBLIC_KEY)); }
public JamesSignatureHandler provide() throws Exception { JamesSignatureHandler signatureHandler = new JamesSignatureHandler(newFileSystem(), newConfigurationBuilder().build()); signatureHandler.init(); return signatureHandler; }
@Test public void buildShouldWorkWhenFixedPort() { JMAPConfiguration expectedJMAPConfiguration = new JMAPConfiguration(ENABLED, "keystore", "secret", Optional.of("file://conf/jwt_publickey"), Optional.of(80)); JMAPConfiguration jmapConfiguration = JMAPConfiguration.builder() .enable() .keystore("keystore") .secret("secret") .jwtPublicKeyPem(Optional.of("file://conf/jwt_publickey")) .port(80) .build(); assertThat(jmapConfiguration).isEqualToComparingFieldByField(expectedJMAPConfiguration); }
@Test public void buildShouldThrowWhenJwtPublicKeyPemIsNull() { assertThatThrownBy(() -> JMAPConfiguration.builder() .enable() .keystore("keystore") .secret("secret") .jwtPublicKeyPem(null) .build()) .isInstanceOf(NullPointerException.class); }
@Test(expected = KeyStoreException.class) public void initShouldThrowOnUnknownKeystore() throws Exception { JMAPConfiguration jmapConfiguration = JamesSignatureHandlerProvider.newConfigurationBuilder() .keystore("badAliasKeystore") .secret("password") .build(); JamesSignatureHandler signatureHandler = new JamesSignatureHandler(JamesSignatureHandlerProvider.newFileSystem(), jmapConfiguration); signatureHandler.init(); }
@Provides @Singleton JMAPConfiguration provideConfiguration() throws FileNotFoundException, ConfigurationException { return JMAPConfiguration.builder() .enable() .keystore("keystore") .secret("james72laBalle") .jwtPublicKeyPem(Optional.of(PUBLIC_PEM_KEY)) .randomPort() .build(); } }