[
https://issues.apache.org/jira/browse/JAMES-2149?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16507600#comment-16507600
]
ASF GitHub Bot commented on JAMES-2149:
---------------------------------------
Github user chibenwa commented on a diff in the pull request:
https://github.com/apache/james-project/pull/119#discussion_r194282370
--- Diff:
server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainMappingsRoutesTest.java
---
@@ -0,0 +1,217 @@
+/****************************************************************
+ * 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.james.webadmin.routes;
+
+import com.google.common.collect.ImmutableList;
+import com.jayway.restassured.RestAssured;
+import com.jayway.restassured.filter.log.LogDetail;
+import com.jayway.restassured.http.ContentType;
+import com.jayway.restassured.response.Response;
+import com.jayway.restassured.specification.RequestSpecification;
+import org.apache.james.core.Domain;
+import org.apache.james.metrics.logger.DefaultMetricFactory;
+import org.apache.james.rrt.api.RecipientRewriteTable;
+import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.lib.MappingSource;
+import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
+import org.apache.james.webadmin.WebAdminServer;
+import org.apache.james.webadmin.WebAdminUtils;
+import org.apache.james.webadmin.utils.JsonTransformer;
+import org.eclipse.jetty.http.HttpStatus;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+import static com.jayway.restassured.RestAssured.*;
+import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.entry;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.isEmptyString;
+import static org.mockito.Mockito.spy;
+
+class DomainMappingsRoutesTest {
+ private RecipientRewriteTable recipientRewriteTable;
+ private WebAdminServer webAdminServer;
+
+ @SuppressWarnings("unused")
+ static Stream<Arguments> invalidInputs() {
+ return Stream.of(
+ Arguments.of("domain.com", ""),
+ // Why this params should pass the test ?
+ // "domain.com, ' '",
+ // "domain.com, ' \n\t\r'",
+ Arguments.of("[email protected]", "domain.com"),
+ Arguments.of("domain.com", "[email protected]")
+
+ );
+ }
+
+ private void createServer(DomainMappingsRoutes domainMappingsRoutes)
throws Exception {
+ webAdminServer = WebAdminUtils.createWebAdminServer(new
DefaultMetricFactory(), domainMappingsRoutes);
+ webAdminServer.configure(NO_CONFIGURATION);
+ webAdminServer.await();
+
+ RestAssured.requestSpecification =
WebAdminUtils.buildRequestSpecification(webAdminServer)
+ .setBasePath("/domainMappings")
+ .log(LogDetail.METHOD)
+ .build();
+ }
+
+ @BeforeEach
+ void setUp() throws Exception {
+ recipientRewriteTable = spy(new MemoryRecipientRewriteTable());
+
+ createServer(new DomainMappingsRoutes(recipientRewriteTable, new
JsonTransformer()));
+ }
+
+ @AfterEach
+ void tearDown() {
+ webAdminServer.destroy();
+ }
+
+ @Nested
+ class NormalBehaviour {
+
+ @Test
+ void addDomainMappingShouldRespondWithNoContent() {
+ // @formatter:off
+ given(with().body("to.com"))
+ .put("from.com")
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204)
+ .body(isEmptyString());
+ // @formatter:on
+ }
+
+ @Test
+ void getDomainMappings() throws RecipientRewriteTableException {
+ Domain expectedDomain = Domain.of("abc.com");
+ MappingSource mappingSource =
MappingSource.fromDomain(expectedDomain);
+ ImmutableList<String> expectedAliases =
ImmutableList.of("to_1.com", "to_2.com", "to_3.com");
+
+ for (String alias : expectedAliases) {
+ recipientRewriteTable.addAliasDomainMapping(mappingSource,
Domain.of(alias));
+ }
+
+ // @formatter:off
--- End diff --
These comments are a bit annoying. Wouldn't you mind removing them?
> Create domain mappings via webadmin
> -----------------------------------
>
> Key: JAMES-2149
> URL: https://issues.apache.org/jira/browse/JAMES-2149
> Project: James Server
> Issue Type: New Feature
> Components: webadmin
> Affects Versions: master
> Reporter: Tellier Benoit
> Priority: Major
> Labels: feature, newbie
>
> Nowadays, the Rewrite Table engine supports domain redirections. That is to
> say [email protected] will be rewritten as [email protected].
> However, such a feature is not exposed via webadmin.
> You will need to :
> - Create a new **DomainMappingsRoutes** in webadmin-data
> - You will expose in this routes, using directly RecipientsRewriteTable, the
> endpoitns for adding, removing and listing domain mappings.
> {code:java}
> GET /domainMappings/
> {"fromDomain1":"toDomain1", "fromDomain2": "toDomain2"}
> PUT /domainMappings/fromDomain
> "toDomain"
> DELETE /domainMappings/fromDomain
> "toDomain"
> {code}
> You will write a test class from your endpoints. See *GroupsRoutesTest*.
> Don't hesitate to ask for help on the *Gitter* chat.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]