diff --git a/kernel/kernel-otpmanager-service/.gitignore b/kernel/kernel-otpmanager-service/.gitignore deleted file mode 100644 index 6b70919dee9..00000000000 --- a/kernel/kernel-otpmanager-service/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -*.class -.mtj.tmp/ -*.jar -*.war -*.ear -hs_err_pid* -target/ -.metadata -.classpath -.project -.settings/ -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.loadpath -.DS_Store \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/Dockerfile b/kernel/kernel-otpmanager-service/Dockerfile deleted file mode 100644 index effe6bcc3da..00000000000 --- a/kernel/kernel-otpmanager-service/Dockerfile +++ /dev/null @@ -1,97 +0,0 @@ -FROM openjdk:11 - -ARG SOURCE -ARG COMMIT_HASH -ARG COMMIT_ID -ARG BUILD_TIME -LABEL source=${SOURCE} -LABEL commit_hash=${COMMIT_HASH} -LABEL commit_id=${COMMIT_ID} -LABEL build_time=${BUILD_TIME} - -# can be passed during Docker build as build time environment for github branch to pickup configuration from. -ARG spring_config_label - -# can be passed during Docker build as build time environment for spring profiles active -ARG active_profile - -# can be passed during Docker build as build time environment for config server URL -ARG spring_config_url - -# can be passed during Docker build as build time environment for glowroot -ARG is_glowroot - -# can be passed during Docker build as build time environment for artifactory URL -ARG artifactory_url - -ARG iam_adapter_url - -# environment variable to pass active profile such as DEV, QA etc at docker runtime -ENV active_profile_env=${active_profile} - -# environment variable to pass github branch to pickup configuration from, at docker runtime -ENV spring_config_label_env=${spring_config_label} - -# environment variable to pass spring configuration url, at docker runtime -ENV spring_config_url_env=${spring_config_url} - -# environment variable to pass glowroot, at docker runtime -ENV is_glowroot_env=${is_glowroot} - -# environment variable to pass artifactory url, at docker runtime -ENV artifactory_url_env=${artifactory_url} -# environment variable to pass iam_adapter url, at docker runtime -ENV iam_adapter_url_env=${iam_adapter_url} - -# can be passed during Docker build as build time environment for github branch to pickup configuration from. -ARG container_user=mosip - -# can be passed during Docker build as build time environment for github branch to pickup configuration from. -ARG container_user_group=mosip - -# can be passed during Docker build as build time environment for github branch to pickup configuration from. -ARG container_user_uid=1001 - -# can be passed during Docker build as build time environment for github branch to pickup configuration from. -ARG container_user_gid=1001 - -# install packages and create user -RUN apt-get -y update \ -&& apt-get install -y unzip \ -&& groupadd -g ${container_user_gid} ${container_user_group} \ -&& useradd -u ${container_user_uid} -g ${container_user_group} -s /bin/sh -m ${container_user} - -# set working directory for the user -WORKDIR /home/${container_user} - -ENV work_dir=/home/${container_user} - -ARG loader_path=${work_dir}/additional_jars/ - -RUN mkdir -p ${loader_path} - -ENV loader_path_env=${loader_path} - -COPY ./target/kernel-otpmanager-service-*.jar kernel-otpmanager-service.jar - -# change permissions of file inside working dir -RUN chown -R ${container_user}:${container_user} /home/${container_user} - -# select container user for all tasks -USER ${container_user_uid}:${container_user_gid} - -EXPOSE 8085 - -CMD if [ "$is_glowroot_env" = "present" ]; then \ - wget -q --show-progress "${artifactory_url_env}"/artifactory/libs-release-local/io/mosip/testing/glowroot.zip ; \ - unzip glowroot.zip ; \ - rm -rf glowroot.zip ; \ - sed -i 's//kernel-otpmanager-service/g' glowroot/glowroot.properties ; \ - wget -q --show-progress "${iam_adapter_url_env}" -O "${loader_path_env}"/kernel-auth-adapter.jar; \ - java -jar -javaagent:glowroot/glowroot.jar -Dloader.path="${loader_path_env}" -Dspring.cloud.config.label="${spring_config_label_env}" -Dspring.profiles.active="${active_profile_env}" -Dspring.cloud.config.uri="${spring_config_url_env}" kernel-otpmanager-service.jar ; \ - else \ - wget -q --show-progress "${iam_adapter_url_env}" -O "${loader_path_env}"/kernel-auth-adapter.jar; \ - java -jar -Dloader.path="${loader_path_env}" -Dspring.cloud.config.label="${spring_config_label_env}" -Dspring.profiles.active="${active_profile_env}" -Dspring.cloud.config.uri="${spring_config_url_env}" kernel-otpmanager-service.jar ; \ - fi - -#CMD ["java","-jar","-javaagent:glowroot/glowroot.jar","-Dspring.cloud.config.label=${spring_config_label_env}","-Dspring.profiles.active=${active_profile_env}","-Dspring.cloud.config.uri=${spring_config_url_env}","kernel-otpmanager-service.jar"] diff --git a/kernel/kernel-otpmanager-service/README.md b/kernel/kernel-otpmanager-service/README.md deleted file mode 100644 index caab7371763..00000000000 --- a/kernel/kernel-otpmanager-service/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Kernel Otp Manager Service -## [DEPRECATED] - -THIS MODULE IS MOVED TO https://github.com/mosip/otp-manager \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/pom.xml b/kernel/kernel-otpmanager-service/pom.xml deleted file mode 100644 index ebf1b70042e..00000000000 --- a/kernel/kernel-otpmanager-service/pom.xml +++ /dev/null @@ -1,573 +0,0 @@ - - - 4.0.0 - - io.mosip.kernel - - kernel-otpmanager-service - 1.2.1-SNAPSHOT - - UTF-8 - - - 11 - 11 - 3.8.0 - - - 3.0.2 - 3.1.0 - - - 3.2.0 - 2.3 - - - 2.0.2.RELEASE - 2.0.7.RELEASE - 5.0.5.RELEASE - 2.0.4.RELEASE - - - 2.0.7 - 1.5.21 - 2.9.2 - - - 3.6.2 - 3.7.0 - - - - 1.2 - 3.0.0 - 1.3 - 2.2 - 2.0.1.Final - 2.2.6 - - - 1.4.197 - 5.1.46 - 42.2.2 - 2.5.0 - 5.2.17.Final - 6.0.12.Final - - - 4.12 - 2.23.4 - 1.7.4 - 2.0.7 - - - 1.2.3 - 1.7.19 - 1.7.7 - 1.7.25 - - - 2.9.5 - 2.9.8 - 2.9.6 - 20180130 - 2.2.10 - 20180813 - 1.1.1 - - - 3.6.1 - 3.7 - 2.6 - 1.11 - 4.3 - 1.9.2 - 2.2 - 4.5.6 - 19.0 - 1.18.8 - 0.1.54 - 1.4.0 - 7.1.0 - 2.0.0 - 5.5.13 - 2.3.23 - 1.7 - 2.0 - 1.5.2 - 2.1.1 - 1.66 - 63.1 - 1.0.0 - 3.3.3 - 3.1.0 - 4.1.0-incubating - 1.11.368 - 0.2.4 - 2.3.0 - 3.0.1 - 1.9.12 - 0.6.0 - 2.0.0.AM2 - 1.8.12 - 1.4.2 - 1.4.2 - UTF-8 - - - 11 - 11 - 3.8.0 - - - 3.0.2 - 3.1.0 - - - 3.2.0 - 2.3 - - - 2.0.2.RELEASE - 2.0.7.RELEASE - 5.0.5.RELEASE - 2.0.4.RELEASE - - - 2.0.7 - 1.5.21 - 2.9.2 - - - 3.6.2 - 3.7.0 - - - - 1.2 - 3.0.0 - 1.3 - 2.2 - 2.0.1.Final - 2.2.6 - - - 1.4.197 - 5.1.46 - 42.2.2 - 2.5.0 - 5.2.17.Final - 6.0.12.Final - - - 4.12 - 2.23.4 - 1.7.4 - 2.0.7 - - - 1.2.3 - 1.7.19 - 1.7.7 - 1.7.25 - - - 2.9.5 - 2.9.8 - 2.9.6 - 20180130 - 2.2.10 - 20180813 - 1.1.1 - - - 3.6.1 - 3.7 - 2.6 - 1.11 - 4.3 - 1.9.2 - 2.2 - 4.5.6 - 19.0 - 1.18.8 - 0.1.54 - 1.4.0 - 7.1.0 - 2.0.0 - 5.5.13 - 2.3.23 - 1.7 - 2.0 - 1.5.2 - 2.1.1 - 1.66 - 63.1 - 1.0.0 - 3.3.3 - 3.1.0 - 4.1.0-incubating - 1.11.368 - 0.2.4 - 2.3.0 - 3.0.1 - 1.9.12 - 0.6.0 - 2.0.0.AM2 - 1.8.12 - 1.4.2 - 1.4.2 - 1.2.1-SNAPSHOT - 1.2.1-SNAPSHOT - 1.2.1-SNAPSHOT - 0.8.5 - 1.5.10 - - kernel-otpmanager-service - Mosip commons project - https://github.com/mosip/commons - - - - io.mosip.kernel - kernel-core - ${kernel.core.version} - - - - org.springframework.boot - spring-boot-starter-security - ${spring.boot.version} - - - org.springframework.security - spring-security-test - ${spring.security.test.version} - - - io.mosip.kernel - kernel-dataaccess-hibernate - ${kernel.dataaccess-hibernate.version} - - - org.postgresql - postgresql - ${postgresql.version} - - - io.mosip.kernel - kernel-logger-logback - ${kernel.logger.version} - - - org.springdoc - springdoc-openapi-ui - ${springdoc.version} - - - - org.springframework.boot - spring-boot-configuration-processor - true - ${spring.boot.version} - - - com.googlecode.json-simple - json-simple - 1.1.1 - - - junit - junit - - - - - - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring.boot.version} - - true - ZIP - - - - - build-info - repackage - - - - - - maven-deploy-plugin - 2.8.1 - - - default-deploy - deploy - - deploy - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true - - - default-deploy - deploy - - deploy - - - - - ossrh - https://oss.sonatype.org/ - false - - - - - org.apache.maven.plugins - maven-source-plugin - true - 2.2.1 - - - attach-sources - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - - attach-javadocs - - jar - - - - - none - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.5 - - - sign-artifacts - verify - - sign - - - - --pinentry-mode - loopback - - - - - - - pl.project13.maven - git-commit-id-plugin - 3.0.1 - - - get-the-git-infos - - revision - - validate - - - - true - ${project.build.outputDirectory}/git.properties - - ^git.build.(time|version)$ - ^git.commit.id.(abbrev|full)$ - - full - ${project.basedir}/.git - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.0 - - false - false - - ${argLine} --add-opens - java.xml/jdk.xml.internal=ALL-UNNAMED - --illegal-access=permit - - - - - org.jacoco - jacoco-maven-plugin - ${jacoco.maven.plugin.version} - - - - prepare-agent - - - - report - prepare-package - - report - - - - - - - - scm:git:git://github.com/mosip/commons.git - scm:git:ssh://github.com:mosip/commons.git - https://github.com/mosip/commons - HEAD - - - - MPL 2.0 - https://www.mozilla.org/en-US/MPL/2.0/ - - - - - Mosip - mosip.emailnotifier@gmail.com - io.mosip - https://github.com/mosip/commons - - - - - openapi-doc-generate-profile - - - io.mosip.kernel - kernel-auth-adapter - - v1.2.0.1-B2 - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring.boot.version} - - true - ZIP - - - - pre-integration-test - - start - - - - src/test/resources - - - openapi-profile - - - --server.port=8090 - --server.servlet.path=/app/generic - - - - - - post-integration-test - - stop - - - - - build-info - repackage - - - - - - org.springdoc - springdoc-openapi-maven-plugin - 0.2 - - - integration-test - - generate - - - - - http://localhost:8090/app/generic/v3/api-docs - ${name}-openapi.json - ${project.build.directory} - false - - - - - - - diff --git a/kernel/kernel-otpmanager-service/src/main/java/META-INF/MANIFEST.MF b/kernel/kernel-otpmanager-service/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e1c07..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/OtpmanagerBootApplication.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/OtpmanagerBootApplication.java deleted file mode 100644 index 738ebd240ec..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/OtpmanagerBootApplication.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.mosip.kernel.otpmanager; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * OTP Manager Application - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@SpringBootApplication(scanBasePackages = { "io.mosip.kernel.otpmanager.*", "${mosip.auth.adapter.impl.basepackage}", - "io.mosip.kernel.core.logger.config" }) -public class OtpmanagerBootApplication { - - /** - * Main method to run spring boot application - * - * @param args the argument - */ - public static void main(String[] args) { - SpringApplication.run(OtpmanagerBootApplication.class, args); - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/Config.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/Config.java deleted file mode 100644 index 94cb89157f8..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/Config.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.mosip.kernel.otpmanager.config; - -import javax.servlet.Filter; - -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Configuration class for RequestResponseFilter Bean. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@Configuration -public class Config { - /** - * Bean to register RequestResponse Filter. - * - * @return reqResFilter. - */ - @Bean - public FilterRegistrationBean registerReqResFilter() { - FilterRegistrationBean reqResFilter = new FilterRegistrationBean<>(); - reqResFilter.setFilter(getReqResFilter()); - reqResFilter.setOrder(1); - return reqResFilter; - } - - /** - * Bean for RequestResponseFilter. - * - * @return reqResFilter object. - */ - @Bean - public Filter getReqResFilter() { - return new ReqResFilter(); - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/LoggerConfiguration.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/LoggerConfiguration.java deleted file mode 100644 index 397190f0ae3..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/LoggerConfiguration.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.mosip.kernel.otpmanager.config; - -import io.mosip.kernel.core.logger.spi.Logger; -import io.mosip.kernel.logger.logback.appender.ConsoleAppender; -import io.mosip.kernel.logger.logback.factory.Logfactory; - -/** - * Console Logger Configuration. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -public class LoggerConfiguration { - /** - * Private Constructor to prevent instantiation. - */ - private LoggerConfiguration() { - } - - /** - * This method sets the logger target, and returns appender. - * - * @param clazz the class. - * @return the appender. - */ - public static Logger logConfig(Class clazz) { - return Logfactory.getSlf4jLogger(clazz); - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/OpenApiProperties.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/OpenApiProperties.java deleted file mode 100644 index 46de40cf760..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/OpenApiProperties.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.mosip.kernel.otpmanager.config; -import java.util.List; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -import lombok.Data; - -@Configuration -@ConfigurationProperties(prefix = "openapi") -@Data -public class OpenApiProperties { - private InfoProperty info; - private Service service; -} - -@Data -class InfoProperty { - private String title; - private String description; - private String version; - private LicenseProperty license; -} - -@Data -class LicenseProperty { - private String name; - private String url; -} - -@Data -class Service { - private List servers; -} - -@Data -class Server { - private String description; - private String url; -} \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/ReqResFilter.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/ReqResFilter.java deleted file mode 100644 index 3cf15b27b46..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/ReqResFilter.java +++ /dev/null @@ -1,78 +0,0 @@ -package io.mosip.kernel.otpmanager.config; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.web.util.ContentCachingRequestWrapper; -import org.springframework.web.util.ContentCachingResponseWrapper; - -import io.mosip.kernel.core.logger.spi.Logger; - -/** - * Request Response Filter class that implements {@link Filter}. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -public class ReqResFilter implements Filter { - - private static final Logger mosipLogger = LoggerConfiguration.logConfig(ReqResFilter.class); - - /* - * (non-Javadoc) - * - * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) - */ - @Override - public void init(FilterConfig filterConfig) throws ServletException { - // over-ridden method - } - - /* - * (non-Javadoc) - * - * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, - * javax.servlet.ServletResponse, javax.servlet.FilterChain) - */ - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - ContentCachingRequestWrapper requestWrapper = null; - ContentCachingResponseWrapper responseWrapper = null; - try { - // Default processing for url ends with .stream - if (httpServletRequest.getRequestURI().endsWith(".stream")) { - chain.doFilter(request, response); - return; - } - requestWrapper = new ContentCachingRequestWrapper(httpServletRequest); - responseWrapper = new ContentCachingResponseWrapper(httpServletResponse); - chain.doFilter(requestWrapper, responseWrapper); - responseWrapper.copyBodyToResponse(); - - } catch (Exception e) { - mosipLogger.error("", "", "", e.getMessage()); - } - } - - /* - * (non-Javadoc) - * - * @see javax.servlet.Filter#destroy() - */ - @Override - public void destroy() { - // over-ridden method - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/ResponseBodyAdviceConfig.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/ResponseBodyAdviceConfig.java deleted file mode 100644 index 7d8f5152629..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/ResponseBodyAdviceConfig.java +++ /dev/null @@ -1,101 +0,0 @@ -package io.mosip.kernel.otpmanager.config; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; - -import io.mosip.kernel.core.exception.ExceptionUtils; -import io.mosip.kernel.core.logger.spi.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.MethodParameter; -import org.springframework.http.MediaType; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.http.server.ServerHttpRequest; -import org.springframework.http.server.ServerHttpResponse; -import org.springframework.http.server.ServletServerHttpRequest; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; -import org.springframework.web.util.ContentCachingRequestWrapper; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; - -import io.mosip.kernel.core.http.RequestWrapper; -import io.mosip.kernel.core.http.ResponseFilter; -import io.mosip.kernel.core.http.ResponseWrapper; -import io.mosip.kernel.core.util.EmptyCheckUtils; - -/** - * Configuration class to wrap the service response in {@link ResponseWrapper} - * and set the request attributes. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@RestControllerAdvice -public class ResponseBodyAdviceConfig implements ResponseBodyAdvice> { - - private static final Logger mosipLogger = LoggerConfiguration.logConfig(ResponseBodyAdviceConfig.class); - - /** - * Autowired reference for {@link ObjectMapper}. - */ - @Autowired - private ObjectMapper objectMapper; - - /* - * (non-Javadoc) - * - * @see - * org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice# - * supports(org.springframework.core.MethodParameter, java.lang.Class) - */ - @Override - public boolean supports(MethodParameter returnType, Class> converterType) { - return returnType.hasMethodAnnotation(ResponseFilter.class); - } - - /* - * (non-Javadoc) - * - * @see - * org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice# - * beforeBodyWrite(java.lang.Object, org.springframework.core.MethodParameter, - * org.springframework.http.MediaType, java.lang.Class, - * org.springframework.http.server.ServerHttpRequest, - * org.springframework.http.server.ServerHttpResponse) - */ - @Override - public ResponseWrapper beforeBodyWrite(ResponseWrapper body, MethodParameter returnType, - MediaType selectedContentType, Class> selectedConverterType, - ServerHttpRequest request, ServerHttpResponse response) { - RequestWrapper requestWrapper = null; - - String requestBody = null; - try { - HttpServletRequest httpServletRequest = ((ServletServerHttpRequest) request).getServletRequest(); - - if (httpServletRequest instanceof ContentCachingRequestWrapper) { - requestBody = new String(((ContentCachingRequestWrapper) httpServletRequest).getContentAsByteArray()); - } else if (httpServletRequest instanceof HttpServletRequestWrapper - && ((HttpServletRequestWrapper) httpServletRequest) - .getRequest() instanceof ContentCachingRequestWrapper) { - requestBody = new String( - ((ContentCachingRequestWrapper) ((HttpServletRequestWrapper) httpServletRequest).getRequest()) - .getContentAsByteArray()); - } - objectMapper.registerModule(new JavaTimeModule()); - if (!EmptyCheckUtils.isNullEmpty(requestBody)) { - requestWrapper = objectMapper.readValue(requestBody, RequestWrapper.class); - body.setId(requestWrapper.getId()); - body.setVersion(requestWrapper.getVersion()); - } - body.setErrors(null); - return body; - } catch (Exception e) { - mosipLogger.error("", "", "", ExceptionUtils.getStackTrace(e)); - } - return body; - } - -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/SwaggerConfig.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/SwaggerConfig.java deleted file mode 100644 index 1e84cdb3c7f..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/config/SwaggerConfig.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.mosip.kernel.otpmanager.config; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashSet; -import java.util.Set; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import io.swagger.v3.oas.models.Components; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.info.Info; -import io.swagger.v3.oas.models.info.License; -import io.swagger.v3.oas.models.servers.Server; -/** - * Configuration class for swagger config - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -@Configuration -public class SwaggerConfig { - - @Autowired - private OpenApiProperties openApiProperties; - - @Bean - public OpenAPI openApi() { - OpenAPI api = new OpenAPI().components(new Components()) - .info(new Info().title(openApiProperties.getInfo().getTitle()) - .version(openApiProperties.getInfo().getVersion()) - .description(openApiProperties.getInfo().getDescription()) - .license(new License().name(openApiProperties.getInfo().getLicense().getName()) - .url(openApiProperties.getInfo().getLicense().getUrl()))); - - openApiProperties.getService().getServers().forEach(server -> { - api.addServersItem(new Server().description(server.getDescription()).url(server.getUrl())); - }); - return api; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java deleted file mode 100644 index 5c597f115fb..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java +++ /dev/null @@ -1,58 +0,0 @@ - -package io.mosip.kernel.otpmanager.constant; - -/** - * This ENUM provides all the constant identified for OTP errors. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @version 1.0.0 - * - */ -public enum OtpErrorConstants { - OTP_GEN_ILLEGAL_KEY_INPUT("KER-OTG-001", "Key length should be in the range of 3-64."), - OTP_VAL_INVALID_KEY_INPUT("KER-OTV-001", "Key can't be empty or null."), - OTP_VAL_ILLEGAL_KEY_INPUT("KER-OTV-002", "Length of key should be in the range of 3-64."), - OTP_VAL_INVALID_OTP_INPUT("KER-OTV-003", "OTP can't be empty or null."), - OTP_VAL_ILLEGAL_OTP_INPUT("KER-OTV-004", - "OTP consists of only numeric characters. No other characters is allowed."), - OTP_VAL_KEY_NOT_FOUND("KER-OTV-005", "Validation can't be performed against this key. Generate OTP first."), - INTERNAL_SERVER_ERROR("KER-OTV-500", "Internal server error"), - HTTP_MESSAGE_NOT_READABLE("KER-OTV-999", "HTTP Message Not Readable Exception"), - OTP_GEN_CRYPTO_FAILURE("KER-OTG-002", "Crypto failure"), - OTP_GEN_ALGO_FAILURE("KER-OTG-003", "Invalid key or algorithm found"), - OTP_GEN_IO_FAILURE("KER-OTG-004", "IO exception found"); - - /** - * The error code. - */ - private final String errorCode; - - /** - * The error message. - */ - private final String errorMessage; - - /** - * @param errorCode The error code to be set. - * @param errorMessage The error message to be set. - */ - private OtpErrorConstants(String errorCode, String errorMessage) { - this.errorCode = errorCode; - this.errorMessage = errorMessage; - } - - /** - * @return The error code. - */ - public String getErrorCode() { - return errorCode; - } - - /** - * @return The error message. - */ - public String getErrorMessage() { - return errorMessage; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java deleted file mode 100644 index 8b10078a826..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.mosip.kernel.otpmanager.constant; - -/** - * This ENUM provides all the constants for OTP status attributes. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @version 1.0.0 - * - */ -public enum OtpStatusConstants { - UNUSED_OTP("OTP_UNUSED"), KEY_FREEZED("KEY_FREEZED"), BLOCKED_USER("USER_BLOCKED"), - GENERATION_SUCCESSFUL("GENERATION_SUCCESSFUL"), SET_AS_NULL_IN_STRING("null"), SUCCESS_STATUS("success"), - SUCCESS_MESSAGE("VALIDATION_SUCCESSFUL"), FAILURE_STATUS("failure"), FAILURE_MESSAGE("VALIDATION_UNSUCCESSFUL"), - FAILURE_AND_FREEZED_MESSAGE("USER_BLOCKED"), OTP_EXPIRED_STATUS("OTP_EXPIRED"), ADD_SPACE(" "); - - /** - * The property. - */ - private final String property; - - /** - * Setter for property. - * - * @param property The property to be set. - */ - private OtpStatusConstants(String property) { - this.property = property; - } - - /** - * Getter for property. - * - * @return The property. - */ - public String getProperty() { - return property; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java deleted file mode 100644 index caf596d7969..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.mosip.kernel.otpmanager.constant; - -/** - * This ENUM provides all the constants required for SQL query operations. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @version 1.0.0 - * - */ -public enum SqlQueryConstants { - UPDATE("UPDATE"), ID("id"), NEW_OTP_STATUS("newOtpStatus"), NEW_NUM_OF_ATTEMPT("newNumOfAttempt"), - NEW_VALIDATION_TIME("newValidationTime"); - - /** - * The property. - * - */ - private final String property; - - /** - * Constructor for SqlQueryConstants class. - * - * @param property The property to be set. - * - */ - private SqlQueryConstants(String property) { - this.property = property; - } - - /** - * Getter for property. - * - * @return The property. - * - */ - public String getProperty() { - return property; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/controller/OtpGeneratorController.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/controller/OtpGeneratorController.java deleted file mode 100644 index 9a28a92f15b..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/controller/OtpGeneratorController.java +++ /dev/null @@ -1,62 +0,0 @@ -package io.mosip.kernel.otpmanager.controller; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import io.mosip.kernel.core.http.RequestWrapper; -import io.mosip.kernel.core.http.ResponseFilter; -import io.mosip.kernel.core.http.ResponseWrapper; -import io.mosip.kernel.core.otpmanager.spi.OtpGenerator; -import io.mosip.kernel.otpmanager.dto.GenerationDTOValidationLevels; -import io.mosip.kernel.otpmanager.dto.OtpGeneratorRequestDto; -import io.mosip.kernel.otpmanager.dto.OtpGeneratorResponseDto; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import io.swagger.v3.oas.annotations.tags.Tag; - -/** - * This class provides controller methods for OTP generation. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -@RestController -@Tag(name = "otpgenerator", description = "Operation related to Otp generation") -public class OtpGeneratorController { - /** - * Autowired reference of {@link OtpGenerator}. - */ - @Autowired - OtpGenerator otpGeneratorService; - - /** - * This method handles the OTP generation. - * - * @param otpDto The request DTO for OTP generation. - * @return The generated OTP as DTO response. - */ - @ResponseFilter - @Operation(summary = "This endpoint handles the OTP generation", description = "This endpoint handles the OTP generation", tags = { "otpgenerator" }) - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "Success or you may find errors in error array in response"), - @ApiResponse(responseCode = "401", description = "Unauthorized" ,content = @Content(schema = @Schema(hidden = true))), - @ApiResponse(responseCode = "403", description = "Forbidden" ,content = @Content(schema = @Schema(hidden = true))), - @ApiResponse(responseCode = "404", description = "Not Found" ,content = @Content(schema = @Schema(hidden = true)))}) - @PreAuthorize("hasAnyRole(@authorizedRoles.getPostotpgenerate())") - @PostMapping(value = "/otp/generate") - public ResponseWrapper generateOtp(@Validated({ - GenerationDTOValidationLevels.ValidationLevel.class }) @RequestBody RequestWrapper otpDto) { - ResponseWrapper responseWrapper = new ResponseWrapper<>(); - responseWrapper.setResponse(otpGeneratorService.getOtp(otpDto.getRequest())); - return responseWrapper; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/controller/OtpValidatorController.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/controller/OtpValidatorController.java deleted file mode 100644 index 5dd62cfa108..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/controller/OtpValidatorController.java +++ /dev/null @@ -1,58 +0,0 @@ -package io.mosip.kernel.otpmanager.controller; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import io.mosip.kernel.core.http.ResponseFilter; -import io.mosip.kernel.core.http.ResponseWrapper; -import io.mosip.kernel.core.otpmanager.spi.OtpValidator; -import io.mosip.kernel.otpmanager.dto.OtpValidatorResponseDto; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import io.swagger.v3.oas.annotations.tags.Tag; - -/** - * This class provides controller methods for OTP validation. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@RestController -@Tag(name = "otpvalidator", description = "Operation related to Otp validation") -public class OtpValidatorController { - /** - * Autowired reference for {@link OtpValidator}. - */ - @Autowired - OtpValidator> otpValidatorService; - - /** - * This method validates the OTP against a key. - * - * @param key the key against which the OTP needs to be validated. - * @param otp the OTP to be validated. - * @return the validation status as DTO response. - */ - @ResponseFilter - @Operation(summary = "This endpoint validates the OTP against a key", description = "This endpoint validates the OTP against a key", tags = { "otpvalidator" }) - @ApiResponses(value = { - @ApiResponse(responseCode = "200", description = "Success or you may find errors in error array in response"), - @ApiResponse(responseCode = "401", description = "Unauthorized" ,content = @Content(schema = @Schema(hidden = true))), - @ApiResponse(responseCode = "403", description = "Forbidden" ,content = @Content(schema = @Schema(hidden = true))), - @ApiResponse(responseCode = "404", description = "Not Found" ,content = @Content(schema = @Schema(hidden = true)))}) - @PreAuthorize("hasAnyRole(@authorizedRoles.getGetotpvalidate())") - @GetMapping(value = "/otp/validate") - public ResponseWrapper validateOtp(@RequestParam String key, @RequestParam String otp) { - ResponseWrapper responseWrapper = new ResponseWrapper<>(); - responseWrapper.setResponse(otpValidatorService.validateOtp(key, otp).getBody()); - return responseWrapper; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java deleted file mode 100644 index 2e625886d1a..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.mosip.kernel.otpmanager.dto; - -import java.util.List; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import lombok.Getter; -import lombok.Setter; - - -@Component("authorizedRoles") -@ConfigurationProperties(prefix = "mosip.role.kernel") -@Getter -@Setter -public class AuthorizedRolesDto { - -//OtpGeneratorController - - private Listpostotpgenerate; - -// OtpValidatorController - - private Listgetotpvalidate; - -} \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java deleted file mode 100644 index 439b4dec03d..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.mosip.kernel.otpmanager.dto; - -import javax.validation.GroupSequence; - -/** - * This class contains group sequence levels for validation of key. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @since 1.0.0 - */ -public class GenerationDTOValidationLevels { - @GroupSequence({ NullEmptyValidationLevel.class, InvalidLengthValidationLevel.class }) - public interface ValidationLevel { - - } - - public interface NullEmptyValidationLevel { - } - - public interface InvalidLengthValidationLevel { - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java deleted file mode 100644 index 0055cde452f..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.mosip.kernel.otpmanager.dto; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; - -import io.mosip.kernel.otpmanager.dto.GenerationDTOValidationLevels.InvalidLengthValidationLevel; -import io.mosip.kernel.otpmanager.dto.GenerationDTOValidationLevels.NullEmptyValidationLevel; -import lombok.Data; - -/** - * The DTO class for OTP Generation request. - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@Data -public class OtpGeneratorRequestDto { - /** - * The key against which OTP needs to be generated. - */ - @NotBlank(message = "Key can't be empty or null", groups = NullEmptyValidationLevel.class) - @Size(min = 3, max = 64, message = "length should be in the range of 3-64", groups = InvalidLengthValidationLevel.class) - private String key; - - /** - * Getter for key. - * - * @return the key. - */ - public String getKey() { - return key; - } - - /** - * Setter for key. - * - * @param key the key. - */ - public void setKey(String key) { - if (key != null) { - this.key = key.trim(); - } else { - this.key = key; - } - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java deleted file mode 100644 index ee1964c225e..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.mosip.kernel.otpmanager.dto; - -import lombok.Data; - -/** - * The DTO class for OTP Generation response. - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@Data -public class OtpGeneratorResponseDto { - /** - * The generated OTP. - */ - private String otp; - /** - * The status of the corresponding generation request. - */ - private String status; -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java deleted file mode 100644 index 48186dbac04..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.mosip.kernel.otpmanager.dto; - -import lombok.Data; - -/** - * The DTO class for OTP Validation response. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@Data -public class OtpValidatorResponseDto { - /** - * The validation request status. - */ - private String status; - /** - * The validation request message. - */ - private String message; -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java deleted file mode 100644 index 08fb624c8f2..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java +++ /dev/null @@ -1,99 +0,0 @@ -package io.mosip.kernel.otpmanager.entity; - -import java.time.LocalDateTime; -import java.time.ZoneId; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -import io.mosip.kernel.otpmanager.constant.OtpStatusConstants; -import lombok.Data; - -/** - * The entity class for OTP. - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@Entity -@Data -@Table(name = "otp_transaction", schema = "kernel") -public class OtpEntity { - /** - * The variable that holds the unique ID. - */ - @Id - @Column(name = "id") - private String id; - - /** - * The variable that holds the time at which the OTP validation was last - * attempted. The default value is the generation time. - */ - @Column(name = "upd_dtimes") - private LocalDateTime updatedDtimes; - - /** - * The variable that holds the generated OTP. - */ - @Column(name = "otp", length = 8) - private String otp; - - /** - * The variable that holds the number of validation attempts. - */ - @Column(name = "validation_retry_count") - private int validationRetryCount; - - /** - * The variable that holds the time at which the OTP was generated. - */ - @Column(name = "generated_dtimes") - private LocalDateTime generatedDtimes; - - /** - * The variable that holds the status of the OTP. - */ - @Column(name = "status_code") - private String statusCode; - - @Column(name = "ref_id") - private String refId; - - @Column(name = "ref_id_type") - private String refIdType; - - @Column(name = "expiry_dtimes") - private LocalDateTime expiryDTimes; - - @Column(name = "lang_code", length = 3) - private String langCode; - - @Column(name = "cr_by", length = 256) - private String createdBy; - - @Column(name = "upd_by", length = 256) - private String updatedBy; - - @Column(name = "cr_dtimes") - private LocalDateTime crDtimes; - - @Column(name = "del_dtimes") - private LocalDateTime delDtimes; - - @Column(name = "is_deleted") - private boolean isDeleted; - - /** - * The default constructor for OtpEntity. - */ - public OtpEntity() { - generatedDtimes = LocalDateTime.now(ZoneId.of("UTC")); - updatedDtimes = generatedDtimes; - statusCode = OtpStatusConstants.UNUSED_OTP.getProperty(); - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java deleted file mode 100644 index 9c4373ae1a6..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import io.mosip.kernel.core.exception.BaseUncheckedException; - -/** - * Class to handle exceptions for CRYPTO failure. - * - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -public class CryptoFailureException extends BaseUncheckedException { - - /** - * Serializable version ID. - */ - private static final long serialVersionUID = -3069970234745966967L; - - /** - * Constructor for CryptoFailureException class. - * - * @param errorCode the error code. - * @param errorMessage the error message. - * @param rootCause the cause. - */ - public CryptoFailureException(String errorCode, String errorMessage, Throwable rootCause) { - super(errorCode, errorMessage, rootCause); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java deleted file mode 100644 index 0fb61288dce..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java +++ /dev/null @@ -1,140 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import java.io.IOException; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.http.converter.HttpMessageNotReadableException; -import org.springframework.validation.BindingResult; -import org.springframework.validation.FieldError; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.util.ContentCachingRequestWrapper; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; - -import io.mosip.kernel.core.exception.ExceptionUtils; -import io.mosip.kernel.core.exception.ServiceError; -import io.mosip.kernel.core.http.ResponseWrapper; -import io.mosip.kernel.core.util.EmptyCheckUtils; -import io.mosip.kernel.otpmanager.constant.OtpErrorConstants; - -/** - * Central class for handling exceptions. - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - */ -@RestControllerAdvice -public class OtpControllerAdvice { - - @Autowired - private ObjectMapper objectMapper; - - /** - * This method handles MethodArgumentNotValidException. - * - * @param httpServletRequest the request - * @param e The exception - * @return The response entity. - * @throws IOException the IO Exception - */ - @ExceptionHandler(MethodArgumentNotValidException.class) - public ResponseEntity> otpGeneratorValidity( - final HttpServletRequest httpServletRequest, final MethodArgumentNotValidException e) throws IOException { - ResponseWrapper responseWrapper = setErrors(httpServletRequest); - BindingResult bindingResult = e.getBindingResult(); - final List fieldErrors = bindingResult.getFieldErrors(); - fieldErrors.forEach(x -> { - ServiceError error = new ServiceError(OtpErrorConstants.OTP_GEN_ILLEGAL_KEY_INPUT.getErrorCode(), - x.getField() + ": " + x.getDefaultMessage()); - responseWrapper.getErrors().add(error); - }); - return new ResponseEntity<>(responseWrapper, HttpStatus.OK); - } - - /** - * This method handles OtpInvalidArgumentException. - * - * @param httpServletRequest the request - * - * @param exception The exception. - * @return The response entity. - * @throws IOException the IO Exception - */ - @ExceptionHandler(OtpInvalidArgumentException.class) - public ResponseEntity> otpValidationArgumentValidity( - final HttpServletRequest httpServletRequest, final OtpInvalidArgumentException exception) - throws IOException { - ExceptionUtils.logRootCause(exception); - ResponseWrapper errorResponse = setErrors(httpServletRequest); - errorResponse.getErrors().addAll(exception.getList()); - return new ResponseEntity<>(errorResponse, HttpStatus.OK); - } - - /** - * This method handles RequiredKeyNotFoundException. - * - * @param httpServletRequest the request - * - * @param exception The exception. - * @return The response entity. - * @throws IOException the IO Exception - */ - @ExceptionHandler(RequiredKeyNotFoundException.class) - public ResponseEntity> otpValidationKeyNullValidity( - final HttpServletRequest httpServletRequest, final RequiredKeyNotFoundException exception) - throws IOException { - ExceptionUtils.logRootCause(exception); - ResponseWrapper errorResponse = setErrors(httpServletRequest); - errorResponse.getErrors().addAll(exception.getList()); - return new ResponseEntity<>(errorResponse, HttpStatus.OK); - } - - @ExceptionHandler(HttpMessageNotReadableException.class) - public ResponseEntity> onHttpMessageNotReadable( - final HttpMessageNotReadableException e) { - ResponseWrapper responseWrapper = new ResponseWrapper<>(); - ServiceError error = new ServiceError(OtpErrorConstants.HTTP_MESSAGE_NOT_READABLE.getErrorCode(), - e.getMessage()); - responseWrapper.getErrors().add(error); - return new ResponseEntity<>(responseWrapper, HttpStatus.OK); - } - - @ExceptionHandler(value = { Exception.class, RuntimeException.class }) - public ResponseEntity> defaultErrorHandler(HttpServletRequest httpServletRequest, - Exception e) throws IOException { - ResponseWrapper responseWrapper = setErrors(httpServletRequest); - ServiceError error = new ServiceError(OtpErrorConstants.INTERNAL_SERVER_ERROR.getErrorCode(), e.getMessage()); - responseWrapper.getErrors().add(error); - ExceptionUtils.logRootCause(e); - return new ResponseEntity<>(responseWrapper, HttpStatus.INTERNAL_SERVER_ERROR); - } - - private ResponseWrapper setErrors(HttpServletRequest httpServletRequest) throws IOException { - ResponseWrapper responseWrapper = new ResponseWrapper<>(); - responseWrapper.setResponsetime(LocalDateTime.now(ZoneId.of("UTC"))); - String requestBody = null; - if (httpServletRequest instanceof ContentCachingRequestWrapper) { - requestBody = new String(((ContentCachingRequestWrapper) httpServletRequest).getContentAsByteArray()); - } - if (EmptyCheckUtils.isNullEmpty(requestBody)) { - return responseWrapper; - } - objectMapper.registerModule(new JavaTimeModule()); - JsonNode reqNode = objectMapper.readTree(requestBody); - responseWrapper.setId(reqNode.path("id").asText()); - responseWrapper.setVersion(reqNode.path("version").asText()); - return responseWrapper; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java deleted file mode 100644 index 8953ad76b7f..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import io.mosip.kernel.core.exception.BaseUncheckedException; - -/** - * Exception class for Otp IO exception. - * - * @author Ritesh Sinha - * @since 1.0.0 - */ -public class OtpIOException extends BaseUncheckedException { - - /** - * - */ - private static final long serialVersionUID = -8462152397501555128L; - - /** - * Constructor for OtpIOException. - * - * @param errorCode the error code. - * @param errorMessage the error message. - * @param rootCause the root cause. - */ - public OtpIOException(String errorCode, String errorMessage, Throwable rootCause) { - super(errorCode, errorMessage, rootCause); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java deleted file mode 100644 index a095dc9d4b0..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import java.util.List; - -import io.mosip.kernel.core.exception.BaseUncheckedException; -import io.mosip.kernel.core.exception.ServiceError; - -/** - * Class to handle exceptions for invalid OTP validation inputs. - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -public class OtpInvalidArgumentException extends BaseUncheckedException { - /** - * Serializable version ID. - */ - private static final long serialVersionUID = 8152409863253682472L; - - /** - * This variable holds the MosipErrors list. - */ - private final List list; - - /** - * @param list The error list. - */ - public OtpInvalidArgumentException(List list) { - this.list = list; - } - - /** - * Getter for error list. - * - * @return The error list. - */ - public List getList() { - return list; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java deleted file mode 100644 index d647bf18c52..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import io.mosip.kernel.core.exception.BaseUncheckedException; - -public class OtpServiceException extends BaseUncheckedException { - - /** - * - */ - private static final long serialVersionUID = 6963954493840799987L; - - public OtpServiceException(String errorCode, String errorMessage, Throwable rootCause) { - super(errorCode, errorMessage, rootCause); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java deleted file mode 100644 index ef3187cac2c..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import java.util.List; - -import io.mosip.kernel.core.exception.BaseUncheckedException; -import io.mosip.kernel.core.exception.ServiceError; - -/** - * Class to handle exception when entity response is not found a particular key. - * - * @author Ritesh Sinha - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -public class RequiredKeyNotFoundException extends BaseUncheckedException { - /** - * Generated serial version UID. - */ - private static final long serialVersionUID = 8659572631028669116L; - - /** - * This variable holds the MosipErrors list. - */ - private final List list; - - /** - * Constructor for MosipRequiredKeyNotFoundExceptionHandler class. - * - * @param list The error list. - */ - public RequiredKeyNotFoundException(List list) { - this.list = list; - } - - /** - * Getter for error list. - * - * @return The error list. - */ - public List getList() { - return list; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java deleted file mode 100644 index e0c74ab888e..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.mosip.kernel.otpmanager.exception; - -import io.mosip.kernel.core.exception.BaseUncheckedException; - -/** - * Exception class when the resource required is not found. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @version 1.0.0 - * - */ -public class ResourceNotFoundException extends BaseUncheckedException { - - /** - * Generated ID. - */ - private static final long serialVersionUID = -6525741819333966907L; - - /** - * Constructor for MosipNullArgumentException class. - * - * @param errorCode the error code - * @param errorMessage the error message - */ - public ResourceNotFoundException(String errorCode, String errorMessage) { - super(errorCode, errorMessage); - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java deleted file mode 100644 index d1cffb5d7ed..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.mosip.kernel.otpmanager.repository; - -import org.springframework.stereotype.Repository; - -import io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository; -import io.mosip.kernel.otpmanager.entity.OtpEntity; - -/** - * This interface extends BaseRepository which provides with the methods for - * several CRUD operations. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -@Repository -public interface OtpRepository extends BaseRepository { -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java deleted file mode 100644 index a5f9798a137..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -package io.mosip.kernel.otpmanager.service.impl; - -import java.time.LocalDateTime; -import java.time.ZoneId; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.stereotype.Service; - -import io.mosip.kernel.core.otpmanager.spi.OtpGenerator; -import io.mosip.kernel.otpmanager.constant.OtpStatusConstants; -import io.mosip.kernel.otpmanager.dto.OtpGeneratorRequestDto; -import io.mosip.kernel.otpmanager.dto.OtpGeneratorResponseDto; -import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.util.OtpManagerUtils; -import io.mosip.kernel.otpmanager.util.OtpProvider; - -/** - * This class provides the implementation for the methods of OtpGeneratorService - * interface. - * - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -@RefreshScope -@Service -public class OtpGeneratorServiceImpl implements OtpGenerator { - /** - * The reference that autowires OtpRepository class. - */ - private static final Logger LOGGER = LoggerFactory.getLogger(OtpGeneratorServiceImpl.class); - @Autowired - private OtpRepository otpRepository; - - @Autowired - private OtpProvider otpProvider; - - @Value("${mosip.kernel.otp.key-freeze-time}") - String keyFreezeTime; - - @Value("${mosip.kernel.otp.default-length}") - int otpLength; - - @Value("${mosip.kernel.otp.mac-algorithm}") - String macAlgorithm; - - @Value("${javax.persistence.jdbc.url}") - String jdbcUrl; - - - /* - * (non-Javadoc) - * - * @see - * io.mosip.kernel.otpmanagerservice.service.OtpGeneratorService#getOtp(org. - * mosip.kernel.otpmanagerservice.dto.OtpGeneratorRequestDto) - */ - @Override - public OtpGeneratorResponseDto getOtp(OtpGeneratorRequestDto otpDto) { - - String generatedOtp; - - /* - * Creating object to return the generation response. - */ - OtpGeneratorResponseDto response = new OtpGeneratorResponseDto(); - /* - * Checking whether the key exists in the repository. - */ - OtpEntity keyCheck = otpRepository.findById(OtpEntity.class, otpDto.getKey()); - if ((keyCheck != null) && (keyCheck.getStatusCode().equals(OtpStatusConstants.KEY_FREEZED.getProperty())) - && (OtpManagerUtils.timeDifferenceInSeconds(keyCheck.getUpdatedDtimes(), - LocalDateTime.now(ZoneId.of("UTC"))) <= Integer.parseInt(keyFreezeTime))) { - response.setOtp(OtpStatusConstants.SET_AS_NULL_IN_STRING.getProperty()); - response.setStatus(OtpStatusConstants.BLOCKED_USER.getProperty()); - } else { - generatedOtp = otpProvider.computeOtp(otpDto.getKey(), otpLength, macAlgorithm); - - OtpEntity otp = new OtpEntity(); - otp.setId(otpDto.getKey()); - otp.setValidationRetryCount(0); - otp.setOtp(generatedOtp); - otpRepository.save(otp); - response.setOtp(generatedOtp); - response.setStatus(OtpStatusConstants.GENERATION_SUCCESSFUL.getProperty()); - } - return response; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java deleted file mode 100644 index c78503085c5..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java +++ /dev/null @@ -1,259 +0,0 @@ -package io.mosip.kernel.otpmanager.service.impl; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; - -import io.mosip.kernel.core.exception.ServiceError; -import io.mosip.kernel.core.otpmanager.spi.OtpValidator; -import io.mosip.kernel.otpmanager.constant.OtpErrorConstants; -import io.mosip.kernel.otpmanager.constant.OtpStatusConstants; -import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; -import io.mosip.kernel.otpmanager.dto.OtpValidatorResponseDto; -import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.exception.RequiredKeyNotFoundException; -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.util.OtpManagerUtils; - -/** - * This class provides the implementation for the methods of OtpValidatorService - * interface. - * - * @author Sagar Mahapatra - * @since 1.0.0 - * - */ -@RefreshScope -@Service -public class OtpValidatorServiceImpl implements OtpValidator> { - /** - * The reference that autowires OtpRepository. - */ - @Autowired - OtpRepository otpRepository; - - /** - * The reference that autowires OtpManagerUtils. - */ - @Autowired - OtpManagerUtils otpUtils; - - @Value("${mosip.kernel.otp.validation-attempt-threshold}") - String numberOfValidationAttemptsAllowed; - - @Value("${mosip.kernel.otp.key-freeze-time}") - String keyFreezeDuration; - - @Value("${mosip.kernel.otp.expiry-time}") - String otpExpiryLimit; - - @Value("${spring.profiles.active}") - String activeProfile; - - @Value("${local.env.otp:111111}") - String localOtp; - - @Value("${mosip.kernel.auth.proxy-otp}") - private boolean proxyOtp; - /* - * (non-Javadoc) - * - * @see - * io.mosip.kernel.otpmanager.service.OtpValidatorService#validateOtp(java.lang. - * String, java.lang.String) - */ - @Override - public ResponseEntity validateOtp(String key, String otp) { - ResponseEntity validationResponseEntity; - if(activeProfile.equalsIgnoreCase("local")) { - return proxyForLocalProfile(otp); - } - // This method validates the input parameters. - otpUtils.validateOtpRequestArguments(key, otp); - OtpValidatorResponseDto responseDto; - - // The OTP entity for a specific key. - OtpEntity otpResponse = otpRepository.findById(OtpEntity.class, key); - responseDto = new OtpValidatorResponseDto(); - responseDto.setMessage(OtpStatusConstants.FAILURE_MESSAGE.getProperty()); - responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); - validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - - requireKeyNotFound(otpResponse); - // This variable holds the update query to be performed. - String updateString; - // This variable holds the count of number - int attemptCount = otpResponse.getValidationRetryCount(); - if ((OtpManagerUtils.timeDifferenceInSeconds(otpResponse.getGeneratedDtimes(), - OtpManagerUtils.getCurrentLocalDateTime())) > (Integer.parseInt(otpExpiryLimit))) { - - responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); - responseDto.setMessage(OtpStatusConstants.OTP_EXPIRED_STATUS.getProperty()); - return new ResponseEntity<>(responseDto, HttpStatus.OK); - } - // This condition increases the validation attempt count. - if ((attemptCount < Integer.parseInt(numberOfValidationAttemptsAllowed)) - && (otpResponse.getStatusCode().equals(OtpStatusConstants.UNUSED_OTP.getProperty()))) { - updateString = SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() - + " SET validation_retry_count = :newNumOfAttempt," - + "upd_dtimes = :newValidationTime WHERE id=:id"; - HashMap updateMap = createUpdateMap(key, null, attemptCount + 1, - LocalDateTime.now(ZoneId.of("UTC"))); - updateData(updateString, updateMap); - } - /* - * This condition freezes the key for a certain time, if the validation attempt - * reaches the maximum allowed limit. - */ - if ((attemptCount == Integer.parseInt(numberOfValidationAttemptsAllowed) - 1) - && (!otp.equals(otpResponse.getOtp()))) { - updateString = SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() - + " SET status_code = :newOtpStatus," + "upd_dtimes = :newValidationTime," - + "validation_retry_count = :newNumOfAttempt WHERE id=:id"; - HashMap updateMap = createUpdateMap(key, OtpStatusConstants.KEY_FREEZED.getProperty(), 0, - OtpManagerUtils.getCurrentLocalDateTime()); - updateData(updateString, updateMap); - responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); - responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); - validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - return validationResponseEntity; - - } - validationResponseEntity = unFreezeKey(key, otp, otpResponse, attemptCount, responseDto, - validationResponseEntity); - /* - * This condition validates the OTP if neither the key is in freezed condition, - * nor the OTP has expired. If the OTP validation is successful the specific - * message is returned as response and the entire record is deleted. If the OTP - * is expired, the specific message is returned as response and the entire - * record is deleted. - */ - if ((otpResponse.getOtp().equals(otp)) - && (otpResponse.getStatusCode().equals(OtpStatusConstants.UNUSED_OTP.getProperty()) - && ((OtpManagerUtils.timeDifferenceInSeconds(otpResponse.getGeneratedDtimes(), - OtpManagerUtils.getCurrentLocalDateTime())) <= (Integer.parseInt(otpExpiryLimit))))) { - responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); - responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); - otpRepository.deleteById(key); - return new ResponseEntity<>(responseDto, HttpStatus.OK); - } - return validationResponseEntity; - } - - private void requireKeyNotFound(OtpEntity otpResponse) { - /* - * Checking whether the key exists in repository or not. If not, throw an - * exception. - */ - if (otpResponse == null) { - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_KEY_NOT_FOUND.getErrorCode(), - OtpErrorConstants.OTP_VAL_KEY_NOT_FOUND.getErrorMessage())); - throw new RequiredKeyNotFoundException(validationErrorsList); - } - } - - private ResponseEntity proxyForLocalProfile(String otp) { - ResponseEntity validationResponseEntity; - OtpValidatorResponseDto responseDto = new OtpValidatorResponseDto(); - // Verify in case of local otp - if (otp.equalsIgnoreCase(localOtp)) { - responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); - responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); - validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - return validationResponseEntity; - } else { - responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); - responseDto.setMessage(OtpStatusConstants.FAILURE_MESSAGE.getProperty()); - validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - return validationResponseEntity; - } - } - - /** - * This method handles the freeze conditions i.e., If the key is freezed, it - * blocks the validation for the assigned freeze period. If the key is freezed - * and has completed the freeze time, it unfreezes the key. - * - * @param key the key. - * @param otp the OTP. - * @param otpResponse the OTP response. - * @param attemptCount the attempt count. - * @param responseDto the response dto. - * @param validationResponseEntity the validation response entity. - * @return the response entity. - */ - private ResponseEntity unFreezeKey(String key, String otp, OtpEntity otpResponse, - int attemptCount, OtpValidatorResponseDto responseDto, - ResponseEntity validationResponseEntity) { - String updateString; - if (otpResponse.getStatusCode().equals(OtpStatusConstants.KEY_FREEZED.getProperty())) { - if ((OtpManagerUtils.timeDifferenceInSeconds(otpResponse.getUpdatedDtimes(), - OtpManagerUtils.getCurrentLocalDateTime())) > (Integer.parseInt(keyFreezeDuration))) { - updateString = SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() - + " SET status_code = :newOtpStatus," + " validation_retry_count = :newNumOfAttempt," - + " upd_dtimes = :newValidationTime WHERE id=:id"; - HashMap updateMap = createUpdateMap(key, OtpStatusConstants.UNUSED_OTP.getProperty(), - Integer.valueOf(attemptCount + 1), OtpManagerUtils.getCurrentLocalDateTime()); - if (otp.equals(otpResponse.getOtp())) { - responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); - responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); - validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - otpRepository.deleteById(key); - } else { - updateData(updateString, updateMap); - } - } else { - responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); - validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - } - } - return validationResponseEntity; - } - - /** - * This method creates the UPDATE map required for UPDATE operations. - * - * @param key the key to be updated. - * @param status the status to be updated. - * @param newNumberOfAttempt the new number of attempt value. - * @param localDateTime the new LocalDateTime. - * @return the map. - */ - private HashMap createUpdateMap(String key, String status, Integer newNumberOfAttempt, - LocalDateTime localDateTime) { - HashMap updateMap = new HashMap<>(); - if (key != null) { - updateMap.put(SqlQueryConstants.ID.getProperty(), key); - } - if (status != null) { - updateMap.put(SqlQueryConstants.NEW_OTP_STATUS.getProperty(), status); - } - if (newNumberOfAttempt != null) { - updateMap.put(SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty(), newNumberOfAttempt); - } - if (localDateTime != null) { - updateMap.put(SqlQueryConstants.NEW_VALIDATION_TIME.getProperty(), localDateTime); - } - return updateMap; - } - - /** - * This method handles UPDATE query operations. - * - * @param updateString the query string. - * @param updateMap the query map. - */ - private void updateData(String updateString, HashMap updateMap) { - otpRepository.createQueryUpdateOrDelete(updateString, updateMap); - } -} \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java deleted file mode 100644 index 8f3b097c82a..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java +++ /dev/null @@ -1,91 +0,0 @@ -package io.mosip.kernel.otpmanager.util; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.List; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.stereotype.Component; - -import io.mosip.kernel.core.exception.ServiceError; -import io.mosip.kernel.core.util.StringUtils; -import io.mosip.kernel.otpmanager.constant.OtpErrorConstants; -import io.mosip.kernel.otpmanager.exception.OtpInvalidArgumentException; - -/** - * This utility class defines some of the utility methods used in OTP - * validation. - * - * @author Sagar Mahapatra - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -@RefreshScope -@Component -public class OtpManagerUtils { - - @Value("${mosip.kernel.otp.min-key-length}") - String keyMinLength; - - @Value("${mosip.kernel.otp.max-key-length}") - String keyMaxLength; - - /** - * This method returns the difference between two LocalDateTime objects in - * seconds. - * - * @param fromDateTime The time from which the difference needs to be - * calculated. - * @param toDateTime The time till which the difference needs to be - * calculated. - * @return The difference in seconds. - */ - public static int timeDifferenceInSeconds(LocalDateTime fromDateTime, LocalDateTime toDateTime) { - return (int) fromDateTime.until(toDateTime, ChronoUnit.SECONDS); - } - - /** - * This method returns the current LocalDateTime. - * - * @return The current local date and time. - */ - public static LocalDateTime getCurrentLocalDateTime() { - return LocalDateTime.now(ZoneId.of("UTC")); - } - - /** - * This method validates the input arguments provided for validation. - * - * @param key The key. - * @param otp The OTP to be validated against the given key. - */ - - public void validateOtpRequestArguments(String key, String otp) { - List validationErrorsList = new ArrayList<>(); - if (key == null || key.isEmpty()) { - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorMessage())); - } else { - if ((key.length() < Integer.parseInt(keyMinLength)) || (key.length() > Integer.parseInt(keyMaxLength))) { - - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_ILLEGAL_KEY_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_ILLEGAL_KEY_INPUT.getErrorMessage())); - } - } - if (otp == null || otp.isEmpty()) { - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_INVALID_OTP_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_INVALID_OTP_INPUT.getErrorMessage())); - } - if ((otp != null) && (!StringUtils.isNumeric(otp))) { - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_ILLEGAL_OTP_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_ILLEGAL_OTP_INPUT.getErrorMessage())); - } - if (!validationErrorsList.isEmpty()) { - throw new OtpInvalidArgumentException(validationErrorsList); - } - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java deleted file mode 100644 index 3504cc2bd29..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java +++ /dev/null @@ -1,61 +0,0 @@ -package io.mosip.kernel.otpmanager.util; - -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; - -import org.springframework.stereotype.Component; - -import io.mosip.kernel.otpmanager.constant.OtpErrorConstants; -import io.mosip.kernel.otpmanager.exception.CryptoFailureException; -import io.mosip.kernel.otpmanager.exception.OtpServiceException; -import io.mosip.kernel.otpmanager.util.PasscodeGenerator.Signer; - -/** - * This class contains methods to generate OTP. - * - * @author Ritesh Sinha - * @since 1.0.0 - * - */ -@Component -public class OtpProvider { - - /** - * This method compute OTP against provided key and macAlgo. - * - * @param key the key against which OTP generates. - * @param otpLength the length of OTP. - * @param macAlgorithm the crypto algorithm. - * @return the string OTP. - */ - public String computeOtp(String key, int otpLength, String macAlgorithm) { - try { - PasscodeGenerator pcg = new PasscodeGenerator(getSigning(key, macAlgorithm), otpLength); - return pcg.generateResponseCode(System.currentTimeMillis()); - } catch (Exception e) { - throw new CryptoFailureException(OtpErrorConstants.OTP_GEN_CRYPTO_FAILURE.getErrorCode(), - OtpErrorConstants.OTP_GEN_CRYPTO_FAILURE.getErrorMessage(), e); - } - } - - /** - * Method to generate Signer for provided key. - * - * @param secret the key for which signer generates. - * @param macAlgo the crypto algorithm. - * @return the signer. - */ - static Signer getSigning(String secret, String macAlgo) { - try { - final Mac mac = Mac.getInstance(macAlgo); - mac.init(new SecretKeySpec(secret.getBytes(), "")); - return (byte[] data) -> mac.doFinal(data); - } catch (NoSuchAlgorithmException | InvalidKeyException error) { - throw new OtpServiceException(OtpErrorConstants.OTP_GEN_ALGO_FAILURE.getErrorCode(), - OtpErrorConstants.OTP_GEN_ALGO_FAILURE.getErrorMessage(), error); - } - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java b/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java deleted file mode 100644 index 85729a6d357..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java +++ /dev/null @@ -1,100 +0,0 @@ -package io.mosip.kernel.otpmanager.util; - -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.security.GeneralSecurityException; - -import io.mosip.kernel.otpmanager.constant.OtpErrorConstants; -import io.mosip.kernel.otpmanager.exception.OtpIOException; - -/** - * Passcode generator class. - * - * @author Ritesh Sinha - * @since 1.0.0 - */ -public class PasscodeGenerator { - - /** Powers of 10 used to shorten the pin to the desired number of digits */ - private static final int[] DIGITS_POWER = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, - 1000000000 }; - - private final Signer signer; - - private final int codeLength; - - /** - * Using an interface to allow us to inject different signature implementations. - */ - interface Signer { - /** - * @param data Preimage to sign, represented as sequence of arbitrary bytes - * @return Signature as sequence of bytes. - * @throws GeneralSecurityException - */ - byte[] sign(byte[] data) throws GeneralSecurityException; - } - - public PasscodeGenerator(Signer signer, int passCodeLength) { - this.signer = signer; - this.codeLength = passCodeLength; - } - - private String padOutput(int value) { - StringBuilder result = new StringBuilder(Integer.toString(value)); - for (int i = result.length(); i < codeLength; i++) { - result.insert(0, "0"); - } - return result.toString(); - } - - /** - * @param state 8-byte integer value representing internal OTP state. - * @return A decimal response code - * @throws GeneralSecurityException If a JCE exception occur - */ - public String generateResponseCode(long state) throws GeneralSecurityException { - byte[] value = ByteBuffer.allocate(8).putLong(state).array(); - return generateResponseCode(value); - } - - /** - * @param value An arbitrary byte array used as a value - * @return A decimal response code - * @throws GeneralSecurityException If a JCE exception occur - */ - public String generateResponseCode(byte[] value) throws GeneralSecurityException { - byte[] hash = signer.sign(value); - - // Dynamically truncate the hash - // OffsetBits are the low order bits of the last byte of the hash - int offset = hash[hash.length - 1] & 0xF; - // Grab a positive integer value starting at the given offset. - int truncatedHash = hashToInt(hash, offset) & 0x7FFFFFFF; - int pinValue = truncatedHash % DIGITS_POWER[codeLength]; - return padOutput(pinValue); - } - - /** - * Grabs a positive integer value from the input array starting at the given - * offset. - * - * @param bytes the array of bytes - * @param start the index into the array to start grabbing bytes - * @return the integer constructed from the four bytes in the array - */ - private int hashToInt(byte[] bytes, int start) { - DataInput input = new DataInputStream(new ByteArrayInputStream(bytes, start, bytes.length - start)); - int val; - try { - val = input.readInt(); - } catch (IOException e) { - throw new OtpIOException(OtpErrorConstants.OTP_GEN_IO_FAILURE.getErrorCode(), - OtpErrorConstants.OTP_GEN_IO_FAILURE.getErrorMessage(), e); - } - return val; - } -} diff --git a/kernel/kernel-otpmanager-service/src/main/resources/application-dev.properties b/kernel/kernel-otpmanager-service/src/main/resources/application-dev.properties deleted file mode 100644 index 5896e03a223..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/resources/application-dev.properties +++ /dev/null @@ -1,27 +0,0 @@ -#the default length for otp(in number) -mosip.kernel.otp.default-length=6 -#the default crypto function -#It can be: HmacSHA512, HmacSHA256, HmacSHA1. -mosip.kernel.otp.mac-algorithm=HmacSHA512 -#the OTP expires after the given time(in seconds). -mosip.kernel.otp.expiry-time=120 -#the key is freezed for the given time(in seconds). -mosip.kernel.otp.key-freeze-time=7200 -#the number of validation attempts allowed(in number). -#mosip.kernel.otp.validation-attempt-threshold =3 means , the validation and generation will be blocked from 4th time. -mosip.kernel.otp.validation-attempt-threshold=3 -#minimum length of key(in number). -mosip.kernel.otp.min-key-length=3 -#maximum length of key(in number). -mosip.kernel.otp.max-key-length=64 -spring.h2.console.enabled=true -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.hbm2ddl.auto=update -javax.persistence.jdbc.driver=org.h2.Driver -otpmanager_database_url=jdbc:h2:mem:mosip_kernel; -otpmanager_database_username=kerneluser -otpmanager_database_password=Mosip@dev123 - -auth.server.validate.url=http://localhost:8091/authmanager/authorize/validateToken -auth.role.prefix=ROLE_ -auth.header.name=Authorization diff --git a/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties b/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties deleted file mode 100644 index 36b3b5ff1ef..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties +++ /dev/null @@ -1,41 +0,0 @@ -#the default length for otp(in number) -mosip.kernel.otp.default-length=6 -#the default crypto function -#It can be: HmacSHA512, HmacSHA256, HmacSHA1. -mosip.kernel.otp.mac-algorithm=HmacSHA512 -#the OTP expires after the given time(in seconds). -mosip.kernel.otp.expiry-time=120 -#the key is freezed for the given time(in seconds). -mosip.kernel.otp.key-freeze-time=7200 -#the number of validation attempts allowed(in number). -#mosip.kernel.otp.validation-attempt-threshold =3 means , the validation and generation will be blocked from 4th time. -mosip.kernel.otp.validation-attempt-threshold=3 -#minimum length of key(in number). -mosip.kernel.otp.min-key-length=3 -#maximum length of key(in number). -mosip.kernel.otp.max-key-length=64 - -javax.persistence.jdbc.driver=org.h2.Driver -javax.persistence.jdbc.url=jdbc:h2:mem:mosip_kernel;INIT=RUNSCRIPT FROM 'classpath:schema.sql';DB_CLOSE_DELAY=-1; -javax.persistence.jdbc.user=kerneluser -javax.persistence.jdbc.password=Mosip@dev123 -auth.server.validate.url=http://localhost:8091/authmanager/authorize/admin/validateToken -auth.role.prefix=ROLE_ -auth.header.name=Authorization - -spring.h2.console.enabled=true - - -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.jdbc.lob.non_contextual_creation=true -hibernate.hbm2ddl.auto=update -hibernate.show_sql=true -hibernate.format_sql=true -hibernate.connection.charSet=utf8 -hibernate.cache.use_second_level_cache=false -hibernate.cache.use_query_cache=false -hibernate.cache.use_structured_entries=false -hibernate.generate_statistics=false - -mosip.role.kernel.postotpgenerate=INDIVIDUAL,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ID_AUTHENTICATION,AUTH,RESIDENT,REGISTRATION_OFFICER -mosip.role.kernel.getotpvalidate=INDIVIDUAL,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ID_AUTHENTICATION,AUTH,RESIDENT,REGISTRATION_OFFICER \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties b/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties deleted file mode 100644 index f3ac9152682..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,36 +0,0 @@ -#spring.cloud.config.uri=localhost -#spring.cloud.config.label=master -spring.profiles.active=local -spring.cloud.config.name=kernel -spring.application.name=kernel-otpmanager-service -#management.security.enabled=false -#management.endpoint.health.show-details=when-authorized -#management.endpoints.web.exposure.include=* -management.endpoint.health.show-details=always -management.endpoints.web.exposure.include=info,health,refresh,mappings,prometheus -management.endpoint.metrics.enabled=true -management.endpoint.prometheus.enabled=true -management.metrics.export.prometheus.enabled=true - -server.port=8085 -server.servlet.path=/v1/otpmanager - - -javax.persistence.jdbc.url=${otpmanager_database_url} -javax.persistence.jdbc.user=${otpmanager_database_username} -javax.persistence.jdbc.password=${otpmanager_database_password} - -#disabling health check so that client doesnt try to load properties from sprint config server every -# 5 minutes (should not be done in production) -health.config.enabled=false -openapi.info.title=OTP Manager Service -openapi.info.description=Rest Endpoints for operations related to OTP -openapi.info.version=1.0 -openapi.info.license.name=Mosip -openapi.info.license.url=https://docs.mosip.io/platform/license -mosipbox.public.url=http://localhost:${server.port} -openapi.service.servers[0].url=${mosipbox.public.url}${server.servlet.path} -openapi.service.servers[0].description=OTP Manager Service -springdoc.swagger-ui.disable-swagger-default-url=true -spring.mvc.servlet.path=${server.servlet.path} - diff --git a/kernel/kernel-otpmanager-service/src/main/resources/logback.xml b/kernel/kernel-otpmanager-service/src/main/resources/logback.xml deleted file mode 100644 index 150c62249df..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/resources/logback.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/main/resources/schema.sql b/kernel/kernel-otpmanager-service/src/main/resources/schema.sql deleted file mode 100644 index 297520e3909..00000000000 --- a/kernel/kernel-otpmanager-service/src/main/resources/schema.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE SCHEMA IF NOT EXISTS kernel; \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java deleted file mode 100644 index 8092387b0dc..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.mosip.kernel.otpmanager.test; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * Crypto manager application - * - * @author Urvil Joshi - * @since 1.0.0 - * - */ -@SpringBootApplication(scanBasePackages = { "io.mosip.kernel.otpmanager.*" }) -public class OtpmanagerTestBootApplication { - - /** - * Main method to run spring boot application - * - * @param args args - */ - public static void main(String[] args) { - SpringApplication.run(OtpmanagerTestBootApplication.class, args); - } -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/config/TestSecurityConfig.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/config/TestSecurityConfig.java deleted file mode 100644 index 079a19f2bf8..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/config/TestSecurityConfig.java +++ /dev/null @@ -1,77 +0,0 @@ -package io.mosip.kernel.otpmanager.test.config; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import javax.servlet.http.HttpServletResponse; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.provisioning.InMemoryUserDetailsManager; -import org.springframework.security.web.AuthenticationEntryPoint; -import org.springframework.security.web.firewall.DefaultHttpFirewall; -import org.springframework.security.web.firewall.HttpFirewall; - -@Configuration -@EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true) -public class TestSecurityConfig extends WebSecurityConfigurerAdapter { - - @Bean - public HttpFirewall defaultHttpFirewall() { - return new DefaultHttpFirewall(); - } - - @Override - public void configure(WebSecurity webSecurity) throws Exception { - webSecurity.ignoring().antMatchers(allowedEndPoints()); - super.configure(webSecurity); - webSecurity.httpFirewall(defaultHttpFirewall()); - } - - private String[] allowedEndPoints() { - return new String[] { "/assets/**", "/icons/**", "/screenshots/**", "/favicon**", "/**/favicon**", "/css/**", - "/js/**", "/*/error**", "/*/webjars/**", "/*/v2/api-docs", "/*/configuration/ui", - "/*/configuration/security", "/*/swagger-resources/**", "/*/swagger-ui.html" }; - } - - @Override - protected void configure(final HttpSecurity httpSecurity) throws Exception { - httpSecurity.csrf().disable(); - httpSecurity.httpBasic().and().authorizeRequests().anyRequest().authenticated().and().sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().exceptionHandling() - .authenticationEntryPoint(unauthorizedEntryPoint()); - } - - @Bean - public AuthenticationEntryPoint unauthorizedEntryPoint() { - return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED); - } - - @Bean - public UserDetailsService userDetailsService() { - List users = new ArrayList<>(); - users.add(new User("reg-officer", "mosip", - Arrays.asList(new SimpleGrantedAuthority("ROLE_REGISTRATION_OFFICER")))); - users.add(new User("reg-supervisor", "mosip", - Arrays.asList(new SimpleGrantedAuthority("ROLE_REGISTRATION_SUPERVISOR")))); - users.add(new User("reg-admin", "mosip", Arrays.asList(new SimpleGrantedAuthority("ROLE_REGISTRATION_ADMIN")))); - users.add(new User("reg-processor", "mosip", - Arrays.asList(new SimpleGrantedAuthority("ROLE_REGISTRATION_PROCESSOR")))); - users.add(new User("id-auth", "mosip", Arrays.asList(new SimpleGrantedAuthority("ROLE_ID_AUTHENTICATION")))); - users.add(new User("individual", "mosip", Arrays.asList(new SimpleGrantedAuthority("ROLE_INDIVIDUAL")))); - users.add(new User("test", "mosip", Arrays.asList(new SimpleGrantedAuthority("ROLE_TEST")))); - return new InMemoryUserDetailsManager(users); - } -} \ No newline at end of file diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/controller/OtpGeneratorControllerTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/controller/OtpGeneratorControllerTest.java deleted file mode 100644 index 7eca43e138c..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/controller/OtpGeneratorControllerTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.mosip.kernel.otpmanager.test.controller; - -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.BDDMockito.given; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithUserDetails; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.web.servlet.MockMvc; - -import io.mosip.kernel.otpmanager.dto.OtpGeneratorResponseDto; -import io.mosip.kernel.otpmanager.service.impl.OtpGeneratorServiceImpl; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; - -@RunWith(SpringRunner.class) -@AutoConfigureMockMvc -@SpringBootTest(classes = OtpmanagerTestBootApplication.class) -public class OtpGeneratorControllerTest { - @Autowired - private MockMvc mockMvc; - - @MockBean - private OtpGeneratorServiceImpl service; - - @WithUserDetails("individual") - @Test - public void testOtpGenerationController() throws Exception { - String otp = "3214"; - OtpGeneratorResponseDto dto = new OtpGeneratorResponseDto(); - dto.setOtp(otp); - given(service.getOtp(Mockito.any())).willReturn(dto); - String json = "{\"key\":\"123456789\"}"; - mockMvc.perform(post("/otp/generate").contentType(MediaType.APPLICATION_JSON).content(json)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.otp", is("3214"))); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/controller/OtpValidatorControllerTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/controller/OtpValidatorControllerTest.java deleted file mode 100644 index dcd8c177a42..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/controller/OtpValidatorControllerTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.mosip.kernel.otpmanager.test.controller; - -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit4.SpringRunner; - -import io.mosip.kernel.otpmanager.controller.OtpValidatorController; -import io.mosip.kernel.otpmanager.dto.OtpValidatorResponseDto; -import io.mosip.kernel.otpmanager.service.impl.OtpValidatorServiceImpl; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; - -@SpringBootTest(classes = OtpmanagerTestBootApplication.class) -@RunWith(SpringRunner.class) -@AutoConfigureMockMvc -public class OtpValidatorControllerTest { - @Mock - private OtpValidatorServiceImpl service; - - @InjectMocks - private OtpValidatorController controller; - - @Test - public void testOtpValidationController() throws Exception { - String key = "testKey"; - String otp = "1234"; - OtpValidatorResponseDto responseDto = new OtpValidatorResponseDto(); - responseDto.setMessage("VALIDATION UNSUCCESSFUL"); - responseDto.setStatus("false"); - ResponseEntity validationResponseEntity = new ResponseEntity<>(responseDto, - HttpStatus.OK); - given(service.validateOtp(key, otp)).willReturn(validationResponseEntity); - controller.validateOtp(key, otp); - verify(service, times(1)).validateOtp(key, otp); - } -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/exception/OtpExceptionTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/exception/OtpExceptionTest.java deleted file mode 100644 index 0106da7c03d..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/exception/OtpExceptionTest.java +++ /dev/null @@ -1,96 +0,0 @@ - -package io.mosip.kernel.otpmanager.test.exception; - -import static org.mockito.Mockito.when; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithUserDetails; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.web.servlet.MockMvc; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import io.mosip.kernel.core.exception.ServiceError; -import io.mosip.kernel.core.http.RequestWrapper; -import io.mosip.kernel.otpmanager.constant.OtpErrorConstants; -import io.mosip.kernel.otpmanager.dto.OtpGeneratorRequestDto; -import io.mosip.kernel.otpmanager.exception.OtpInvalidArgumentException; -import io.mosip.kernel.otpmanager.service.impl.OtpGeneratorServiceImpl; -import io.mosip.kernel.otpmanager.service.impl.OtpValidatorServiceImpl; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; - -@RunWith(SpringRunner.class) -@AutoConfigureMockMvc -@SpringBootTest(classes = OtpmanagerTestBootApplication.class) -public class OtpExceptionTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; - - @MockBean - private OtpGeneratorServiceImpl service; - - @MockBean - private OtpValidatorServiceImpl validatorService; - - @WithUserDetails("individual") - @Test - public void testForExceptionWhenKeyIsNull() throws Exception { - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorMessage())); - when(service.getOtp(Mockito.any())).thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - OtpGeneratorRequestDto otpGeneratorRequestDto = new OtpGeneratorRequestDto(); - otpGeneratorRequestDto.setKey(null); - RequestWrapper reqWrapperDTO = new RequestWrapper<>(); - reqWrapperDTO.setId("ID"); - reqWrapperDTO.setMetadata(null); - reqWrapperDTO.setRequest(otpGeneratorRequestDto); - reqWrapperDTO.setRequesttime(LocalDateTime.now()); - reqWrapperDTO.setVersion("v1.0"); - String json = objectMapper.writeValueAsString(reqWrapperDTO); - mockMvc.perform(post("/otp/generate").contentType(MediaType.APPLICATION_JSON).content(json)) - .andExpect(status().isOk()); - } - - @WithUserDetails("individual") - @Test - public void testForExceptionWhenKeyNotFound() throws Exception { - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorMessage())); - when(validatorService.validateOtp(Mockito.any(), Mockito.any())) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform(get("/otp/validate?key=test&otp=3212").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); - } - - @WithUserDetails("individual") - @Test - public void testForExceptionWhenKeyLengthInvalid() throws Exception { - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(new ServiceError(OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorCode(), - OtpErrorConstants.OTP_VAL_INVALID_KEY_INPUT.getErrorMessage())); - when(validatorService.validateOtp(Mockito.any(), Mockito.any())) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform(get("/otp/validate?key=sa&otp=3212").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java deleted file mode 100644 index e21accd8989..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package io.mosip.kernel.otpmanager.test.service; - -import static org.mockito.Mockito.when; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.time.LocalDateTime; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithUserDetails; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.web.servlet.MockMvc; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import io.mosip.kernel.core.http.RequestWrapper; -import io.mosip.kernel.otpmanager.dto.OtpGeneratorRequestDto; -import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; - -@RunWith(SpringRunner.class) -@AutoConfigureMockMvc -@SpringBootTest(classes = OtpmanagerTestBootApplication.class) -public class OtpGeneratorServiceTest { - - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; - - @MockBean - OtpRepository repository; - - @WithUserDetails("individual") - @Test - public void testOtpGeneratorServicePositiveCase() throws Exception { - OtpGeneratorRequestDto otpGeneratorRequestDto = new OtpGeneratorRequestDto(); - otpGeneratorRequestDto.setKey("testKey"); - RequestWrapper reqWrapperDTO = new RequestWrapper<>(); - reqWrapperDTO.setId("ID"); - reqWrapperDTO.setMetadata(null); - reqWrapperDTO.setRequest(otpGeneratorRequestDto); - reqWrapperDTO.setRequesttime(LocalDateTime.now()); - reqWrapperDTO.setVersion("v1.0"); - String json = objectMapper.writeValueAsString(reqWrapperDTO); - mockMvc.perform(post("/otp/generate").contentType(MediaType.APPLICATION_JSON).content(json)) - .andExpect(status().isOk()).andReturn(); - } - - @WithUserDetails("individual") - @Test - public void testOtpGenerationFreezedCase() throws Exception { - OtpGeneratorRequestDto otpGeneratorRequestDto = new OtpGeneratorRequestDto(); - otpGeneratorRequestDto.setKey("testKey"); - RequestWrapper reqWrapperDTO = new RequestWrapper<>(); - reqWrapperDTO.setId("ID"); - reqWrapperDTO.setMetadata(null); - reqWrapperDTO.setRequest(otpGeneratorRequestDto); - reqWrapperDTO.setRequesttime(LocalDateTime.now()); - reqWrapperDTO.setVersion("v1.0"); - String json = objectMapper.writeValueAsString(reqWrapperDTO); - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId("testKey"); - entity.setValidationRetryCount(0); - entity.setStatusCode("KEY_FREEZED"); - entity.setUpdatedDtimes(LocalDateTime.now()); - when(repository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(post("/otp/generate").contentType(MediaType.APPLICATION_JSON).content(json)) - .andExpect(status().isOk()).andReturn(); - } -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidationsTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidationsTest.java deleted file mode 100644 index e05e2008e0e..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidationsTest.java +++ /dev/null @@ -1,135 +0,0 @@ -package io.mosip.kernel.otpmanager.test.service; - -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.Mockito.when; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithUserDetails; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.web.servlet.MockMvc; - -import io.mosip.kernel.core.exception.ServiceError; -import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.exception.OtpInvalidArgumentException; -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; - -@RunWith(SpringRunner.class) -@AutoConfigureMockMvc -@SpringBootTest(classes = OtpmanagerTestBootApplication.class) -public class OtpValidationsTest { - - @Autowired - MockMvc mockMvc; - - @Value("${mosip.kernel.otp.default-length}") - double otpLength; - - @MockBean - private OtpRepository otpRepository; - - @WithUserDetails("individual") - @Test - public void testNullKey() throws Exception { - when(otpRepository.findById(OtpEntity.class, "testKey")).thenReturn(null); - mockMvc.perform(get("/otp/validate?key=testKey&otp=1234").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andReturn(); - } - - @WithUserDetails("individual") - @Ignore - @Test - public void testOtpValidatorServiceExpiredOTPCase() throws Exception { - Random randomKey = new Random(); - double id = Math.pow(10, otpLength) + randomKey.nextInt((int) (9 * Math.pow(10, otpLength))); - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId(Double.toString(id)); - entity.setValidationRetryCount(0); - entity.setStatusCode("OTP_UNUSED"); - entity.setGeneratedDtimes(LocalDateTime.now(ZoneId.of("UTC")).minusMinutes(3)); - when(otpRepository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(get("/otp/validate?key=testKey&otp=1234").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.status", is("failure"))); - - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceKeyEmptyCase() throws Exception { - ServiceError serviceError = new ServiceError("TESTCODE", "TESTMESSAGE"); - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(serviceError); - when(otpRepository.findById(OtpEntity.class, "testKey")) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform(get("/otp/validate?key=&otp=1234").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andReturn(); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceOtpEmptyCase() throws Exception { - ServiceError serviceError = new ServiceError("TESTCODE", "TESTMESSAGE"); - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(serviceError); - when(otpRepository.findById(OtpEntity.class, "testKey")) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform(get("/otp/validate?key=testkey&otp=").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andReturn(); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceKeyLengthLessThanRequiredCase() throws Exception { - ServiceError serviceError = new ServiceError("TESTCODE", "TESTMESSAGE"); - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(serviceError); - when(otpRepository.findById(OtpEntity.class, "testKey")) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform( - get("/otp/validate").param("key", "sa").param("otp", "123456").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andReturn(); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceKeyLengthMoreThanRequiredCase() throws Exception { - ServiceError serviceError = new ServiceError("TESTCODE", "TESTMESSAGE"); - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(serviceError); - when(otpRepository.findById(OtpEntity.class, "testKey")) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform(get("/otp/validate").param("key", - "ykbbgyhogsmziqozetsyexoazpqhcpqywqmuyyijaweoswjlvhemamrmbuorixvnwlrhgfbnrmoorscjkllmgzqxtauoolvhoiyxfwoiotkvimcqshxvxplrqsfxmlmroyxcphstayxnowmjsnwdwhazpotqqrafuvpcaccaxneavptzwwsukhjqzwhjpdgrbqfybsyyryqlbrpdakuvtvswcwpzvkkaonblwlkjvytiodlnvsodsxkkgbbzvxkjbgbhnnvpkohydywdaudekflgbvbkeqwrekdgsneomyovczvnqhuitmr") - .param("otp", "123456").contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceOtpIsCharacter() throws Exception { - ServiceError serviceError = new ServiceError("TESTCODE", "TESTMESSAGE"); - List validationErrorsList = new ArrayList<>(); - validationErrorsList.add(serviceError); - when(otpRepository.findById(OtpEntity.class, "testKey")) - .thenThrow(new OtpInvalidArgumentException(validationErrorsList)); - mockMvc.perform(get("/otp/validate").param("key", "test").param("otp", "INVALID-TYPE") - .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andReturn(); - } -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java deleted file mode 100644 index 1bc1ad44923..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package io.mosip.kernel.otpmanager.test.service; - -import static org.hamcrest.CoreMatchers.is; -import static org.mockito.Mockito.when; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.ChronoUnit; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.security.test.context.support.WithUserDetails; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.web.servlet.MockMvc; - -import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; - -@RunWith(SpringRunner.class) -@AutoConfigureMockMvc -@SpringBootTest(classes = OtpmanagerTestBootApplication.class) -public class OtpValidatorServiceTest { - - @Autowired - private MockMvc mockMvc; - - @MockBean - OtpRepository repository; - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServicePositiveCase() throws Exception { - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId("testKey"); - entity.setValidationRetryCount(0); - entity.setStatusCode("OTP_UNUSED"); - entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC")).plusSeconds(50)); - when(repository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(get("/otp/validate?key=testKey&otp=1234").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.status", is("success"))); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceNegativeCase() throws Exception { - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId("testKey"); - entity.setValidationRetryCount(0); - entity.setStatusCode("OTP_UNUSED"); - entity.setUpdatedDtimes(LocalDateTime.now()); - when(repository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(get("/otp/validate?key=testKey&otp=5431").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.status", is("failure"))); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceWhenMaxAttemptReached() throws Exception { - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId("testKey"); - entity.setValidationRetryCount(3); - entity.setStatusCode("OTP_UNUSED"); - entity.setUpdatedDtimes(LocalDateTime.now()); - when(repository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(get("/otp/validate?key=testKey&otp=5431").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.status", is("failure"))); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceWhenKeyFreezedPositiveCase() throws Exception { - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId("testKey"); - entity.setValidationRetryCount(3); - entity.setStatusCode("KEY_FREEZED"); - entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC")).minus(1, ChronoUnit.MINUTES)); - when(repository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(get("/otp/validate?key=testKey&otp=2345").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.status", is("failure"))); - } - - @WithUserDetails("individual") - @Test - public void testOtpValidatorServiceWhenKeyFreezedNegativeCase() throws Exception { - OtpEntity entity = new OtpEntity(); - entity.setOtp("1234"); - entity.setId("testKey"); - entity.setValidationRetryCount(0); - entity.setStatusCode("KEY_FREEZED"); - entity.setUpdatedDtimes(LocalDateTime.now().minus(20, ChronoUnit.SECONDS)); - when(repository.findById(OtpEntity.class, "testKey")).thenReturn(entity); - mockMvc.perform(get("/otp/validate?key=testKey&otp=1234").contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()).andExpect(jsonPath("$.response.status", is("failure"))); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java b/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java deleted file mode 100644 index 24420fd3eab..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.mosip.kernel.otpmanager.test.util; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import io.mosip.kernel.otpmanager.exception.CryptoFailureException; -import io.mosip.kernel.otpmanager.util.OtpProvider; - -@SpringBootTest -@RunWith(SpringRunner.class) -public class OtpProviderTest { - - @Autowired - private OtpProvider provider; - - @Test(expected = CryptoFailureException.class) - public void getSigningExceptionTest() { - provider.computeOtp("98989898999", 6, "nsjkbdcdj"); - } - -} diff --git a/kernel/kernel-otpmanager-service/src/test/resources/application.properties b/kernel/kernel-otpmanager-service/src/test/resources/application.properties deleted file mode 100644 index 3b284ad5c92..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/resources/application.properties +++ /dev/null @@ -1,66 +0,0 @@ -# In Memory DB For Test -#-------------------------------------- -#The Driver name for test DB. -javax.persistence.jdbc.driver=org.h2.Driver -#The URL for test DB. -javax.persistence.jdbc.url=jdbc:h2\:mem\:testdb;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS kernel -#The username for test DB. -javax.persistence.jdbc.user=sa -#The password for test DB. -javax.persistence.jdbc.password= - -# Hibernate properties -#------------------------------------- -#It automatically validates or exports schema DDL to the database when the SessionFactory is created. -hibernate.hbm2ddl.auto=create-drop -#It makes Hibernate to generate the appropriate SQL statements for the chosen database. -hibernate.dialect=org.hibernate.dialect.H2Dialect -#It enables/disables the logging of all the generated SQL statements to the console. -hibernate.show_sql=false -#It enables/disables formatting the generated SQL statement to make it more readable. -hibernate.format_sql=false -#It sets the default encoding to UTF8. -hibernate.connection.charSet=utf8 -#It enables/disables L2 caching. -hibernate.cache.use_second_level_cache=false -#It enables/disables query caching. -hibernate.cache.use_query_cache=false -#It specifies whether entries will be written in a readable format or not in the L2 cache. -hibernate.cache.use_structured_entries=false -#It is used to analyze performance issues. -hibernate.generate_statistics=false - -#OTP Properties -#------------------------------- -#the default length for otp(in number) -mosip.kernel.otp.default-length=6 -#the default crypto function -#It can be: HmacSHA512, HmacSHA256, HmacSHA1. -mosip.kernel.otp.mac-algorithm=HmacSHA512 -#the default shared key -mosip.kernel.otp.shared-key=123456 -#the OTP expires after the given time(in seconds). -mosip.kernel.otp.expiry-time=40 -#the key is freezed for the given time(in seconds). -mosip.kernel.otp.key-freeze-time=40 -#the number of validation attempts allowed(in number). -#mosip.kernel.otp.validation-attempt-threshold =3 means , the validation and generation will be blocked from 4th time. -mosip.kernel.otp.validation-attempt-threshold=3 -#minimum length of key(in number). -mosip.kernel.otp.min-key-length=3 -#maximum length of key(in number). -mosip.kernel.otp.max-key-length=255 -mosip.kernel.auth.proxy-otp=false -mosip.kernel.auth.proxy-otp-value=111111 - -## To disable the logging (spring boot) -logging.level.org.springframework=OFF -logging.level.root=OFF -spring.main.banner-mode=off - -mosip.role.kernel.postotpgenerate=INDIVIDUAL,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ID_AUTHENTICATION,AUTH,RESIDENT,REGISTRATION_OFFICER -mosip.role.kernel.getotpvalidate=INDIVIDUAL,REGISTRATION_ADMIN,REGISTRATION_SUPERVISOR,ID_AUTHENTICATION,AUTH,RESIDENT,REGISTRATION_OFFICER - -mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter -auth.server.validate.url=http://localhost:8091/v1/authmanager/authorize/admin/validateToken -mosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip',admin:'mosip',crereq:'mosip',creser:'mosip',datsha:'mosip'} diff --git a/kernel/kernel-otpmanager-service/src/test/resources/bootstrap.properties b/kernel/kernel-otpmanager-service/src/test/resources/bootstrap.properties deleted file mode 100644 index 293878bc986..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/resources/bootstrap.properties +++ /dev/null @@ -1,64 +0,0 @@ -# Spring properties -#---------------------------------------------------------------- -spring.cloud.config.uri=localhost -spring.cloud.config.label=master -spring.cloud.config.name=kernel -spring.application.name=kernel-otpmanager-service -spring.profiles.active=test -management.endpoints.web.exposure.include=refresh -#management.security.enabled=false - -# Server properties -#------------------------------------------------------------------------------------------------ -#server port -server.port=8085 -#servlet path -server.servlet.path=/otpmanager -#disabling health check so that client doesnt try to load properties from sprint config server every -# 5 minutes (should not be done in production) -health.config.enabled=false - -# In Memory DB For Test -#-------------------------------------- -#The Driver name for test DB. -javax.persistence.jdbc.driver=org.h2.Driver -#The URL for test DB. -javax.persistence.jdbc.url=jdbc:h2\:mem\:testdb;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS kernel -#The username for test DB. -javax.persistence.jdbc.user=sa -#The password for test DB. -javax.persistence.jdbc.password= - -# Hibernate properties -#------------------------------------- -#It automatically validates or exports schema DDL to the database when the SessionFactory is created. -hibernate.hbm2ddl.auto=create-drop -#It makes Hibernate to generate the appropriate SQL statements for the chosen database. -hibernate.dialect=org.hibernate.dialect.H2Dialect -#It enables/disables the logging of all the generated SQL statements to the console. -hibernate.show_sql=false -#It enables/disables formatting the generated SQL statement to make it more readable. -hibernate.format_sql=false -#It sets the default encoding to UTF8. -hibernate.connection.charSet=utf8 -#It enables/disables L2 caching. -hibernate.cache.use_second_level_cache=false -#It enables/disables query caching. -hibernate.cache.use_query_cache=false -#It specifies whether entries will be written in a readable format or not in the L2 cache. -hibernate.cache.use_structured_entries=false -#It is used to analyze performance issues. -hibernate.generate_statistics=false - -openapi.info.title=OTP Manager Service -openapi.info.description=Rest Endpoints for operations related to OTP -openapi.info.version=1.0 -openapi.info.license.name=Mosip -openapi.info.license.url=https://docs.mosip.io/platform/license -mosipbox.public.url=http://localhost:${server.port} -openapi.service.servers[0].url=${mosipbox.public.url}${server.servlet.path} -openapi.service.servers[0].description=OTP Manager Service -springdoc.swagger-ui.disable-swagger-default-url=true -spring.mvc.servlet.path=${server.servlet.path} - - diff --git a/kernel/kernel-otpmanager-service/src/test/resources/logback.xml b/kernel/kernel-otpmanager-service/src/test/resources/logback.xml deleted file mode 100644 index 7285a15d201..00000000000 --- a/kernel/kernel-otpmanager-service/src/test/resources/logback.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - %d [%t] %p [%C{1}].%M.%L : %m%n - - - - - - \ No newline at end of file