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');