You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by aw...@apache.org on 2019/06/06 07:10:14 UTC
[fineract-cn-notifications] 23/36: Changed Notification Admin to
OrgAdmin
This is an automated email from the ASF dual-hosted git repository.
awasum pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-notifications.git
commit 184aea0f5afe0a4c80e217b3fac53cf2e827000d
Author: Ebenezer Graham <eg...@alustudent.com>
AuthorDate: Thu May 9 07:54:23 2019 +0400
Changed Notification Admin to OrgAdmin
---
.gitignore | 8 +-
.../cn/notification/EmailApiDocumentation.java | 81 +++++-
.../notification/NotificationApiDocumentation.java | 289 ---------------------
.../cn/notification/SmsApiDocumentation.java | 94 +++++--
.../TestApplicationAuthentication.java | 48 ----
.../fineract/cn/notification/TestEmailService.java | 2 +-
.../fineract/cn/notification/TestSMSService.java | 2 +-
.../apache/fineract/cn/notification/TestSuite.java | 4 +-
.../internal/config/NotificationProperties.java | 9 +
.../identity/NotificationAuthentication.java | 23 +-
.../internal/service/NotificationService.java | 5 +-
service/src/main/resources/application.yml | 3 +-
.../db/migrations/mariadb/V1__initial_setup.sql | 4 +-
13 files changed, 188 insertions(+), 384 deletions(-)
diff --git a/.gitignore b/.gitignore
index 3349144..f295929 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,12 +2,8 @@
.idea
build/
target/
-api/out/
-api/build/
-service/out/
-service/build/
-component-test/out/
-component-test/build/
+**/out/
+**/build/
# Ignore Gradle GUI config
gradle-app.setting
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/EmailApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/notification/EmailApiDocumentation.java
index 1632f0c..3aa0e48 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/EmailApiDocumentation.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/notification/EmailApiDocumentation.java
@@ -37,10 +37,9 @@ import org.springframework.web.context.WebApplicationContext;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
+import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*;
+import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete;
+import static org.springframework.restdocs.operation.preprocess.Preprocessors.*;
import static org.springframework.restdocs.payload.PayloadDocumentation.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -50,8 +49,9 @@ public class EmailApiDocumentation extends AbstractNotificationTest {
@Autowired
private WebApplicationContext context;
-
- private MockMvc mockMvc;
+ private Gson gson = new Gson();
+
+ private MockMvc mockMvc;
@Autowired
private NotificationManager notificationManager;
@@ -71,12 +71,11 @@ public class EmailApiDocumentation extends AbstractNotificationTest {
public void documentCreateEmailConfiguration() throws Exception {
final EmailConfiguration emailConfiguration = DomainObjectGenerator.emailConfiguration();
- Gson gson = new Gson();
- this.mockMvc.perform(post("/notification/email/create")
+ this.mockMvc.perform(post("/configuration/email/create")
.accept(MediaType.APPLICATION_JSON_VALUE)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.content(gson.toJson(emailConfiguration)))
- .andExpect(status().isAccepted())
+ .andExpect(status().isCreated())
.andDo(document("document-create-emailconfiguration", preprocessRequest(prettyPrint()),
requestFields(
fieldWithPath("identifier").description("EmailConfiguration's identifier"),
@@ -107,7 +106,7 @@ public class EmailApiDocumentation extends AbstractNotificationTest {
this.notificationManager.createEmailConfiguration(emailConfiguration);
eventRecorder.wait(NotificationEventConstants.POST_EMAIL_CONFIGURATION, EmailConfiguration.class);
- this.mockMvc.perform(get("/notification/email/" + emailConfiguration.getIdentifier())
+ this.mockMvc.perform(get("/configuration/email/" + emailConfiguration.getIdentifier())
.accept(MediaType.ALL_VALUE)
.contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(status().isOk())
@@ -125,4 +124,66 @@ public class EmailApiDocumentation extends AbstractNotificationTest {
)
));
}
+
+ @Test
+ public void documentUpdateEmailConfiguration() throws Exception {
+
+ final EmailConfiguration randomEmailConfiguration = DomainObjectGenerator.emailConfiguration();
+ final EmailConfiguration newRandomConfiguration = DomainObjectGenerator.emailConfiguration();
+
+ this.notificationManager.createEmailConfiguration(randomEmailConfiguration);
+
+ super.eventRecorder.wait(NotificationEventConstants.POST_EMAIL_CONFIGURATION, randomEmailConfiguration.getIdentifier());
+
+ newRandomConfiguration.setIdentifier(randomEmailConfiguration.getIdentifier());
+ newRandomConfiguration.setHost("new.host.com");
+ newRandomConfiguration.setApp_password("changePassword");
+ newRandomConfiguration.setPort("554");
+ newRandomConfiguration.setProtocol("pop3");
+ newRandomConfiguration.setUsername("newaddress@example.com");
+ newRandomConfiguration.setSmtp_auth("false");
+ newRandomConfiguration.setStart_tls("false");
+ newRandomConfiguration.setState("ACTIVE");
+
+ notificationManager.updateEmailConfiguration(newRandomConfiguration);
+
+ super.eventRecorder.wait(NotificationEventConstants.UPDATE_EMAIL_CONFIGURATION, newRandomConfiguration.getIdentifier());
+
+ this.mockMvc.perform(put("/configuration/sms/update")
+ .accept(MediaType.APPLICATION_JSON_VALUE)
+ .contentType(MediaType.APPLICATION_JSON_VALUE)
+ .content(gson.toJson(newRandomConfiguration)))
+ .andExpect(status().isAccepted())
+ .andDo(document("document-update-email-configuration", preprocessRequest(prettyPrint()),
+ requestFields(
+ fieldWithPath("identifier").description("Configuration Id for Email Server"),
+ fieldWithPath("host").description("Email Server host address"),
+ fieldWithPath("port").description("Email Server port number"),
+ fieldWithPath("protocol").description("Type of protocol in use " +
+ "\nSMTP" +
+ "\nPOP3" +
+ "\nIMAP"),
+ fieldWithPath("username").description("Email address"),
+ fieldWithPath("app_password").description("Email app password or normal password"),
+ fieldWithPath("smtp_auth").description("Enable SMTP"),
+ fieldWithPath("start_tls").description("Enable TLS"),
+ fieldWithPath("state").description("" +
+ "\n ACTIVE for Gateway to be used" +
+ "\n DEACTIVATED for inactive gateways")
+ )));
+ }
+
+ @Test
+ public void documentDeleteEmailConfiguration() throws Exception {
+ final EmailConfiguration randomConfiguration = DomainObjectGenerator.emailConfiguration();
+
+ notificationManager.createEmailConfiguration(randomConfiguration);
+ super.eventRecorder.wait(NotificationEventConstants.DELETE_EMAIL_CONFIGURATION, randomConfiguration.getIdentifier());
+
+ this.mockMvc.perform(delete("/configuration/email/delete/" + randomConfiguration.getIdentifier())
+ .accept(MediaType.APPLICATION_JSON_VALUE)
+ .contentType(MediaType.APPLICATION_JSON_VALUE))
+ .andExpect(status().isOk())
+ .andDo(document("document-delete-email-configuration", preprocessResponse(prettyPrint())));
+ }
}
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/NotificationApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/notification/NotificationApiDocumentation.java
deleted file mode 100644
index 2473159..0000000
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/NotificationApiDocumentation.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * 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.fineract.cn.notification;
-
-import com.google.gson.Gson;
-import org.apache.fineract.cn.notification.api.v1.client.NotificationManager;
-import org.apache.fineract.cn.notification.api.v1.domain.EmailConfiguration;
-import org.apache.fineract.cn.notification.api.v1.domain.SMSConfiguration;
-import org.apache.fineract.cn.notification.api.v1.events.NotificationEventConstants;
-import org.apache.fineract.cn.notification.util.DomainObjectGenerator;
-import org.junit.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.restdocs.JUnitRestDocumentation;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.*;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.*;
-import static org.springframework.restdocs.payload.PayloadDocumentation.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-@SuppressWarnings("Unused")
-public class NotificationApiDocumentation extends TestNotification {
-
- @Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/doc/generated-snippets/test-notification");
-
- private final Gson serialize = new Gson();
- private MockMvc mockMvc;
-
- @Autowired
- NotificationManager notificationManager;
- @Autowired
- private WebApplicationContext context;
-
- public NotificationApiDocumentation() {
- super();
- }
-
- @Before
- public void setUp() {
- this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
- .apply(documentationConfiguration(this.restDocumentation))
- .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint())))
- .build();
- }
-
- @Test
- public void documentCreateSMSConfiguration() throws Exception {
- final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
-
- this.mockMvc.perform(post("/configuration/sms/create")
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(serialize.toJson(randomSMSConfiguration)))
- .andExpect(status().isCreated())
- .andDo(document("document-create-sms-configuration", preprocessRequest(prettyPrint()),
- requestFields(
- fieldWithPath("identifier").description("Configuration Id for SMS Gateway"),
- fieldWithPath("auth_token").description("SMS API authentication token"),
- fieldWithPath("account_sid").description("SMS API account SID"),
- fieldWithPath("sender_number").description("SMS API sender number"),
- fieldWithPath("state").description("The state of the Gateway" +
- "\n ACTIVE for Gateway to be used" +
- "\n DEACTIVATED for inactive gateways")
- )));
- }
-
- @Test
- public void documentCreateEmailConfiguration() throws Exception {
- final EmailConfiguration randomEmailConfiguration = DomainObjectGenerator.emailConfiguration();
-
- this.mockMvc.perform(post("/configuration/email/create")
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(serialize.toJson(randomEmailConfiguration)))
- .andExpect(status().isCreated())
- .andDo(document("document-create-email-configuration", preprocessRequest(prettyPrint()),
- requestFields(
- fieldWithPath("identifier").description("Configuration Id for Email Server"),
- fieldWithPath("host").description("Email Server host address"),
- fieldWithPath("port").description("Email Server port number"),
- fieldWithPath("protocol").description("Type of protocol in use " +
- "\nSMTP" +
- "\nPOP3" +
- "\nIMAP"),
- fieldWithPath("username").description("Email address"),
- fieldWithPath("app_password").description("Email app password or normal password"),
- fieldWithPath("smtp_auth").description("Enable SMTP"),
- fieldWithPath("start_tls").description("Enable TLS"),
- fieldWithPath("state").description("" +
- "\n ACTIVE for Gateway to be used" +
- "\n DEACTIVATED for inactive gateways")
- )));
- }
-
- @Test
- public void documentFindSMSConfiguration() throws Exception {
- final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
-
- this.notificationManager.createSMSConfiguration(randomSMSConfiguration);
-
- super.eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION, randomSMSConfiguration.getIdentifier());
-
- notificationManager.findSMSConfigurationByIdentifier(randomSMSConfiguration.getIdentifier());
-
- this.mockMvc.perform(get("/configuration/sms/" + randomSMSConfiguration.getIdentifier())
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(serialize.toJson(randomSMSConfiguration.getIdentifier())))
- .andExpect(status().isOk())
- .andDo(document("document-find-sms-configuration", preprocessRequest(prettyPrint()),
- responseFields(
- fieldWithPath("identifier").description("Configuration Id for SMS Gateway"),
- fieldWithPath("auth_token").description("SMS API authentication token"),
- fieldWithPath("account_sid").description("SMS API account SID"),
- fieldWithPath("sender_number").description("SMS API sender number"),
- fieldWithPath("type").description("Type of Configuration"),
- fieldWithPath("state").description("The state of the Gateway" +
- "\n ACTIVE for Gateway to be used" +
- "\n DEACTIVATED for inactive gateways")
- )));
- }
-
- @Test
- public void documentFindEmailConfiguration() throws Exception {
- final EmailConfiguration randomEmailConfiguration = DomainObjectGenerator.emailConfiguration();
-
- this.notificationManager.createEmailConfiguration(randomEmailConfiguration);
-
- super.eventRecorder.wait(NotificationEventConstants.POST_EMAIL_CONFIGURATION, randomEmailConfiguration.getIdentifier());
-
- this.notificationManager.findEmailConfigurationByIdentifier(randomEmailConfiguration.getIdentifier());
-
- this.mockMvc.perform(get("/configuration/email/" + randomEmailConfiguration.getIdentifier())
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(serialize.toJson(randomEmailConfiguration.getIdentifier())))
- .andExpect(status().isOk())
- .andDo(document("document-find-email-configuration", preprocessRequest(prettyPrint()),
- responseFields(
- fieldWithPath("identifier").description("Configuration Id for Email Server"),
- fieldWithPath("host").description("Email Server host address"),
- fieldWithPath("port").description("Email Server port number"),
- fieldWithPath("protocol").description("Type of protocol being used by server " +
- "\nSMTP" +
- "\nPOP3" +
- "\nIMAP"),
- fieldWithPath("username").description("Email address"),
- fieldWithPath("app_password").description("Email app password or normal password"),
- fieldWithPath("smtp_auth").description("Enable SMTP"),
- fieldWithPath("start_tls").description("Enable TLS"),
- fieldWithPath("state").description("" +
- "\n ACTIVE for Gateway to be used" +
- "\n DEACTIVATED for inactive gateways")
- )));
- }
-
- @Test
- public void documentUpdateEmailConfiguration() throws Exception {
-
- final EmailConfiguration randomEmailConfiguration = DomainObjectGenerator.emailConfiguration();
- final EmailConfiguration newRandomConfiguration = DomainObjectGenerator.emailConfiguration();
-
- this.notificationManager.createEmailConfiguration(randomEmailConfiguration);
-
- super.eventRecorder.wait(NotificationEventConstants.POST_EMAIL_CONFIGURATION, randomEmailConfiguration.getIdentifier());
-
- newRandomConfiguration.setIdentifier(randomEmailConfiguration.getIdentifier());
- newRandomConfiguration.setHost("new.host.com");
- newRandomConfiguration.setApp_password("changePassword");
- newRandomConfiguration.setPort("554");
- newRandomConfiguration.setProtocol("pop3");
- newRandomConfiguration.setUsername("newaddress@example.com");
- newRandomConfiguration.setSmtp_auth("false");
- newRandomConfiguration.setStart_tls("false");
- newRandomConfiguration.setState("ACTIVE");
-
- notificationManager.updateEmailConfiguration(newRandomConfiguration);
-
- super.eventRecorder.wait(NotificationEventConstants.UPDATE_EMAIL_CONFIGURATION, newRandomConfiguration.getIdentifier());
-
- this.mockMvc.perform(put("/configuration/sms/update")
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(serialize.toJson(newRandomConfiguration)))
- .andExpect(status().isAccepted())
- .andDo(document("document-update-email-configuration", preprocessRequest(prettyPrint()),
- requestFields(
- fieldWithPath("identifier").description("Configuration Id for Email Server"),
- fieldWithPath("host").description("Email Server host address"),
- fieldWithPath("port").description("Email Server port number"),
- fieldWithPath("protocol").description("Type of protocol in use " +
- "\nSMTP" +
- "\nPOP3" +
- "\nIMAP"),
- fieldWithPath("username").description("Email address"),
- fieldWithPath("app_password").description("Email app password or normal password"),
- fieldWithPath("smtp_auth").description("Enable SMTP"),
- fieldWithPath("start_tls").description("Enable TLS"),
- fieldWithPath("state").description("" +
- "\n ACTIVE for Gateway to be used" +
- "\n DEACTIVATED for inactive gateways")
- )));
- }
-
- @Test
- public void documentUpdateSMSConfiguration() throws Exception {
- final SMSConfiguration newRandomConfiguration = DomainObjectGenerator.smsConfiguration();
- final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
-
- this.notificationManager.createSMSConfiguration(randomSMSConfiguration);
-
- super.eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION, randomSMSConfiguration.getIdentifier());
-
- newRandomConfiguration.setIdentifier(randomSMSConfiguration.getIdentifier());
- newRandomConfiguration.setSender_number("new.host.com");
- newRandomConfiguration.setState("ACTIVE");
- newRandomConfiguration.setAccount_sid("asdLAKSKFssdfasdf554");
- newRandomConfiguration.setAuth_token("aalkeifjlasdfalje333");
-
- notificationManager.updateSMSConfiguration(randomSMSConfiguration);
-
- this.mockMvc.perform(put("/configuration/sms/update")
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(serialize.toJson(randomSMSConfiguration)))
- .andExpect(status().isAccepted())
- .andDo(document("document-update-sms-configuration", preprocessRequest(prettyPrint()),
- requestFields(
- fieldWithPath("identifier").description("Configuration Id for SMS Gateway"),
- fieldWithPath("auth_token").description("SMS API authentication token"),
- fieldWithPath("account_sid").description("SMS API account SID"),
- fieldWithPath("sender_number").description("SMS API sender number"),
- fieldWithPath("state").description("The state of the Gateway" +
- "\n ACTIVE for Gateway to be used" +
- "\n DEACTIVATED for inactive gateways")
- )));
- }
-
- @Test
- public void documentDeleteSMSConfiguration() throws Exception {
- final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
-
- this.notificationManager.createSMSConfiguration(randomSMSConfiguration);
-
- super.eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION, randomSMSConfiguration.getIdentifier());
-
- System.out.println(randomSMSConfiguration.getIdentifier());
- this.mockMvc.perform(delete("/configuration/sms/delete/" + randomSMSConfiguration.getIdentifier())
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE))
- .andExpect(status().isOk())
- .andDo(document("document-delete-sms-configuration", preprocessRequest(prettyPrint())));
- }
-
- @Test
- public void documentDeleteEmailConfiguration() throws Exception {
- final EmailConfiguration randomConfiguration = DomainObjectGenerator.emailConfiguration();
-
- notificationManager.createEmailConfiguration(randomConfiguration);
- super.eventRecorder.wait(NotificationEventConstants.DELETE_EMAIL_CONFIGURATION, randomConfiguration.getIdentifier());
-
- this.mockMvc.perform(delete("/configuration/email/delete/" + randomConfiguration.getIdentifier())
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE))
- .andExpect(status().isOk())
- .andDo(document("document-delete-email-configuration", preprocessResponse(prettyPrint())));
- }
-}
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/SmsApiDocumentation.java b/component-test/src/main/java/org/apache/fineract/cn/notification/SmsApiDocumentation.java
index 1655289..7566309 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/SmsApiDocumentation.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/notification/SmsApiDocumentation.java
@@ -37,8 +37,8 @@ import org.springframework.web.context.WebApplicationContext;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;
+import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*;
+import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
import static org.springframework.restdocs.payload.PayloadDocumentation.*;
@@ -50,7 +50,9 @@ public class SmsApiDocumentation extends AbstractNotificationTest {
@Autowired
private WebApplicationContext context;
-
+ private Gson gson = new Gson();
+
+
private MockMvc mockMvc;
@Autowired
@@ -69,23 +71,23 @@ public class SmsApiDocumentation extends AbstractNotificationTest {
@Test
public void documentCreateSMSConfiguration() throws Exception {
- final SMSConfiguration smsConfiguration = DomainObjectGenerator.smsConfiguration();
-
- Gson gson = new Gson();
- this.mockMvc.perform(post("/notification/sms/create")
- .accept(MediaType.APPLICATION_JSON_VALUE)
- .contentType(MediaType.APPLICATION_JSON_VALUE)
- .content(gson.toJson(smsConfiguration)))
- .andExpect(status().isAccepted())
- .andDo(document("document-create-smsconfiguration", preprocessRequest(prettyPrint()),
- requestFields(
- fieldWithPath("identifier").description("SMSConfiguration's identifier"),
- fieldWithPath("auth_token").description("SMSConfiguration's auth_token"),
- fieldWithPath("account_sid").description("SMSConfiguration's account_sid"),
- fieldWithPath("sender_number").description("Sender's number"),
- fieldWithPath("state").description("SMSConfiguration's state")
- )
- ));
+ final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
+
+ this.mockMvc.perform(post("/configuration/sms/create")
+ .accept(MediaType.APPLICATION_JSON_VALUE)
+ .contentType(MediaType.APPLICATION_JSON_VALUE)
+ .content(gson.toJson(randomSMSConfiguration)))
+ .andExpect(status().isCreated())
+ .andDo(document("document-create-sms-configuration", preprocessRequest(prettyPrint()),
+ requestFields(
+ fieldWithPath("identifier").description("Configuration Id for SMS Gateway"),
+ fieldWithPath("auth_token").description("SMS API authentication token"),
+ fieldWithPath("account_sid").description("SMS API account SID"),
+ fieldWithPath("sender_number").description("SMS API sender number"),
+ fieldWithPath("state").description("The state of the Gateway" +
+ "\n ACTIVE for Gateway to be used" +
+ "\n DEACTIVATED for inactive gateways")
+ )));
}
@Test
@@ -100,7 +102,7 @@ public class SmsApiDocumentation extends AbstractNotificationTest {
this.notificationManager.createSMSConfiguration(smsConfiguration);
this.eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION, SMSConfiguration.class);
- this.mockMvc.perform(get("/notification/sms/" + smsConfiguration.getIdentifier())
+ this.mockMvc.perform(get("/configuration/sms/" + smsConfiguration.getIdentifier())
.accept(MediaType.ALL_VALUE)
.contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(status().isOk())
@@ -115,4 +117,54 @@ public class SmsApiDocumentation extends AbstractNotificationTest {
)
));
}
+
+ @Test
+ public void documentUpdateSMSConfiguration() throws Exception {
+ final SMSConfiguration newRandomConfiguration = DomainObjectGenerator.smsConfiguration();
+ final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
+
+ this.notificationManager.createSMSConfiguration(randomSMSConfiguration);
+
+ super.eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION, randomSMSConfiguration.getIdentifier());
+
+ newRandomConfiguration.setIdentifier(randomSMSConfiguration.getIdentifier());
+ newRandomConfiguration.setSender_number("new.host.com");
+ newRandomConfiguration.setState("ACTIVE");
+ newRandomConfiguration.setAccount_sid("asdLAKSKFssdfasdf554");
+ newRandomConfiguration.setAuth_token("aalkeifjlasdfalje333");
+
+ notificationManager.updateSMSConfiguration(randomSMSConfiguration);
+
+ this.mockMvc.perform(put("/configuration/sms/update")
+ .accept(MediaType.APPLICATION_JSON_VALUE)
+ .contentType(MediaType.APPLICATION_JSON_VALUE)
+ .content(gson.toJson(randomSMSConfiguration)))
+ .andExpect(status().isAccepted())
+ .andDo(document("document-update-sms-configuration", preprocessRequest(prettyPrint()),
+ requestFields(
+ fieldWithPath("identifier").description("Configuration Id for SMS Gateway"),
+ fieldWithPath("auth_token").description("SMS API authentication token"),
+ fieldWithPath("account_sid").description("SMS API account SID"),
+ fieldWithPath("sender_number").description("SMS API sender number"),
+ fieldWithPath("state").description("The state of the Gateway" +
+ "\n ACTIVE for Gateway to be used" +
+ "\n DEACTIVATED for inactive gateways")
+ )));
+ }
+
+ @Test
+ public void documentDeleteSMSConfiguration() throws Exception {
+ final SMSConfiguration randomSMSConfiguration = DomainObjectGenerator.smsConfiguration();
+
+ this.notificationManager.createSMSConfiguration(randomSMSConfiguration);
+
+ super.eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION, randomSMSConfiguration.getIdentifier());
+
+ System.out.println(randomSMSConfiguration.getIdentifier());
+ this.mockMvc.perform(delete("/configuration/sms/delete/" + randomSMSConfiguration.getIdentifier())
+ .accept(MediaType.APPLICATION_JSON_VALUE)
+ .contentType(MediaType.APPLICATION_JSON_VALUE))
+ .andExpect(status().isOk())
+ .andDo(document("document-delete-sms-configuration", preprocessRequest(prettyPrint())));
+ }
}
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/TestApplicationAuthentication.java b/component-test/src/main/java/org/apache/fineract/cn/notification/TestApplicationAuthentication.java
deleted file mode 100644
index 49479be..0000000
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/TestApplicationAuthentication.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.fineract.cn.notification;
-
-import org.apache.fineract.cn.notification.api.v1.client.NotificationManager;
-import org.apache.fineract.cn.notification.service.internal.identity.NotificationAuthentication;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.Optional;
-
-public class TestApplicationAuthentication extends TestNotification {
-
- private final String applicationIdentifier = "customer-v1";
-
- @Autowired
- NotificationAuthentication notificationAuthenticationMock;
-
-
- public TestApplicationAuthentication() {
- super();
- }
-
- @Test
- public void createApplicationPermissionForCustomerService() {
- //Todo : look at it later
- //Assert.assertFalse(this.notificationAuthenticationMock.authenticateWithCustomerService(super.tenantDataStoreContext.getTenantName()));
- }
-
-}
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java b/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
index 65adbc6..6808678 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
@@ -51,7 +51,7 @@ public class TestEmailService extends AbstractNotificationTest {
@Test
- public void sendEmail() throws InterruptedException {
+ public void shouldSendAnEmail() throws InterruptedException {
this.logger.info("Send Email Notification");
String messageHash = notificationService.sendEmail("fineractcnnotificationdemo@gmail.com",
"egraham15@alustudent.com",
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java b/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
index 315c79b..37ab85f 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
@@ -85,7 +85,7 @@ public class TestSMSService extends AbstractNotificationTest {
}
@Test
- public void sendSMS() {
+ public void shouldSendAnSMS() {
this.logger.info("Send SMS Notification");
String messageHash = this.notificationService.sendSMS("+23058409206",
"Dear Valued Customer\n\nTalk is cheap show me the code\n\nBest Regards\nYour MFI");
diff --git a/component-test/src/main/java/org/apache/fineract/cn/notification/TestSuite.java b/component-test/src/main/java/org/apache/fineract/cn/notification/TestSuite.java
index af10e31..ad4208a 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/notification/TestSuite.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/notification/TestSuite.java
@@ -25,8 +25,8 @@ import org.junit.runners.Suite;
@Suite.SuiteClasses({
TestEmailService.class,
TestSMSService.class,
- TestApplicationAuthentication.class,
- NotificationApiDocumentation.class
+ EmailApiDocumentation.class,
+ SmsApiDocumentation.class,
})
public class TestSuite extends SuiteTestEnvironment {
}
diff --git a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationProperties.java b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationProperties.java
index a24b62c..93e31ba 100644
--- a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationProperties.java
+++ b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationProperties.java
@@ -46,6 +46,7 @@ import org.springframework.stereotype.Component;
public class NotificationProperties {
private String user;
+ private String password;
public NotificationProperties() {
}
@@ -57,4 +58,12 @@ public class NotificationProperties {
public void setUser(String user) {
this.user = user;
}
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
}
diff --git a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/identity/NotificationAuthentication.java b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/identity/NotificationAuthentication.java
index d38ba3f..b3c357b 100644
--- a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/identity/NotificationAuthentication.java
+++ b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/identity/NotificationAuthentication.java
@@ -20,8 +20,14 @@ package org.apache.fineract.cn.notification.service.internal.identity;
import org.apache.fineract.cn.api.context.AutoUserContext;
import org.apache.fineract.cn.api.util.InvalidTokenException;
+import org.apache.fineract.cn.api.util.UserContextHolder;
+import org.apache.fineract.cn.customer.api.v1.client.CustomerManager;
+import org.apache.fineract.cn.customer.api.v1.client.CustomerNotFoundException;
import org.apache.fineract.cn.customer.api.v1.domain.Customer;
+import org.apache.fineract.cn.identity.api.v1.client.IdentityManager;
+import org.apache.fineract.cn.identity.api.v1.domain.Authentication;
import org.apache.fineract.cn.lang.AutoTenantContext;
+import org.apache.fineract.cn.lang.TenantContextHolder;
import org.apache.fineract.cn.notification.service.ServiceConstants;
import org.apache.fineract.cn.notification.service.internal.config.NotificationProperties;
import org.apache.fineract.cn.permittedfeignclient.service.ApplicationAccessTokenService;
@@ -29,6 +35,7 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
+import org.springframework.util.Base64Utils;
import java.util.Optional;
@@ -38,16 +45,20 @@ public class NotificationAuthentication {
private Logger logger;
private CustomerPermittedClient customerPermittedClient;
private NotificationProperties notificationProperties;
+ private IdentityManager identityManager;
+
@Autowired
public NotificationAuthentication(final NotificationProperties notificationPropertities,
- final CustomerPermittedClient customerPermittedClient,
+ final IdentityManager identityManager,
+ final CustomerPermittedClient customerPermittedClient,
@SuppressWarnings("SpringJavaAutowiringInspection")final ApplicationAccessTokenService applicationAccessTokenService,
@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger) {
this.logger = logger;
this.customerPermittedClient = customerPermittedClient;
this.notificationProperties = notificationPropertities;
this.applicationAccessTokenService = applicationAccessTokenService;
+ this.identityManager = identityManager;
}
public Optional<Customer> getCustomer(String tenantIdentifier, String customerId) {
@@ -65,4 +76,14 @@ public class NotificationAuthentication {
return Optional.empty();
}
}
+
+ public void authenticate(String tenant) {
+ TenantContextHolder.clear();
+ TenantContextHolder.setIdentifier(tenant);
+
+ final Authentication authentication =
+ this.identityManager.login(notificationProperties.getUser(), Base64Utils.encodeToString(notificationProperties.getPassword().getBytes()));
+ UserContextHolder.clear();
+ UserContextHolder.setAccessToken(notificationProperties.getUser(), authentication.getAccessToken());
+ }
}
diff --git a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
index 783adc8..02b3621 100644
--- a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
+++ b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
@@ -60,8 +60,9 @@ public class NotificationService {
}
public Optional<Customer> findCustomer(final String customerIdentifier, String tenant) {
- return notificationAuthentication.getCustomer(tenant,customerIdentifier);
- //return Optional.of(this.customerPermittedClient.findCustomer(customerIdentifier));
+ notificationAuthentication.authenticate(tenant);
+ //return notificationAuthentication.getCustomer(tenant,customerIdentifier);
+ return customerService.findCustomer(customerIdentifier);
}
//SMS Related Operations
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index a1d6207..d1c0460 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -83,4 +83,5 @@ flyway:
enabled: false
notification:
- user: wadaadmin
\ No newline at end of file
+ user: operator
+ password: init1@l
diff --git a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
index 7f66214..9e1aba3 100644
--- a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
@@ -66,5 +66,5 @@ CREATE TABLE wada_templates (
PRIMARY KEY (id)
);
-INSERT INTO wada_sms_gateway_configurations VALUES ('1', 'Twilio', 'AC1fde2c6f26f367b93231c5fdb944c908', 'bc9a53e41745b8471e0ecafc859d86aa', '+1 510-944-1898', 'ACTIVE');
-INSERT INTO wada_email_gateway_configurations VALUES ('1', 'Gmail', 'smtp.gmail.com', '587','fineractcnnotificationdemo@gmail.com', 'pnuugpwmcibipdpw', 'smtp', 'true', 'true', 'ACTIVE');
\ No newline at end of file
+INSERT INTO wada_sms_gateway_configurations VALUES ('1', 'Twilio', 'ACdc00866577a42133e16d98456ad15592', '0b2f78b1c083eb71599d014d1af5748e', '+12055486680', 'ACTIVE');
+INSERT INTO wada_email_gateway_configurations VALUES ('1', 'Gmail', 'smtp.gmail.com', '587','fineractcnnotificationdemo@gmail.com', 'pnuugpwmcibipdpw', 'smtp', 'true', 'true', 'ACTIVE');