From e2cdd472ac8206599d245c87c618f2ceb29f3803 Mon Sep 17 00:00:00 2001 From: Mohd Kaif Siddique Date: Tue, 7 Nov 2023 13:38:14 +0530 Subject: [PATCH 1/6] modified the pom Signed-off-by: Mohd Kaif Siddique --- db_scripts/mosip_authdevice/db.sql | 16 -- db_scripts/mosip_authdevice/ddl.sql | 12 - db_scripts/mosip_authdevice/deploy.properties | 6 - db_scripts/mosip_authdevice/deploy.sh | 48 ---- db_scripts/mosip_authdevice/dml.sql | 24 -- db_scripts/mosip_authdevice/drop_db.sql | 2 - db_scripts/mosip_authdevice/drop_role.sql | 1 - db_scripts/mosip_authdevice/grants.sql | 17 -- db_scripts/mosip_authdevice/role_dbuser.sql | 4 - db_scripts/mosip_kernel/ddl/kernel-fk.sql | 2 - db_scripts/mosip_kernel/ddl/kernel-prid.sql | 37 --- db_scripts/mosip_kernel/ddl/kernel-uin.sql | 36 --- .../mosip_kernel/ddl/kernel-uin_assigned.sql | 36 --- db_scripts/mosip_kernel/ddl/kernel-vid.sql | 37 --- .../mosip_kernel/ddl/kernel-vid_assigned.sql | 38 --- db_scripts/mosip_regdevice/db.sql | 16 -- db_scripts/mosip_regdevice/ddl.sql | 12 - db_scripts/mosip_regdevice/deploy.properties | 6 - db_scripts/mosip_regdevice/deploy.sh | 48 ---- db_scripts/mosip_regdevice/dml.sql | 24 -- db_scripts/mosip_regdevice/drop_db.sql | 2 - db_scripts/mosip_regdevice/drop_role.sql | 1 - db_scripts/mosip_regdevice/grants.sql | 17 -- db_scripts/mosip_regdevice/role_dbuser.sql | 4 - kernel/pom.xml | 201 ++++++++++--- pom.xml | 266 ------------------ 26 files changed, 161 insertions(+), 752 deletions(-) delete mode 100644 db_scripts/mosip_authdevice/db.sql delete mode 100644 db_scripts/mosip_authdevice/ddl.sql delete mode 100644 db_scripts/mosip_authdevice/deploy.properties delete mode 100644 db_scripts/mosip_authdevice/deploy.sh delete mode 100644 db_scripts/mosip_authdevice/dml.sql delete mode 100644 db_scripts/mosip_authdevice/drop_db.sql delete mode 100644 db_scripts/mosip_authdevice/drop_role.sql delete mode 100644 db_scripts/mosip_authdevice/grants.sql delete mode 100644 db_scripts/mosip_authdevice/role_dbuser.sql delete mode 100644 db_scripts/mosip_kernel/ddl/kernel-fk.sql delete mode 100644 db_scripts/mosip_kernel/ddl/kernel-prid.sql delete mode 100644 db_scripts/mosip_kernel/ddl/kernel-uin.sql delete mode 100644 db_scripts/mosip_kernel/ddl/kernel-uin_assigned.sql delete mode 100644 db_scripts/mosip_kernel/ddl/kernel-vid.sql delete mode 100644 db_scripts/mosip_kernel/ddl/kernel-vid_assigned.sql delete mode 100644 db_scripts/mosip_regdevice/db.sql delete mode 100644 db_scripts/mosip_regdevice/ddl.sql delete mode 100644 db_scripts/mosip_regdevice/deploy.properties delete mode 100644 db_scripts/mosip_regdevice/deploy.sh delete mode 100644 db_scripts/mosip_regdevice/dml.sql delete mode 100644 db_scripts/mosip_regdevice/drop_db.sql delete mode 100644 db_scripts/mosip_regdevice/drop_role.sql delete mode 100644 db_scripts/mosip_regdevice/grants.sql delete mode 100644 db_scripts/mosip_regdevice/role_dbuser.sql delete mode 100644 pom.xml diff --git a/db_scripts/mosip_authdevice/db.sql b/db_scripts/mosip_authdevice/db.sql deleted file mode 100644 index 5053372c..00000000 --- a/db_scripts/mosip_authdevice/db.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE DATABASE mosip_authdevice - ENCODING = 'UTF8' - LC_COLLATE = 'en_US.UTF-8' - LC_CTYPE = 'en_US.UTF-8' - TABLESPACE = pg_default - OWNER = postgres - TEMPLATE = template0; -COMMENT ON DATABASE mosip_authdevice IS 'Database to store all partner authentication device management data, look-up data, configuration data, metadata...etc.'; - -\c mosip_authdevice - -DROP SCHEMA IF EXISTS authdevice CASCADE; -CREATE SCHEMA authdevice; -ALTER SCHEMA authdevice OWNER TO postgres; - -ALTER DATABASE mosip_authdevice SET search_path TO authdevice,pg_catalog,public; diff --git a/db_scripts/mosip_authdevice/ddl.sql b/db_scripts/mosip_authdevice/ddl.sql deleted file mode 100644 index 93eba42d..00000000 --- a/db_scripts/mosip_authdevice/ddl.sql +++ /dev/null @@ -1,12 +0,0 @@ -\c mosip_authdevice - -\ir ddl/authdevice-device_detail.sql -\ir ddl/authdevice-ftp_chip_detail.sql -\ir ddl/authdevice-reg_device_sub_type.sql -\ir ddl/authdevice-reg_device_type.sql -\ir ddl/authdevice-registered_device_master.sql -\ir ddl/authdevice-registered_device_master_h.sql -\ir ddl/authdevice-secure_biometric_interface.sql -\ir ddl/authdevice-secure_biometric_interface_h.sql -\ir ddl/authdevice-foundational_trust_provider.sql -\ir ddl/authdevice-fk.sql diff --git a/db_scripts/mosip_authdevice/deploy.properties b/db_scripts/mosip_authdevice/deploy.properties deleted file mode 100644 index 284e9548..00000000 --- a/db_scripts/mosip_authdevice/deploy.properties +++ /dev/null @@ -1,6 +0,0 @@ -DB_SERVERIP= -DB_PORT=5432 -SU_USER=postgres -DEFAULT_DB_NAME=postgres -MOSIP_DB_NAME=mosip_authdevice -DML_FLAG=1 diff --git a/db_scripts/mosip_authdevice/deploy.sh b/db_scripts/mosip_authdevice/deploy.sh deleted file mode 100644 index 16f2473b..00000000 --- a/db_scripts/mosip_authdevice/deploy.sh +++ /dev/null @@ -1,48 +0,0 @@ - -## Properties file -set -e -properties_file="$1" -echo `date "+%m/%d/%Y %H:%M:%S"` ": $properties_file" -if [ -f "$properties_file" ] -then - echo `date "+%m/%d/%Y %H:%M:%S"` ": Property file \"$properties_file\" found." - while IFS='=' read -r key value - do - key=$(echo $key | tr '.' '_') - eval ${key}=\${value} - done < "$properties_file" -else - echo `date "+%m/%d/%Y %H:%M:%S"` ": Property file not found, Pass property file name as argument." -fi - -## Terminate existing connections -echo "Terminating active connections" -CONN=$(PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -t -c "SELECT count(pg_terminate_backend(pg_stat_activity.pid)) FROM pg_stat_activity WHERE datname = '$MOSIP_DB_NAME' AND pid <> pg_backend_pid()";exit;) -echo "Terminated connections" - -## Drop db and role -echo "Dropping DB" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f drop_db.sql - -echo "Dropping user" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f drop_role.sql - -## Create users -echo `date "+%m/%d/%Y %H:%M:%S"` ": Creating database users" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f role_dbuser.sql -v dbuserpwd=\'$DBUSER_PWD\' - -## Create DB -echo "Creating DB" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f db.sql -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f ddl.sql - -## Grants -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f grants.sql - -## Populate tables -if [ ${DML_FLAG} == 1 ] -then - echo `date "+%m/%d/%Y %H:%M:%S"` ": Deploying DML for ${MOSIP_DB_NAME} database" - PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -a -b -f dml.sql -fi - diff --git a/db_scripts/mosip_authdevice/dml.sql b/db_scripts/mosip_authdevice/dml.sql deleted file mode 100644 index b4021b76..00000000 --- a/db_scripts/mosip_authdevice/dml.sql +++ /dev/null @@ -1,24 +0,0 @@ -\c mosip_authdevice - -TRUNCATE TABLE authdevice.reg_device_type cascade ; - -\COPY authdevice.reg_device_type (code,name,descr,is_active,cr_by,cr_dtimes) FROM './dml/authdevice-reg_device_type.csv' delimiter ',' HEADER csv; - -TRUNCATE TABLE authdevice.reg_device_sub_type cascade ; - -\COPY authdevice.reg_device_sub_type (code,dtyp_code,name,descr,is_active,cr_by,cr_dtimes) FROM './dml/authdevice-reg_device_sub_type.csv' delimiter ',' HEADER csv; - - - - - - - - - - - - - - - diff --git a/db_scripts/mosip_authdevice/drop_db.sql b/db_scripts/mosip_authdevice/drop_db.sql deleted file mode 100644 index 826ae71c..00000000 --- a/db_scripts/mosip_authdevice/drop_db.sql +++ /dev/null @@ -1,2 +0,0 @@ -DROP DATABASE IF EXISTS mosip_authdevice; - diff --git a/db_scripts/mosip_authdevice/drop_role.sql b/db_scripts/mosip_authdevice/drop_role.sql deleted file mode 100644 index e245d15a..00000000 --- a/db_scripts/mosip_authdevice/drop_role.sql +++ /dev/null @@ -1 +0,0 @@ -drop role if exists authdeviceuser; diff --git a/db_scripts/mosip_authdevice/grants.sql b/db_scripts/mosip_authdevice/grants.sql deleted file mode 100644 index d29f3246..00000000 --- a/db_scripts/mosip_authdevice/grants.sql +++ /dev/null @@ -1,17 +0,0 @@ -\c mosip_authdevice - -GRANT CONNECT - ON DATABASE mosip_authdevice - TO authdeviceuser; - -GRANT USAGE - ON SCHEMA authdevice - TO authdeviceuser; - -GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES - ON ALL TABLES IN SCHEMA authdevice - TO authdeviceuser; - -ALTER DEFAULT PRIVILEGES IN SCHEMA authdevice - GRANT SELECT,INSERT,UPDATE,DELETE,REFERENCES ON TABLES TO authdeviceuser; - diff --git a/db_scripts/mosip_authdevice/role_dbuser.sql b/db_scripts/mosip_authdevice/role_dbuser.sql deleted file mode 100644 index 878a1025..00000000 --- a/db_scripts/mosip_authdevice/role_dbuser.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE ROLE authdeviceuser WITH - INHERIT - LOGIN - PASSWORD :dbuserpwd; diff --git a/db_scripts/mosip_kernel/ddl/kernel-fk.sql b/db_scripts/mosip_kernel/ddl/kernel-fk.sql deleted file mode 100644 index 139597f9..00000000 --- a/db_scripts/mosip_kernel/ddl/kernel-fk.sql +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/db_scripts/mosip_kernel/ddl/kernel-prid.sql b/db_scripts/mosip_kernel/ddl/kernel-prid.sql deleted file mode 100644 index becc886e..00000000 --- a/db_scripts/mosip_kernel/ddl/kernel-prid.sql +++ /dev/null @@ -1,37 +0,0 @@ - --- object: kernel.prid | type: TABLE -- --- DROP TABLE IF EXISTS kernel.prid CASCADE; -CREATE TABLE kernel.prid( - prid character varying(36) NOT NULL, - prid_status character varying(16) NOT NULL, - cr_by character varying(256) NOT NULL, - cr_dtimes timestamp NOT NULL, - upd_by character varying(256), - upd_dtimes timestamp, - is_deleted boolean DEFAULT FALSE, - del_dtimes timestamp, - CONSTRAINT pk_prid_id PRIMARY KEY (prid) - -); --- index creation starts-- -CREATE INDEX IF NOT EXISTS idx_prid_status ON kernel.prid USING btree (prid_status); --- index creation ends -- --- ddl-end -- -COMMENT ON TABLE kernel.prid IS 'PRID: Stores pre-generated PRIDs that are assigned to an individual as part of mosip preregistration process'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.prid IS 'PRID: Pre-generated PRIDs (Pre registration IDs), which will be used to assign to an individual'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.prid_status IS 'PRID Status: Status of the pre-generated PRID, whether it is available, expired or assigned.'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.cr_by IS 'Created By : ID or name of the user who create / insert record'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.upd_by IS 'Updated By : ID or name of the user who update the record with new values'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.'; --- ddl-end -- -COMMENT ON COLUMN kernel.prid.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE'; --- ddl-end -- diff --git a/db_scripts/mosip_kernel/ddl/kernel-uin.sql b/db_scripts/mosip_kernel/ddl/kernel-uin.sql deleted file mode 100644 index 58db188f..00000000 --- a/db_scripts/mosip_kernel/ddl/kernel-uin.sql +++ /dev/null @@ -1,36 +0,0 @@ - - --- object: kernel.uin | type: TABLE -- --- DROP TABLE IF EXISTS kernel.uin CASCADE; -CREATE TABLE kernel.uin( - uin character varying(28) NOT NULL, - uin_status character varying(16), - cr_by character varying(256) NOT NULL, - cr_dtimes timestamp NOT NULL, - upd_by character varying(256), - upd_dtimes timestamp, - is_deleted boolean DEFAULT FALSE, - del_dtimes timestamp, - CONSTRAINT pk_uin_id PRIMARY KEY (uin) - -); --- ddl-end -- -COMMENT ON TABLE kernel.uin IS 'UIN: Stores pre-generated UINs that are assigned to an individual as part of registration process.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.uin IS 'UIN: Pre-generated UINs (Unique Identification Number), which will be used to assign to an individual'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.uin_status IS 'Is Used: Status of the pre-generated UIN, whether it is assigned, unassigned or issued.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.cr_by IS 'Created By : ID or name of the user who create / insert record'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.upd_by IS 'Updated By : ID or name of the user who update the record with new values'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE'; --- ddl-end -- - diff --git a/db_scripts/mosip_kernel/ddl/kernel-uin_assigned.sql b/db_scripts/mosip_kernel/ddl/kernel-uin_assigned.sql deleted file mode 100644 index 4a2b8165..00000000 --- a/db_scripts/mosip_kernel/ddl/kernel-uin_assigned.sql +++ /dev/null @@ -1,36 +0,0 @@ - - --- object: kernel.uin_assigned | type: TABLE -- --- DROP TABLE IF EXISTS kernel.uin_assigned CASCADE; -CREATE TABLE kernel.uin_assigned( - uin character varying(28) NOT NULL, - uin_status character varying(16), - cr_by character varying(256) NOT NULL, - cr_dtimes timestamp NOT NULL, - upd_by character varying(256), - upd_dtimes timestamp, - is_deleted boolean DEFAULT FALSE, - del_dtimes timestamp, - CONSTRAINT pk_uinass_id PRIMARY KEY (uin) - -); --- ddl-end -- -COMMENT ON TABLE kernel.uin_assigned IS 'UIN: Stores pre-generated UINs that are assigned to an individual as part of registration process.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.uin IS 'UIN: Pre-generated UINs (Unique Identification Number), which will be used to assign to an individual'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.uin_status IS 'Is Used: Status of the pre-generated UIN, whether it is assigned, unassigned or issued.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.cr_by IS 'Created By : ID or name of the user who create / insert record'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.upd_by IS 'Updated By : ID or name of the user who update the record with new values'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.'; --- ddl-end -- -COMMENT ON COLUMN kernel.uin_assigned.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE'; --- ddl-end -- - diff --git a/db_scripts/mosip_kernel/ddl/kernel-vid.sql b/db_scripts/mosip_kernel/ddl/kernel-vid.sql deleted file mode 100644 index 67ec6797..00000000 --- a/db_scripts/mosip_kernel/ddl/kernel-vid.sql +++ /dev/null @@ -1,37 +0,0 @@ - --- object: kernel.vid | type: TABLE -- --- DROP TABLE IF EXISTS kernel.vid CASCADE; -CREATE TABLE kernel.vid( - vid character varying(36) NOT NULL, - expiry_dtimes timestamp, - vid_status character varying(16) NOT NULL, - cr_by character varying(256) NOT NULL, - cr_dtimes timestamp NOT NULL, - upd_by character varying(256), - upd_dtimes timestamp, - is_deleted boolean DEFAULT FALSE, - del_dtimes timestamp, - CONSTRAINT pk_vid_id PRIMARY KEY (vid) - -); --- ddl-end -- -COMMENT ON TABLE kernel.vid IS 'VID: Stores pre-generated VIDs that are assigned to an individual as part of mosip process.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.vid IS 'VID: Pre-generated VIDs (Vertual Identification Number), which will be used to assign to an individual'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.expiry_dtimes IS 'Expiry Date and Time: Expiry Date and Time of the Vertual ID'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.vid_status IS 'VID: Status of the pre-generated VID, whether it is available, expired or assigned.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.cr_by IS 'Created By : ID or name of the user who create / insert record'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.upd_by IS 'Updated By : ID or name of the user who update the record with new values'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE'; --- ddl-end -- diff --git a/db_scripts/mosip_kernel/ddl/kernel-vid_assigned.sql b/db_scripts/mosip_kernel/ddl/kernel-vid_assigned.sql deleted file mode 100644 index 74e2c311..00000000 --- a/db_scripts/mosip_kernel/ddl/kernel-vid_assigned.sql +++ /dev/null @@ -1,38 +0,0 @@ - - --- object: kernel.vid_assigned | type: TABLE -- --- DROP TABLE IF EXISTS kernel.vid_assigned CASCADE; -CREATE TABLE kernel.vid_assigned( - vid character varying(36) NOT NULL, - expiry_dtimes timestamp, - vid_status character varying(16) NOT NULL, - cr_by character varying(256) NOT NULL, - cr_dtimes timestamp NOT NULL, - upd_by character varying(256), - upd_dtimes timestamp, - is_deleted boolean DEFAULT FALSE, - del_dtimes timestamp, - CONSTRAINT pk_vida_id PRIMARY KEY (vid) - -); --- ddl-end -- -COMMENT ON TABLE kernel.vid_assigned IS 'VID Assigned: Stores pre-generated VIDs that are assigned /expired to an individual as part of mosip process.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.vid IS 'VID: Pre-generated VIDs (Vertual Identification Number), which will be used to assign to an individual'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.expiry_dtimes IS 'Expiry Date and Time: Expiry Date and Time of the Vertual ID'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.vid_status IS 'VID: Status of the pre-generated VID, whether it is available, expired or assigned.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.cr_by IS 'Created By : ID or name of the user who create / insert record'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.cr_dtimes IS 'Created DateTimestamp : Date and Timestamp when the record is created/inserted'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.upd_by IS 'Updated By : ID or name of the user who update the record with new values'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.upd_dtimes IS 'Updated DateTimestamp : Date and Timestamp when any of the fields in the record is updated with new values.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.is_deleted IS 'IS_Deleted : Flag to mark whether the record is Soft deleted.'; --- ddl-end -- -COMMENT ON COLUMN kernel.vid_assigned.del_dtimes IS 'Deleted DateTimestamp : Date and Timestamp when the record is soft deleted with is_deleted=TRUE'; --- ddl-end -- diff --git a/db_scripts/mosip_regdevice/db.sql b/db_scripts/mosip_regdevice/db.sql deleted file mode 100644 index df009296..00000000 --- a/db_scripts/mosip_regdevice/db.sql +++ /dev/null @@ -1,16 +0,0 @@ -CREATE DATABASE mosip_regdevice - ENCODING = 'UTF8' - LC_COLLATE = 'en_US.UTF-8' - LC_CTYPE = 'en_US.UTF-8' - TABLESPACE = pg_default - OWNER = postgres - TEMPLATE = template0; -COMMENT ON DATABASE mosip_regdevice IS 'Database to store all registration device management data, look-up data, configuration data, metadata...etc.'; - -\c mosip_regdevice - -DROP SCHEMA IF EXISTS regdevice CASCADE; -CREATE SCHEMA regdevice; -ALTER SCHEMA regdevice OWNER TO postgres; - -ALTER DATABASE mosip_regdevice SET search_path TO regdevice,pg_catalog,public; diff --git a/db_scripts/mosip_regdevice/ddl.sql b/db_scripts/mosip_regdevice/ddl.sql deleted file mode 100644 index eadc04e0..00000000 --- a/db_scripts/mosip_regdevice/ddl.sql +++ /dev/null @@ -1,12 +0,0 @@ -\c mosip_regdevice - -\ir ddl/regdevice-device_detail.sql -\ir ddl/regdevice-ftp_chip_detail.sql -\ir ddl/regdevice-reg_device_sub_type.sql -\ir ddl/regdevice-reg_device_type.sql -\ir ddl/regdevice-registered_device_master.sql -\ir ddl/regdevice-registered_device_master_h.sql -\ir ddl/regdevice-secure_biometric_interface.sql -\ir ddl/regdevice-secure_biometric_interface_h.sql -\ir ddl/regdevice-foundational_trust_provider.sql -\ir ddl/regdevice-fk.sql diff --git a/db_scripts/mosip_regdevice/deploy.properties b/db_scripts/mosip_regdevice/deploy.properties deleted file mode 100644 index 15c904b1..00000000 --- a/db_scripts/mosip_regdevice/deploy.properties +++ /dev/null @@ -1,6 +0,0 @@ -DB_SERVERIP= -DB_PORT=5432 -SU_USER=postgres -DEFAULT_DB_NAME=postgres -MOSIP_DB_NAME=mosip_regdevice -DML_FLAG=1 diff --git a/db_scripts/mosip_regdevice/deploy.sh b/db_scripts/mosip_regdevice/deploy.sh deleted file mode 100644 index d78f82c4..00000000 --- a/db_scripts/mosip_regdevice/deploy.sh +++ /dev/null @@ -1,48 +0,0 @@ - -## Properties file -set -e -properties_file="$1" -echo `date "+%m/%d/%Y %H:%M:%S"` ": $properties_file" -if [ -f "$properties_file" ] -then - echo `date "+%m/%d/%Y %H:%M:%S"` ": Property file \"$properties_file\" found." - while IFS='=' read -r key value - do - key=$(echo $key | tr '.' '_') - eval ${key}=\${value} - done < "$properties_file" -else - echo `date "+%m/%d/%Y %H:%M:%S"` ": Property file not found, Pass property file name as argument." -fi - -## Terminate existing connections -echo "Terminating active connections" -CONN=$(PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -t -c "SELECT count(pg_terminate_backend(pg_stat_activity.pid)) FROM pg_stat_activity WHERE datname = '$MOSIP_DB_NAME' AND pid <> pg_backend_pid()";exit;) -echo "Terminated connections" - -## Drop db and role -echo "Dropping DB" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f drop_db.sql - -echo "Dropping user" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f drop_role.sql - -## Create users -echo `date "+%m/%d/%Y %H:%M:%S"` ": Creating database users" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f role_dbuser.sql -v dbuserpwd=\'$DBUSER_PWD\' - -## Create DB -echo "Creating DB" -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f db.sql -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f ddl.sql - -## Grants -PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -f grants.sql - -## Populate tables -if [ ${DML_FLAG} == 1 ] -then - echo `date "+%m/%d/%Y %H:%M:%S"` ": Deploying DML for ${MOSIP_DB_NAME} database" - PGPASSWORD=$SU_USER_PWD psql -v ON_ERROR_STOP=1 --username=$SU_USER --host=$DB_SERVERIP --port=$DB_PORT --dbname=$DEFAULT_DB_NAME -a -b -f dml.sql -fi - diff --git a/db_scripts/mosip_regdevice/dml.sql b/db_scripts/mosip_regdevice/dml.sql deleted file mode 100644 index 366f6ab7..00000000 --- a/db_scripts/mosip_regdevice/dml.sql +++ /dev/null @@ -1,24 +0,0 @@ -\c mosip_regdevice - -TRUNCATE TABLE regdevice.reg_device_type cascade ; - -\COPY regdevice.reg_device_type (code,name,descr,is_active,cr_by,cr_dtimes) FROM './dml/regdevice-reg_device_type.csv' delimiter ',' HEADER csv; - -TRUNCATE TABLE regdevice.reg_device_sub_type cascade ; - -\COPY regdevice.reg_device_sub_type (code,dtyp_code,name,descr,is_active,cr_by,cr_dtimes) FROM './dml/regdevice-reg_device_sub_type.csv' delimiter ',' HEADER csv; - - - - - - - - - - - - - - - diff --git a/db_scripts/mosip_regdevice/drop_db.sql b/db_scripts/mosip_regdevice/drop_db.sql deleted file mode 100644 index 99af67bd..00000000 --- a/db_scripts/mosip_regdevice/drop_db.sql +++ /dev/null @@ -1,2 +0,0 @@ -DROP DATABASE IF EXISTS mosip_regdevice; - diff --git a/db_scripts/mosip_regdevice/drop_role.sql b/db_scripts/mosip_regdevice/drop_role.sql deleted file mode 100644 index e7c6bd64..00000000 --- a/db_scripts/mosip_regdevice/drop_role.sql +++ /dev/null @@ -1 +0,0 @@ -drop role if exists regdeviceuser; diff --git a/db_scripts/mosip_regdevice/grants.sql b/db_scripts/mosip_regdevice/grants.sql deleted file mode 100644 index 5c239f48..00000000 --- a/db_scripts/mosip_regdevice/grants.sql +++ /dev/null @@ -1,17 +0,0 @@ -\c mosip_regdevice - -GRANT CONNECT - ON DATABASE mosip_regdevice - TO regdeviceuser; - -GRANT USAGE - ON SCHEMA regdevice - TO regdeviceuser; - -GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES - ON ALL TABLES IN SCHEMA regdevice - TO regdeviceuser; - -ALTER DEFAULT PRIVILEGES IN SCHEMA regdevice - GRANT SELECT,INSERT,UPDATE,DELETE,REFERENCES ON TABLES TO regdeviceuser; - diff --git a/db_scripts/mosip_regdevice/role_dbuser.sql b/db_scripts/mosip_regdevice/role_dbuser.sql deleted file mode 100644 index e7632db7..00000000 --- a/db_scripts/mosip_regdevice/role_dbuser.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE ROLE regdeviceuser WITH - INHERIT - LOGIN - PASSWORD :dbuserpwd; diff --git a/kernel/pom.xml b/kernel/pom.xml index 1a52b30c..02f93e7e 100644 --- a/kernel/pom.xml +++ b/kernel/pom.xml @@ -30,46 +30,9 @@ ${project.basedir}/../ - - kernel-core - kernel-logger-logback - kernel-dataaccess-hibernate - kernel-idgenerator-prid - kernel-idgenerator-vid - kernel-idgenerator-tokenid - kernel-idgenerator-machineid - kernel-idgenerator-regcenterid - kernel-idgenerator-mispid - kernel-licensekeygenerator-misp - kernel-idgenerator-rid - kernel-idgenerator-partnerid - kernel-idvalidator-prid - kernel-idvalidator-rid - kernel-idvalidator-uin - kernel-idvalidator-vid - kernel-idvalidator-mispid - kernel-pinvalidator - kernel-templatemanager-velocity - kernel-pdfgenerator-itext - kernel-datamapper-orika - kernel-qrcodegenerator-zxing - kernel-cbeffutil-api - kernel-transliteration-icu4j - kernel-applicanttype-api - kernel-idobjectvalidator - - - - kernel-websubclient-api - kernel-otpmanager-service - kernel-notification-service - kernel-ridgenerator-service - kernel-idgenerator-service - kernel-pridgenerator-service - kernel-salt-generator - kernel-biosdk-provider - kernel-demographics-api - + + kernel-otpmanager-service + @@ -383,6 +346,164 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.0 + + ${skipTests} + false + + ${argLine} --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED --illegal-access=permit + + + + + + + + + + + + + + + + + + + + + + + + org.jacoco + jacoco-maven-plugin + 0.8.5 + + + report + + report-aggregate + + verify + + + + + 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 + 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 + + + + + diff --git a/pom.xml b/pom.xml deleted file mode 100644 index f3a01516..00000000 --- a/pom.xml +++ /dev/null @@ -1,266 +0,0 @@ - - - - 4.0.0 - io.mosip - commons - 1.2.1-SNAPSHOT - pom - - MOSIP Commons Parent POM - Mosip Commons Project - https://github.com/mosip/commons - - - - MPL 2.0 - https://www.mozilla.org/en-US/MPL/2.0/ - - - - scm:git:git://github.com/mosip/commons.git - scm:git:ssh://github.com:mosip/commons.git - https://github.com/mosip/commons - HEAD - - - - - Mosip - mosip.emailnotifier@gmail.com - io.mosip - https://github.com/mosip/commons - - - - - ossrh - Central Repository - https://oss.sonatype.org/content/repositories/snapshots - default - - true - - - - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - ${project.basedir}/../ - - - - - - org.jacoco - jacoco-maven-plugin - - - - prepare-agent - - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.0 - - ${skipTests} - false - - ${argLine} --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED --illegal-access=permit - - - - - - - - - - - - - - - - - - - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.5 - - - report - - report-aggregate - - verify - - - - - 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 - 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 - - - - - - - kernel - - - - sonar - - . - src/main/java/**,src/main/resources/** - ${sonar.coverage.exclusions} - https://sonarcloud.io - - - false - - - - - org.sonarsource.scanner.maven - sonar-maven-plugin - 3.7.0.1746 - - - verify - - sonar - - - - - - - - - From ec26ad2357d66772fb41edec4c344c358236a070 Mon Sep 17 00:00:00 2001 From: Mohd Kaif Siddique Date: Tue, 7 Nov 2023 15:16:40 +0530 Subject: [PATCH 2/6] modified changes in the pom Signed-off-by: Mohd Kaif Siddique --- db_scripts/mosip_kernel/ddl.sql | 7 - kernel/pom.xml | 764 +++++++++++++++----------------- 2 files changed, 347 insertions(+), 424 deletions(-) diff --git a/db_scripts/mosip_kernel/ddl.sql b/db_scripts/mosip_kernel/ddl.sql index 962a6347..da73eb91 100644 --- a/db_scripts/mosip_kernel/ddl.sql +++ b/db_scripts/mosip_kernel/ddl.sql @@ -1,11 +1,4 @@ \c mosip_kernel \ir ddl/kernel-otp_transaction.sql -\ir ddl/kernel-uin.sql -\ir ddl/kernel-vid.sql -\ir ddl/kernel-prid.sql -\ir ddl/kernel-uin_assigned.sql -\ir ddl/kernel-vid_assigned.sql - -\ir ddl/kernel-fk.sql diff --git a/kernel/pom.xml b/kernel/pom.xml index 02f93e7e..d03b27b2 100644 --- a/kernel/pom.xml +++ b/kernel/pom.xml @@ -9,7 +9,7 @@ kernel Parent project of MOSIP Kernel https://github.com/mosip/commons - + UTF-8 @@ -27,148 +27,292 @@ **/constant/**,**/config/**,**/httpfilter/**,**/cache/**,**/entity/**,**/model/**,**/exception/**,**/repository/**,**/verticle/**,**/spi/**,"**/proxy/**","**/entities/**","**/filter/**","**/util/**","**/verifier/**" **/dto/**,**/entity/**,**/config/** - ${project.basedir}/../ + ${project.basedir}/../ + + 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/ + + - - kernel-otpmanager-service - + + kernel-otpmanager-service + - - - ossrh - CentralRepository - https://oss.sonatype.org/content/repositories/snapshots - default - - true - - - - central - MavenCentral - default - https://repo1.maven.org/maven2 - - false - - - - - + + + ossrh + CentralRepository + https://oss.sonatype.org/content/repositories/snapshots + default + + true + + + + central + MavenCentral + default + https://repo1.maven.org/maven2 + + false + + + + + - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - - - - org.jacoco - jacoco-maven-plugin - ${maven.jacoco.version} - - - - prepare-agent - - - - - - + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven.surefire.plugin.version} - - ${skipTests} - false - - ${argLine} --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED --illegal-access=permit - - - - - - - - - - - - - - - - - - - - - - org.jacoco jacoco-maven-plugin + ${maven.jacoco.version} - report - report-aggregate + prepare-agent - verify - - org.apache.maven.plugins - maven-javadoc-plugin - ${maven.javadoc.version} - - none - - - - org.apache.maven.plugins - maven-jar-plugin - ${maven.jar.plugin.version} - - - - true - true - - - ${project.name} - ${project.version} - - - - - - org.apache.maven.plugins - maven-war-plugin - ${maven.war.plugin.version} - - - - true - true - - - ${project.name} - ${project.version} - - - - + + + + + + + + + + + + + + + + + + + + + + + + + org.jacoco + jacoco-maven-plugin + 0.8.5 + + + report + + report-aggregate + + verify + + + + + 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 + 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 + ${maven.surefire.plugin.version} + + ${skipTests} + false + + ${argLine} --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED --illegal-access=permit + + + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven.javadoc.version} + + none + + + + org.apache.maven.plugins + maven-jar-plugin + ${maven.jar.plugin.version} + + + + true + true + + + ${project.name} + ${project.version} + + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven.war.plugin.version} + + + + true + true + + + ${project.name} + ${project.version} + + + + org.apache.maven.plugins maven-javadoc-plugin @@ -187,138 +331,82 @@ ${maven.compiler.target} - - 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 - - + + 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-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-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 - - - - - - - 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 - - + + + Mosip + mosip.emailnotifier@gmail.com + io.mosip + https://github.com/mosip/commons + + sonar @@ -346,166 +434,8 @@ - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.0 - - ${skipTests} - false - - ${argLine} --add-opens java.xml/jdk.xml.internal=ALL-UNNAMED --illegal-access=permit - - - - - - - - - - - - - - - - - - - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.5 - - - report - - report-aggregate - - verify - - - - - 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 - 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 - - - - - - + \ No newline at end of file From fdfd5fa9e5ab208cfc3d85e15e82b7488acb1781 Mon Sep 17 00:00:00 2001 From: Mohd Kaif Siddique Date: Thu, 16 Nov 2023 19:26:30 +0530 Subject: [PATCH 3/6] added kernel-otpmanager library Signed-off-by: Mohd Kaif Siddique --- kernel/kernel-otpmanager-service/pom.xml | 111 +++--- .../resources/application-local.properties | 7 + .../OtpGeneratorControllerTest.java | 48 ++- .../test/exception/OtpExceptionTest.java | 96 ----- .../test/service/OtpGeneratorServiceTest.java | 80 ----- .../test/service/OtpValidationsTest.java | 135 ------- .../test/service/OtpValidatorServiceTest.java | 109 ------ kernel/kernel-otpmanager/pom.xml | 335 ++++++++++++++++++ .../src/main/java/META-INF/MANIFEST.MF | 3 + .../constant/OtpErrorConstants.java | 0 .../constant/OtpStatusConstants.java | 0 .../constant/SqlQueryConstants.java | 0 .../otpmanager/dto/AuthorizedRolesDto.java | 0 .../dto/GenerationDTOValidationLevels.java | 46 +-- .../dto/OtpGeneratorRequestDto.java | 0 .../dto/OtpGeneratorResponseDto.java | 0 .../dto/OtpValidatorResponseDto.java | 0 .../kernel/otpmanager/entity/OtpEntity.java | 0 .../exception/CryptoFailureException.java | 60 ++-- .../exception/OtpControllerAdvice.java | 0 .../otpmanager/exception/OtpIOException.java | 58 +-- .../OtpInvalidArgumentException.java | 0 .../exception/OtpServiceException.java | 32 +- .../RequiredKeyNotFoundException.java | 0 .../exception/ResourceNotFoundException.java | 0 .../otpmanager/repository/OtpRepository.java | 0 .../service/impl/CacheDatastoreImpl.java | 32 ++ .../otpmanager/service/impl/DataStore.java | 16 + .../service/impl/DatabaseDatastoreImpl.java | 37 ++ .../service/impl/OtpGeneratorServiceImpl.java | 195 +++++----- .../service/impl/OtpValidatorServiceImpl.java | 38 +- .../otpmanager/util/OtpManagerUtils.java | 0 .../kernel/otpmanager/util/OtpProvider.java | 122 +++---- .../otpmanager/util/PasscodeGenerator.java | 200 +++++------ .../main/resources/application-dev.properties | 27 ++ .../resources/application-local.properties | 46 +++ .../src/main/resources/bootstrap.properties | 36 ++ .../src/main/resources/logback.xml | 11 + .../src/main/resources/schema.sql | 1 + .../test/OtpmanagerTestBootApplication.java | 24 ++ .../test/service/OtpGeneratorServiceTest.java | 69 ++++ .../test/service/OtpValidatorServiceTest.java | 122 +++++++ .../otpmanager/test/util/OtpProviderTest.java | 48 +-- .../src/test/resources/application.properties | 66 ++++ .../src/test/resources/bootstrap.properties | 64 ++++ .../src/test/resources/logback.xml | 10 + kernel/pom.xml | 1 + 47 files changed, 1380 insertions(+), 905 deletions(-) delete mode 100644 kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/exception/OtpExceptionTest.java delete mode 100644 kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java delete mode 100644 kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidationsTest.java delete mode 100644 kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java create mode 100644 kernel/kernel-otpmanager/pom.xml create mode 100644 kernel/kernel-otpmanager/src/main/java/META-INF/MANIFEST.MF rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java (95%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java (96%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java (95%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java (96%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java (100%) create mode 100644 kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java create mode 100644 kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java create mode 100644 kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java (88%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java (92%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java (100%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java (97%) rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java (96%) create mode 100644 kernel/kernel-otpmanager/src/main/resources/application-dev.properties create mode 100644 kernel/kernel-otpmanager/src/main/resources/application-local.properties create mode 100644 kernel/kernel-otpmanager/src/main/resources/bootstrap.properties create mode 100644 kernel/kernel-otpmanager/src/main/resources/logback.xml create mode 100644 kernel/kernel-otpmanager/src/main/resources/schema.sql create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java rename kernel/{kernel-otpmanager-service => kernel-otpmanager}/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java (92%) create mode 100644 kernel/kernel-otpmanager/src/test/resources/application.properties create mode 100644 kernel/kernel-otpmanager/src/test/resources/bootstrap.properties create mode 100644 kernel/kernel-otpmanager/src/test/resources/logback.xml diff --git a/kernel/kernel-otpmanager-service/pom.xml b/kernel/kernel-otpmanager-service/pom.xml index dd15b28b..e240fff1 100644 --- a/kernel/kernel-otpmanager-service/pom.xml +++ b/kernel/kernel-otpmanager-service/pom.xml @@ -231,58 +231,58 @@ 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 @@ -294,6 +294,11 @@ + + io.mosip.kernel + kernel-otpmanager + 1.2.1-SNAPSHOT + @@ -497,7 +502,7 @@ io.mosip.kernel kernel-auth-adapter - ${project.version} + ${kernel.auth-adapter.version} diff --git a/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties b/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties index 36b3b5ff..b9372cea 100644 --- a/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties +++ b/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties @@ -25,6 +25,13 @@ auth.header.name=Authorization spring.h2.console.enabled=true +mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter +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'} +mosip.kernel.auth.proxy-otp=false +mosip.datastore.type=postgres + + + hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.jdbc.lob.non_contextual_creation=true 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 index 7eca43e1..87e0dc36 100644 --- 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 @@ -1,47 +1,39 @@ 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 io.mosip.kernel.core.http.RequestWrapper; +import io.mosip.kernel.core.http.ResponseWrapper; +import io.mosip.kernel.otpmanager.controller.OtpGeneratorController; +import io.mosip.kernel.otpmanager.dto.OtpGeneratorRequestDto; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; 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 + @Mock private OtpGeneratorServiceImpl service; - @WithUserDetails("individual") + @InjectMocks + private OtpGeneratorController otpGeneratorController; + @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"))); - } + dto.setOtp("3124"); + Mockito.when(service.getOtp(Mockito.any())).thenReturn(dto); + OtpGeneratorRequestDto requestDto = new OtpGeneratorRequestDto(); + RequestWrapper requestWrapper = new RequestWrapper(); + requestWrapper.setRequest(requestDto); + OtpGeneratorResponseDto responseDto = new OtpGeneratorResponseDto(); + responseDto.setOtp("3124"); + ResponseWrapper actualResponseWrapper = otpGeneratorController.generateOtp(requestWrapper); + Assert.assertEquals(responseDto, actualResponseWrapper.getResponse()); } } 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 0106da7c..00000000 --- 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 e21accd8..00000000 --- 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 e05e2008..00000000 --- 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 1bc1ad44..00000000 --- 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/pom.xml b/kernel/kernel-otpmanager/pom.xml new file mode 100644 index 00000000..5025eafe --- /dev/null +++ b/kernel/kernel-otpmanager/pom.xml @@ -0,0 +1,335 @@ + + + 4.0.0 + + io.mosip.kernel + kernel-otpmanager + 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 + 1.2.1-SNAPSHOT + 0.8.5 + 1.5.10 + + kernel-otpmanager + 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 + + + + + + + + org.springframework.boot + spring-boot-starter-cache + ${spring.boot.version} + + + org.springframework.boot + spring-boot-starter-data-redis + ${spring.boot.version} + + + + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + 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 + + + diff --git a/kernel/kernel-otpmanager/src/main/java/META-INF/MANIFEST.MF b/kernel/kernel-otpmanager/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 00000000..254272e1 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/constant/OtpErrorConstants.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/constant/OtpStatusConstants.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/constant/SqlQueryConstants.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/AuthorizedRolesDto.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java similarity index 95% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java index 439b4dec..a5eb1b83 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/GenerationDTOValidationLevels.java @@ -1,23 +1,23 @@ -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 { - } -} +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/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorRequestDto.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/OtpGeneratorResponseDto.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/dto/OtpValidatorResponseDto.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java similarity index 96% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java index 9c4373ae..9e09a6c5 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/CryptoFailureException.java @@ -1,30 +1,30 @@ -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); - } - -} +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/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpControllerAdvice.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java similarity index 95% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java index 8953ad76..1597bbd8 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpIOException.java @@ -1,29 +1,29 @@ -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); - } - -} +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/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpInvalidArgumentException.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java similarity index 96% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java index d647bf18..225fcf4f 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/OtpServiceException.java @@ -1,16 +1,16 @@ -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); - } - -} +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/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/RequiredKeyNotFoundException.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/exception/ResourceNotFoundException.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/repository/OtpRepository.java diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java new file mode 100644 index 00000000..7e501e1b --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java @@ -0,0 +1,32 @@ +package io.mosip.kernel.otpmanager.service.impl; + +import io.mosip.kernel.otpmanager.entity.OtpEntity; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import java.util.Map; + + +@ConditionalOnProperty(name = "mosip.datastore.type", havingValue = "cache") +@Component +public class CacheDatastoreImpl implements DataStore{ + @Override + public void saveOtp(OtpEntity otpEntity) { + + } + + @Override + public OtpEntity findOtpByKey(String key) { + return null; + } + + @Override + public void deleteOtpByKey(String key) { + + } + + @Override + public void updateOtp(String querry, Map updateMap) { + + } +} diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java new file mode 100644 index 00000000..982a79f1 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java @@ -0,0 +1,16 @@ +package io.mosip.kernel.otpmanager.service.impl; + +import io.mosip.kernel.otpmanager.entity.OtpEntity; + +import java.util.Map; + +public interface DataStore { + + public void saveOtp(OtpEntity otpEntity); + + public OtpEntity findOtpByKey(String key); + + public void deleteOtpByKey(String key); + + public void updateOtp(String querry, Map updateMap); +} diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java new file mode 100644 index 00000000..09ddb1a8 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java @@ -0,0 +1,37 @@ +package io.mosip.kernel.otpmanager.service.impl; + +import io.mosip.kernel.otpmanager.entity.OtpEntity; +import io.mosip.kernel.otpmanager.repository.OtpRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@ConditionalOnProperty(name = "mosip.datastore.type", havingValue = "postgres") +@Component +public class DatabaseDatastoreImpl implements DataStore{ + + @Autowired + private OtpRepository otpRepository; + + @Override + public void saveOtp(OtpEntity otpEntity) { + otpRepository.save(otpEntity); + } + + @Override + public OtpEntity findOtpByKey(String key) { + return otpRepository.findById(OtpEntity.class,key); + } + + @Override + public void deleteOtpByKey(String key) { + + } + + @Override + public void updateOtp(String querry, Map updateMap) { + + } +} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java similarity index 88% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java index a5f9798a..149f96f7 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java @@ -1,94 +1,101 @@ -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; - } -} +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.cache.annotation.Cacheable; +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.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 OtpProvider otpProvider; + + @Autowired + DataStore dataStore; + + @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. + */ + // keyCheck = otpRepository.findById(OtpEntity.class, otpDto.getKey()); + OtpEntity keyCheck=getOtpEntityById(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); + dataStore.saveOtp(otp); + response.setOtp(generatedOtp); + response.setStatus(OtpStatusConstants.GENERATION_SUCCESSFUL.getProperty()); + } + return response; + } + + @Cacheable(value = "otpCache", key = "#otpDto.key") + private OtpEntity getOtpEntityById(String key){ + return dataStore.findOtpByKey(key); + } +} diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java similarity index 92% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java index c7850308..245e7d59 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java @@ -21,7 +21,6 @@ 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; /** @@ -35,11 +34,9 @@ @RefreshScope @Service public class OtpValidatorServiceImpl implements OtpValidator> { - /** - * The reference that autowires OtpRepository. - */ + @Autowired - OtpRepository otpRepository; + DataStore dataStore; /** * The reference that autowires OtpManagerUtils. @@ -64,13 +61,7 @@ public class OtpValidatorServiceImpl implements OtpValidator validateOtp(String key, String otp) { ResponseEntity validationResponseEntity; @@ -82,7 +73,7 @@ public ResponseEntity validateOtp(String key, String ot OtpValidatorResponseDto responseDto; // The OTP entity for a specific key. - OtpEntity otpResponse = otpRepository.findById(OtpEntity.class, key); + OtpEntity otpResponse = dataStore.findOtpByKey(key); responseDto = new OtpValidatorResponseDto(); responseDto.setMessage(OtpStatusConstants.FAILURE_MESSAGE.getProperty()); responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); @@ -108,7 +99,8 @@ public ResponseEntity validateOtp(String key, String ot + "upd_dtimes = :newValidationTime WHERE id=:id"; HashMap updateMap = createUpdateMap(key, null, attemptCount + 1, LocalDateTime.now(ZoneId.of("UTC"))); - updateData(updateString, updateMap); + + dataStore.updateOtp(updateString,updateMap); } /* * This condition freezes the key for a certain time, if the validation attempt @@ -121,7 +113,7 @@ public ResponseEntity validateOtp(String key, String ot + "validation_retry_count = :newNumOfAttempt WHERE id=:id"; HashMap updateMap = createUpdateMap(key, OtpStatusConstants.KEY_FREEZED.getProperty(), 0, OtpManagerUtils.getCurrentLocalDateTime()); - updateData(updateString, updateMap); + dataStore.updateOtp(updateString,updateMap); responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); @@ -143,7 +135,8 @@ public ResponseEntity validateOtp(String key, String ot OtpManagerUtils.getCurrentLocalDateTime())) <= (Integer.parseInt(otpExpiryLimit))))) { responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); - otpRepository.deleteById(key); + //otpRepository.deleteById(key); + dataStore.deleteOtpByKey(key); return new ResponseEntity<>(responseDto, HttpStatus.OK); } return validationResponseEntity; @@ -208,9 +201,9 @@ private ResponseEntity unFreezeKey(String key, String o responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - otpRepository.deleteById(key); + dataStore.deleteOtpByKey(key); } else { - updateData(updateString, updateMap); + dataStore.updateOtp(updateString,updateMap); } } else { responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); @@ -247,13 +240,4 @@ private HashMap createUpdateMap(String key, String status, Integ 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/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java similarity index 100% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/util/OtpManagerUtils.java diff --git a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java similarity index 97% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java index 3504cc2b..d9f053fe 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/util/OtpProvider.java @@ -1,61 +1,61 @@ -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); - } - } -} +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/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java similarity index 96% rename from kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java index 85729a6d..6bfe8468 100644 --- a/kernel/kernel-otpmanager-service/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/util/PasscodeGenerator.java @@ -1,100 +1,100 @@ -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; - } -} +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/src/main/resources/application-dev.properties b/kernel/kernel-otpmanager/src/main/resources/application-dev.properties new file mode 100644 index 00000000..5896e03a --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/resources/application-dev.properties @@ -0,0 +1,27 @@ +#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/src/main/resources/application-local.properties b/kernel/kernel-otpmanager/src/main/resources/application-local.properties new file mode 100644 index 00000000..08056c61 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/resources/application-local.properties @@ -0,0 +1,46 @@ +##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 +# +#mosip.datastore.type=postgres +#mosip.service-context=/v1/otpmanager +#mosip.service.end-points=/**/* +#mosip.service.exclude.auth.allowed.method=GET,POST \ No newline at end of file diff --git a/kernel/kernel-otpmanager/src/main/resources/bootstrap.properties b/kernel/kernel-otpmanager/src/main/resources/bootstrap.properties new file mode 100644 index 00000000..437ff417 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/resources/bootstrap.properties @@ -0,0 +1,36 @@ +#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/src/main/resources/logback.xml b/kernel/kernel-otpmanager/src/main/resources/logback.xml new file mode 100644 index 00000000..150c6224 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/resources/logback.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/kernel/kernel-otpmanager/src/main/resources/schema.sql b/kernel/kernel-otpmanager/src/main/resources/schema.sql new file mode 100644 index 00000000..297520e3 --- /dev/null +++ b/kernel/kernel-otpmanager/src/main/resources/schema.sql @@ -0,0 +1 @@ +CREATE SCHEMA IF NOT EXISTS kernel; \ No newline at end of file diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java new file mode 100644 index 00000000..8092387b --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/OtpmanagerTestBootApplication.java @@ -0,0 +1,24 @@ +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/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java new file mode 100644 index 00000000..40531d6c --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java @@ -0,0 +1,69 @@ +package io.mosip.kernel.otpmanager.test.service; + + +import java.time.LocalDateTime; + +import io.mosip.kernel.otpmanager.dto.OtpGeneratorResponseDto; +import io.mosip.kernel.otpmanager.service.impl.DataStore; +import io.mosip.kernel.otpmanager.service.impl.OtpGeneratorServiceImpl; +import io.mosip.kernel.otpmanager.util.OtpProvider; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; +import io.mosip.kernel.core.http.RequestWrapper; +import io.mosip.kernel.otpmanager.dto.OtpGeneratorRequestDto; +import io.mosip.kernel.otpmanager.entity.OtpEntity; +@RunWith(SpringRunner.class) +public class OtpGeneratorServiceTest { + + @Mock + DataStore dataStore; + + @Mock + OtpProvider otpProvider; + + @InjectMocks + OtpGeneratorServiceImpl otpGeneratorService; + + @Test + public void testOtpGenerationFreezedCase() throws Exception { + ReflectionTestUtils.setField(otpGeneratorService,"keyFreezeTime","500"); + 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"); + + OtpEntity otpEntity=new OtpEntity(); + otpEntity.setId("123"); + otpEntity.setStatusCode("KEY_FREEZED"); + otpEntity.setUpdatedDtimes(LocalDateTime.now()); + +// Mockito.when(repository.findById(Mockito.any(),Mockito.anyString())).thenReturn(otpEntity); + Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(otpEntity); + + otpGeneratorService.getOtp(otpGeneratorRequestDto); + + } + + @Test + public void testOtpGeneratorServicePositiveCase() throws Exception { + ReflectionTestUtils.setField(otpGeneratorService,"macAlgorithm","SHA257"); + ReflectionTestUtils.setField(otpGeneratorService,"otpLength",6); + OtpGeneratorRequestDto otpGeneratorRequestDto = new OtpGeneratorRequestDto(); + otpGeneratorRequestDto.setKey("testKey"); + + Mockito.when(otpProvider.computeOtp(Mockito.anyString(),Mockito.anyInt(),Mockito.anyString())).thenReturn("123456"); + OtpGeneratorResponseDto otp = otpGeneratorService.getOtp(otpGeneratorRequestDto); + Assert.assertEquals(otp.getOtp(),"123456"); + Assert.assertEquals(otp.getStatus(),"GENERATION_SUCCESSFUL"); + } +} diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java new file mode 100644 index 00000000..73432d7c --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java @@ -0,0 +1,122 @@ +package io.mosip.kernel.otpmanager.test.service; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; + +import io.mosip.kernel.otpmanager.service.impl.DataStore; +import io.mosip.kernel.otpmanager.service.impl.OtpValidatorServiceImpl; +import io.mosip.kernel.otpmanager.util.OtpManagerUtils; +import io.mosip.kernel.otpmanager.util.OtpProvider; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; + +import io.mosip.kernel.otpmanager.entity.OtpEntity; +import io.mosip.kernel.otpmanager.repository.OtpRepository; +import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; + +@RunWith(SpringRunner.class) +public class OtpValidatorServiceTest { + + + @Mock + DataStore dataStore; + + @Mock + OtpProvider provider; + + @Mock + OtpManagerUtils otpManagerUtils; + + @InjectMocks + OtpValidatorServiceImpl otpValidatorService; + + + @Test + public void testOtpValidatorServiceWhenMaxAttemptReached() throws Exception { + ReflectionTestUtils.setField(otpValidatorService,"activeProfile","main"); + ReflectionTestUtils.setField(otpValidatorService,"otpExpiryLimit","2000"); + ReflectionTestUtils.setField(otpValidatorService,"numberOfValidationAttemptsAllowed","3"); + OtpEntity entity = new OtpEntity(); + entity.setOtp("1234"); + entity.setId("12345"); + entity.setValidationRetryCount(3); + entity.setStatusCode("OTP_UNUSED"); + entity.setValidationRetryCount(0); + entity.setUpdatedDtimes(LocalDateTime.now()); + Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + otpValidatorService.validateOtp("12345","123456"); + } + + @Test + public void testOtpValidatorServiceWhenKeyFreezedPositiveCase() throws Exception { + ReflectionTestUtils.setField(otpValidatorService,"activeProfile","main"); + ReflectionTestUtils.setField(otpValidatorService,"otpExpiryLimit","20000"); + ReflectionTestUtils.setField(otpValidatorService,"numberOfValidationAttemptsAllowed","1"); + OtpEntity entity = new OtpEntity(); + entity.setOtp("1234"); + entity.setId("testKey"); + entity.setValidationRetryCount(0); + entity.setStatusCode("KEY_FREEZED"); + entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC")).minus(1, ChronoUnit.MINUTES)); + Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + otpValidatorService.validateOtp("12345","123456"); + } + + @Test + public void testOtpValidatorServiceWhenKeyFreezedPostiveCase() throws Exception { + ReflectionTestUtils.setField(otpValidatorService,"activeProfile","main"); + ReflectionTestUtils.setField(otpValidatorService,"otpExpiryLimit","20000"); + ReflectionTestUtils.setField(otpValidatorService,"numberOfValidationAttemptsAllowed","0"); + ReflectionTestUtils.setField(otpValidatorService,"keyFreezeDuration","0"); + OtpEntity entity = new OtpEntity(); + entity.setOtp("1234"); + entity.setId("12345"); + entity.setValidationRetryCount(0); + entity.setStatusCode("KEY_FREEZED"); + entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC"))); + Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + otpValidatorService.validateOtp("12345","1234"); + } + + @Test + public void testOtpValidatorServiceWhenKeyUnUsedNegativeCase() throws Exception { + ReflectionTestUtils.setField(otpValidatorService,"activeProfile","main"); + ReflectionTestUtils.setField(otpValidatorService,"otpExpiryLimit","20000"); + ReflectionTestUtils.setField(otpValidatorService,"numberOfValidationAttemptsAllowed","0"); + ReflectionTestUtils.setField(otpValidatorService,"keyFreezeDuration","0"); + OtpEntity entity = new OtpEntity(); + entity.setOtp("1234"); + entity.setId("12345"); + entity.setValidationRetryCount(0); + entity.setStatusCode("OTP_UNUSED"); + entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC"))); + Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + otpValidatorService.validateOtp("12345","1234"); + } + + @Test + public void testOtpValidatorServiceWithLocalProfile() throws Exception { + + ReflectionTestUtils.setField(otpValidatorService,"otpExpiryLimit","20000"); + ReflectionTestUtils.setField(otpValidatorService,"numberOfValidationAttemptsAllowed","0"); + ReflectionTestUtils.setField(otpValidatorService,"activeProfile","local"); + ReflectionTestUtils.setField(otpValidatorService,"localOtp","111111"); + OtpEntity entity = new OtpEntity(); + entity.setOtp("1234"); + entity.setId("12345"); + entity.setValidationRetryCount(0); + entity.setStatusCode("OTP_UNUSED"); + entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC"))); + Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + otpValidatorService.validateOtp("12345","1234"); + entity.setOtp("111111"); + otpValidatorService.validateOtp("12345","111111"); + } +} diff --git a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java similarity index 92% rename from kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java rename to kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java index 24420fd3..71817094 100644 --- a/kernel/kernel-otpmanager-service/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/util/OtpProviderTest.java @@ -1,24 +1,24 @@ -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"); - } - -} +package io.mosip.kernel.otpmanager.test.util; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +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; + +@RunWith(SpringRunner.class) +public class OtpProviderTest { + + @InjectMocks + private OtpProvider provider; + + @Test(expected = CryptoFailureException.class) + public void getSigningExceptionTest() { + provider.computeOtp("98989898999", 6, "nsjkbdcdj"); + } + +} diff --git a/kernel/kernel-otpmanager/src/test/resources/application.properties b/kernel/kernel-otpmanager/src/test/resources/application.properties new file mode 100644 index 00000000..3b284ad5 --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/resources/application.properties @@ -0,0 +1,66 @@ +# 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/src/test/resources/bootstrap.properties b/kernel/kernel-otpmanager/src/test/resources/bootstrap.properties new file mode 100644 index 00000000..293878bc --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/resources/bootstrap.properties @@ -0,0 +1,64 @@ +# 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/src/test/resources/logback.xml b/kernel/kernel-otpmanager/src/test/resources/logback.xml new file mode 100644 index 00000000..7285a15d --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/resources/logback.xml @@ -0,0 +1,10 @@ + + + + %d [%t] %p [%C{1}].%M.%L : %m%n + + + + + + \ No newline at end of file diff --git a/kernel/pom.xml b/kernel/pom.xml index d03b27b2..4865bace 100644 --- a/kernel/pom.xml +++ b/kernel/pom.xml @@ -44,6 +44,7 @@ kernel-otpmanager-service + kernel-otpmanager From c7b6ac5deceb71419a6d6471ab0e83701d448211 Mon Sep 17 00:00:00 2001 From: Mohd Kaif Siddique Date: Thu, 16 Nov 2023 19:34:05 +0530 Subject: [PATCH 4/6] remove extra commnet from pom Signed-off-by: Mohd Kaif Siddique --- kernel/kernel-otpmanager-service/pom.xml | 52 ------------------------ 1 file changed, 52 deletions(-) diff --git a/kernel/kernel-otpmanager-service/pom.xml b/kernel/kernel-otpmanager-service/pom.xml index e240fff1..8878d959 100644 --- a/kernel/kernel-otpmanager-service/pom.xml +++ b/kernel/kernel-otpmanager-service/pom.xml @@ -231,58 +231,6 @@ https://github.com/mosip/commons - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.googlecode.json-simple json-simple From ae6a4f749d5d6ed057a60c6d9250a03b4cc12cf8 Mon Sep 17 00:00:00 2001 From: Mohd Kaif Siddique Date: Tue, 21 Nov 2023 19:15:18 +0530 Subject: [PATCH 5/6] added cache implementation Signed-off-by: Mohd Kaif Siddique --- .../otpmanager/OtpmanagerBootApplication.java | 2 + .../resources/application-local.properties | 4 +- .../src/main/resources/bootstrap.properties | 2 + .../OtpValidatorControllerTest.java | 2 - kernel/kernel-otpmanager/pom.xml | 7 --- .../kernel/otpmanager/entity/OtpEntity.java | 3 +- .../service/impl/CacheDatastoreImpl.java | 39 +++++++++++++-- .../service/impl/DatabaseDatastoreImpl.java | 22 +++++++-- .../service/impl/OtpGeneratorServiceImpl.java | 15 +----- .../service/impl/OtpValidatorServiceImpl.java | 31 +++++------- .../test/service/CacheDatastoreImplTest.java | 49 +++++++++++++++++++ .../service/DatabaseDatastoreimplTest.java | 26 ++++++++++ 12 files changed, 151 insertions(+), 51 deletions(-) create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java 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 index 738ebd24..6855ef15 100644 --- 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 @@ -2,6 +2,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; /** * OTP Manager Application @@ -13,6 +14,7 @@ */ @SpringBootApplication(scanBasePackages = { "io.mosip.kernel.otpmanager.*", "${mosip.auth.adapter.impl.basepackage}", "io.mosip.kernel.core.logger.config" }) +@EnableCaching public class OtpmanagerBootApplication { /** diff --git a/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties b/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties index b9372cea..c7594952 100644 --- a/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties +++ b/kernel/kernel-otpmanager-service/src/main/resources/application-local.properties @@ -28,8 +28,10 @@ spring.h2.console.enabled=true mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter 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'} mosip.kernel.auth.proxy-otp=false -mosip.datastore.type=postgres +#set the datastore +mosip.datastore.type=cache +mosip.datastore.cache.name=otpEntity diff --git a/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties b/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties index f3ac9152..0934450a 100644 --- a/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties +++ b/kernel/kernel-otpmanager-service/src/main/resources/bootstrap.properties @@ -34,3 +34,5 @@ openapi.service.servers[0].description=OTP Manager Service springdoc.swagger-ui.disable-swagger-default-url=true spring.mvc.servlet.path=${server.servlet.path} +server.servlet.context-path=/v1/otpmanager + 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 index dcd8c177..ee334e7d 100644 --- 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 @@ -19,9 +19,7 @@ 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; diff --git a/kernel/kernel-otpmanager/pom.xml b/kernel/kernel-otpmanager/pom.xml index 5025eafe..5c8af872 100644 --- a/kernel/kernel-otpmanager/pom.xml +++ b/kernel/kernel-otpmanager/pom.xml @@ -293,13 +293,6 @@ spring-boot-starter-cache ${spring.boot.version} - - org.springframework.boot - spring-boot-starter-data-redis - ${spring.boot.version} - - - diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java index 08fb624c..f78e6bb3 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/entity/OtpEntity.java @@ -1,5 +1,6 @@ package io.mosip.kernel.otpmanager.entity; +import java.io.Serializable; import java.time.LocalDateTime; import java.time.ZoneId; @@ -22,7 +23,7 @@ @Entity @Data @Table(name = "otp_transaction", schema = "kernel") -public class OtpEntity { +public class OtpEntity implements Serializable { /** * The variable that holds the unique ID. */ diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java index 7e501e1b..547fa4f1 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java @@ -1,32 +1,65 @@ package io.mosip.kernel.otpmanager.service.impl; +import io.mosip.kernel.core.util.StringUtils; +import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; import io.mosip.kernel.otpmanager.entity.OtpEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cache.CacheManager; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; import java.util.Map; @ConditionalOnProperty(name = "mosip.datastore.type", havingValue = "cache") @Component public class CacheDatastoreImpl implements DataStore{ + @Autowired + CacheManager cacheManager; + + + @Value("${mosip.datastore.cache.name}") + String cache; + @Override public void saveOtp(OtpEntity otpEntity) { + cacheManager.getCache(cache).put(otpEntity.getId(),otpEntity); } @Override public OtpEntity findOtpByKey(String key) { - return null; + return cacheManager.getCache(cache).get(key,OtpEntity.class); } @Override public void deleteOtpByKey(String key) { - + cacheManager.getCache(cache).evict(key); } @Override - public void updateOtp(String querry, Map updateMap) { + public void updateOtp(String query, Map updateMap) { + OtpEntity otpEntity = cacheManager.getCache(cache).get(updateMap.get(SqlQueryConstants.ID.getProperty()).toString(), OtpEntity.class); + for(String key: updateMap.keySet()){ + if (StringUtils.equals(key,SqlQueryConstants.ID.getProperty())) { + otpEntity.setId(key); + continue; + } + if (StringUtils.equals(key,SqlQueryConstants.NEW_OTP_STATUS.getProperty())) { + otpEntity.setStatusCode(updateMap.get(SqlQueryConstants.NEW_OTP_STATUS.getProperty()).toString()); + continue; + } + if (StringUtils.equals(key,SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty())) { + otpEntity.setValidationRetryCount(Integer.parseInt(updateMap.get(SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty()).toString())); + continue; + } + if (StringUtils.equals(key,SqlQueryConstants.NEW_VALIDATION_TIME.getProperty())) { + otpEntity.setUpdatedDtimes((LocalDateTime) updateMap.get(SqlQueryConstants.NEW_VALIDATION_TIME.getProperty())); + } + } + cacheManager.getCache(cache).put(otpEntity.getId(),otpEntity); } } diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java index 09ddb1a8..43ece845 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java @@ -1,5 +1,7 @@ package io.mosip.kernel.otpmanager.service.impl; +import io.mosip.kernel.core.util.StringUtils; +import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; import io.mosip.kernel.otpmanager.entity.OtpEntity; import io.mosip.kernel.otpmanager.repository.OtpRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -12,6 +14,10 @@ @Component public class DatabaseDatastoreImpl implements DataStore{ + private final String UPDATE_OTP_STATUS = "updateOtpStatus"; + + private final String UPDATE_OTP_ATTEMPT = "updateOtpAttempt"; + @Autowired private OtpRepository otpRepository; @@ -27,11 +33,21 @@ public OtpEntity findOtpByKey(String key) { @Override public void deleteOtpByKey(String key) { - + otpRepository.deleteById(key); } @Override - public void updateOtp(String querry, Map updateMap) { - + public void updateOtp(String query, Map updateMap) { + String updateString; + if(StringUtils.equals(query,UPDATE_OTP_ATTEMPT)) { + updateString = SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() + + " SET status_code = :newOtpStatus," + "upd_dtimes = :newValidationTime," + + "validation_retry_count = :newNumOfAttempt WHERE id=:id"; + }else { + updateString=SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() + + " SET validation_retry_count = :newNumOfAttempt," + + "upd_dtimes = :newValidationTime WHERE id=:id"; + } + otpRepository.createQueryUpdateOrDelete(updateString, updateMap); } } diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java index 149f96f7..9b1bbe00 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java @@ -3,11 +3,8 @@ 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.cache.annotation.Cacheable; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Service; @@ -30,10 +27,6 @@ @RefreshScope @Service public class OtpGeneratorServiceImpl implements OtpGenerator { - /** - * The reference that autowires OtpRepository class. - */ - private static final Logger LOGGER = LoggerFactory.getLogger(OtpGeneratorServiceImpl.class); @Autowired private OtpProvider otpProvider; @@ -73,8 +66,7 @@ public OtpGeneratorResponseDto getOtp(OtpGeneratorRequestDto otpDto) { /* * Checking whether the key exists in the repository. */ - // keyCheck = otpRepository.findById(OtpEntity.class, otpDto.getKey()); - OtpEntity keyCheck=getOtpEntityById(otpDto.getKey()); + OtpEntity keyCheck=dataStore.findOtpByKey(otpDto.getKey()); if ((keyCheck != null) && (keyCheck.getStatusCode().equals(OtpStatusConstants.KEY_FREEZED.getProperty())) && (OtpManagerUtils.timeDifferenceInSeconds(keyCheck.getUpdatedDtimes(), LocalDateTime.now(ZoneId.of("UTC"))) <= Integer.parseInt(keyFreezeTime))) { @@ -93,9 +85,4 @@ public OtpGeneratorResponseDto getOtp(OtpGeneratorRequestDto otpDto) { } return response; } - - @Cacheable(value = "otpCache", key = "#otpDto.key") - private OtpEntity getOtpEntityById(String key){ - return dataStore.findOtpByKey(key); - } } diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java index 245e7d59..e4f6699d 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpValidatorServiceImpl.java @@ -62,6 +62,10 @@ public class OtpValidatorServiceImpl implements OtpValidator validateOtp(String key, String otp) { ResponseEntity validationResponseEntity; @@ -80,10 +84,9 @@ public ResponseEntity validateOtp(String key, String ot 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(); + //checking the expiry if ((OtpManagerUtils.timeDifferenceInSeconds(otpResponse.getGeneratedDtimes(), OtpManagerUtils.getCurrentLocalDateTime())) > (Integer.parseInt(otpExpiryLimit))) { @@ -94,13 +97,10 @@ public ResponseEntity validateOtp(String key, String ot // 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"))); - dataStore.updateOtp(updateString,updateMap); + dataStore.updateOtp(UPDATE_OTP_ATTEMPT,updateMap); } /* * This condition freezes the key for a certain time, if the validation attempt @@ -108,12 +108,9 @@ public ResponseEntity validateOtp(String key, String ot */ 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()); - dataStore.updateOtp(updateString,updateMap); + dataStore.updateOtp(UPDATE_OTP_STATUS,updateMap); responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); @@ -135,7 +132,6 @@ public ResponseEntity validateOtp(String key, String ot OtpManagerUtils.getCurrentLocalDateTime())) <= (Integer.parseInt(otpExpiryLimit))))) { responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); - //otpRepository.deleteById(key); dataStore.deleteOtpByKey(key); return new ResponseEntity<>(responseDto, HttpStatus.OK); } @@ -162,14 +158,13 @@ private ResponseEntity proxyForLocalProfile(String 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; } + validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); + return validationResponseEntity; } /** @@ -188,13 +183,9 @@ private ResponseEntity proxyForLocalProfile(String otp) 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())) { @@ -203,7 +194,7 @@ private ResponseEntity unFreezeKey(String key, String o validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); dataStore.deleteOtpByKey(key); } else { - dataStore.updateOtp(updateString,updateMap); + dataStore.updateOtp(UPDATE_OTP_STATUS,updateMap); } } else { responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java new file mode 100644 index 00000000..04a6e100 --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java @@ -0,0 +1,49 @@ +package io.mosip.kernel.otpmanager.test.service; + + +import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; +import io.mosip.kernel.otpmanager.entity.OtpEntity; +import io.mosip.kernel.otpmanager.service.impl.CacheDatastoreImpl; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +@RunWith(SpringRunner.class) +public class CacheDatastoreImplTest { + + @Mock + CacheManager cacheManager; + + @InjectMocks + CacheDatastoreImpl cacheDatastore; + + @Mock + Cache cache; + + @Test + public void testUpdateOtp() { + ReflectionTestUtils.setField(cacheDatastore,"cache","123"); + OtpEntity otpEntity = new OtpEntity(); + otpEntity.setId("123"); + Mockito.when(cache.get("123", OtpEntity.class)).thenReturn(otpEntity); + + Map updateMap = new HashMap<>(); + updateMap.put(SqlQueryConstants.ID.getProperty(), "123"); + updateMap.put(SqlQueryConstants.NEW_OTP_STATUS.getProperty(), "ACTIVE"); + updateMap.put(SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty(), "3"); + updateMap.put(SqlQueryConstants.NEW_VALIDATION_TIME.getProperty(), LocalDateTime.now()); + + Mockito.when(cacheManager.getCache(Mockito.anyString())).thenReturn(cache); + Mockito.when(cache.get("123",OtpEntity.class)).thenReturn(otpEntity); + cacheDatastore.updateOtp("UPDATE OTP", updateMap); + } +} diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java new file mode 100644 index 00000000..5b0ff2fe --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java @@ -0,0 +1,26 @@ +package io.mosip.kernel.otpmanager.test.service; + +import io.mosip.kernel.otpmanager.repository.OtpRepository; +import io.mosip.kernel.otpmanager.service.impl.DatabaseDatastoreImpl; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +public class DatabaseDatastoreimplTest { + + @Mock + private OtpRepository otpRepository; + + @InjectMocks + private DatabaseDatastoreImpl databaseDatastore; + + @Test + public void updateOtpTest() { + databaseDatastore.updateOtp("updateOtpStatus", null); + databaseDatastore.updateOtp("updateOtpAttempt", null); + } + +} From 230a9257a6d76d7b15a849d9a96a46a8de50e81a Mon Sep 17 00:00:00 2001 From: Mohd Kaif Siddique Date: Thu, 23 Nov 2023 18:38:14 +0530 Subject: [PATCH 6/6] changes the service name Signed-off-by: Mohd Kaif Siddique --- ...DataStore.java => PersistenceService.java} | 6 +- ....java => CachePersistenceServiceImpl.java} | 5 +- ...va => DatabasePersistenceServiceImpl.java} | 16 ++-- .../service/impl/OtpGeneratorServiceImpl.java | 7 +- .../service/impl/OtpValidatorServiceImpl.java | 15 ++-- .../test/service/CacheDatastoreImplTest.java | 49 ---------- .../CachePersistenceServiceImplTest.java | 89 +++++++++++++++++++ .../service/DatabaseDatastoreimplTest.java | 26 ------ .../DatabasePersistenceServiceImplTest.java | 61 +++++++++++++ .../test/service/OtpGeneratorServiceTest.java | 6 +- .../test/service/OtpValidatorServiceTest.java | 17 ++-- 11 files changed, 186 insertions(+), 111 deletions(-) rename kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/{impl/DataStore.java => PersistenceService.java} (59%) rename kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/{CacheDatastoreImpl.java => CachePersistenceServiceImpl.java} (92%) rename kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/{DatabaseDatastoreImpl.java => DatabasePersistenceServiceImpl.java} (73%) delete mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CachePersistenceServiceImplTest.java delete mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java create mode 100644 kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabasePersistenceServiceImplTest.java diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/PersistenceService.java similarity index 59% rename from kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/PersistenceService.java index 982a79f1..4d2f0457 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DataStore.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/PersistenceService.java @@ -1,10 +1,10 @@ -package io.mosip.kernel.otpmanager.service.impl; +package io.mosip.kernel.otpmanager.service; import io.mosip.kernel.otpmanager.entity.OtpEntity; import java.util.Map; -public interface DataStore { +public interface PersistenceService { public void saveOtp(OtpEntity otpEntity); @@ -12,5 +12,5 @@ public interface DataStore { public void deleteOtpByKey(String key); - public void updateOtp(String querry, Map updateMap); + public void updateOtp(Map updateMap); } diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CachePersistenceServiceImpl.java similarity index 92% rename from kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CachePersistenceServiceImpl.java index 547fa4f1..29df15e2 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CacheDatastoreImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/CachePersistenceServiceImpl.java @@ -3,6 +3,7 @@ import io.mosip.kernel.core.util.StringUtils; import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; import io.mosip.kernel.otpmanager.entity.OtpEntity; +import io.mosip.kernel.otpmanager.service.PersistenceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -15,7 +16,7 @@ @ConditionalOnProperty(name = "mosip.datastore.type", havingValue = "cache") @Component -public class CacheDatastoreImpl implements DataStore{ +public class CachePersistenceServiceImpl implements PersistenceService { @Autowired CacheManager cacheManager; @@ -40,7 +41,7 @@ public void deleteOtpByKey(String key) { } @Override - public void updateOtp(String query, Map updateMap) { + public void updateOtp(Map updateMap) { OtpEntity otpEntity = cacheManager.getCache(cache).get(updateMap.get(SqlQueryConstants.ID.getProperty()).toString(), OtpEntity.class); for(String key: updateMap.keySet()){ diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabasePersistenceServiceImpl.java similarity index 73% rename from kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java rename to kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabasePersistenceServiceImpl.java index 43ece845..af8561da 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabaseDatastoreImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/DatabasePersistenceServiceImpl.java @@ -1,9 +1,9 @@ package io.mosip.kernel.otpmanager.service.impl; -import io.mosip.kernel.core.util.StringUtils; import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; import io.mosip.kernel.otpmanager.entity.OtpEntity; import io.mosip.kernel.otpmanager.repository.OtpRepository; +import io.mosip.kernel.otpmanager.service.PersistenceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; @@ -12,7 +12,7 @@ @ConditionalOnProperty(name = "mosip.datastore.type", havingValue = "postgres") @Component -public class DatabaseDatastoreImpl implements DataStore{ +public class DatabasePersistenceServiceImpl implements PersistenceService { private final String UPDATE_OTP_STATUS = "updateOtpStatus"; @@ -37,16 +37,16 @@ public void deleteOtpByKey(String key) { } @Override - public void updateOtp(String query, Map updateMap) { + public void updateOtp(Map updateMap) { String updateString; - if(StringUtils.equals(query,UPDATE_OTP_ATTEMPT)) { + if(updateMap.containsKey(SqlQueryConstants.NEW_OTP_STATUS.getProperty())){ updateString = SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() + " SET status_code = :newOtpStatus," + "upd_dtimes = :newValidationTime," + "validation_retry_count = :newNumOfAttempt WHERE id=:id"; - }else { - updateString=SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() - + " SET validation_retry_count = :newNumOfAttempt," - + "upd_dtimes = :newValidationTime WHERE id=:id"; + }else{ + updateString=SqlQueryConstants.UPDATE.getProperty() + " " + OtpEntity.class.getSimpleName() + + " SET validation_retry_count = :newNumOfAttempt," + + "upd_dtimes = :newValidationTime WHERE id=:id"; } otpRepository.createQueryUpdateOrDelete(updateString, updateMap); } diff --git a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java index 9b1bbe00..cf8126dc 100644 --- a/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java +++ b/kernel/kernel-otpmanager/src/main/java/io/mosip/kernel/otpmanager/service/impl/OtpGeneratorServiceImpl.java @@ -3,6 +3,7 @@ import java.time.LocalDateTime; import java.time.ZoneId; +import io.mosip.kernel.otpmanager.service.PersistenceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; @@ -32,7 +33,7 @@ public class OtpGeneratorServiceImpl implements OtpGenerator> { @Autowired - DataStore dataStore; + PersistenceService persistenceService; /** * The reference that autowires OtpManagerUtils. @@ -77,7 +78,7 @@ public ResponseEntity validateOtp(String key, String ot OtpValidatorResponseDto responseDto; // The OTP entity for a specific key. - OtpEntity otpResponse = dataStore.findOtpByKey(key); + OtpEntity otpResponse = persistenceService.findOtpByKey(key); responseDto = new OtpValidatorResponseDto(); responseDto.setMessage(OtpStatusConstants.FAILURE_MESSAGE.getProperty()); responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); @@ -100,7 +101,7 @@ public ResponseEntity validateOtp(String key, String ot HashMap updateMap = createUpdateMap(key, null, attemptCount + 1, LocalDateTime.now(ZoneId.of("UTC"))); - dataStore.updateOtp(UPDATE_OTP_ATTEMPT,updateMap); + persistenceService.updateOtp(updateMap); } /* * This condition freezes the key for a certain time, if the validation attempt @@ -110,7 +111,7 @@ public ResponseEntity validateOtp(String key, String ot && (!otp.equals(otpResponse.getOtp()))) { HashMap updateMap = createUpdateMap(key, OtpStatusConstants.KEY_FREEZED.getProperty(), 0, OtpManagerUtils.getCurrentLocalDateTime()); - dataStore.updateOtp(UPDATE_OTP_STATUS,updateMap); + persistenceService.updateOtp(updateMap); responseDto.setStatus(OtpStatusConstants.FAILURE_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); @@ -132,7 +133,7 @@ public ResponseEntity validateOtp(String key, String ot OtpManagerUtils.getCurrentLocalDateTime())) <= (Integer.parseInt(otpExpiryLimit))))) { responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); - dataStore.deleteOtpByKey(key); + persistenceService.deleteOtpByKey(key); return new ResponseEntity<>(responseDto, HttpStatus.OK); } return validationResponseEntity; @@ -192,9 +193,9 @@ private ResponseEntity unFreezeKey(String key, String o responseDto.setStatus(OtpStatusConstants.SUCCESS_STATUS.getProperty()); responseDto.setMessage(OtpStatusConstants.SUCCESS_MESSAGE.getProperty()); validationResponseEntity = new ResponseEntity<>(responseDto, HttpStatus.OK); - dataStore.deleteOtpByKey(key); + persistenceService.deleteOtpByKey(key); } else { - dataStore.updateOtp(UPDATE_OTP_STATUS,updateMap); + persistenceService.updateOtp(updateMap); } } else { responseDto.setMessage(OtpStatusConstants.FAILURE_AND_FREEZED_MESSAGE.getProperty()); diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java deleted file mode 100644 index 04a6e100..00000000 --- a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CacheDatastoreImplTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.mosip.kernel.otpmanager.test.service; - - -import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; -import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.service.impl.CacheDatastoreImpl; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.springframework.cache.Cache; -import org.springframework.cache.CacheManager; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.util.ReflectionTestUtils; -import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.Map; - -@RunWith(SpringRunner.class) -public class CacheDatastoreImplTest { - - @Mock - CacheManager cacheManager; - - @InjectMocks - CacheDatastoreImpl cacheDatastore; - - @Mock - Cache cache; - - @Test - public void testUpdateOtp() { - ReflectionTestUtils.setField(cacheDatastore,"cache","123"); - OtpEntity otpEntity = new OtpEntity(); - otpEntity.setId("123"); - Mockito.when(cache.get("123", OtpEntity.class)).thenReturn(otpEntity); - - Map updateMap = new HashMap<>(); - updateMap.put(SqlQueryConstants.ID.getProperty(), "123"); - updateMap.put(SqlQueryConstants.NEW_OTP_STATUS.getProperty(), "ACTIVE"); - updateMap.put(SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty(), "3"); - updateMap.put(SqlQueryConstants.NEW_VALIDATION_TIME.getProperty(), LocalDateTime.now()); - - Mockito.when(cacheManager.getCache(Mockito.anyString())).thenReturn(cache); - Mockito.when(cache.get("123",OtpEntity.class)).thenReturn(otpEntity); - cacheDatastore.updateOtp("UPDATE OTP", updateMap); - } -} diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CachePersistenceServiceImplTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CachePersistenceServiceImplTest.java new file mode 100644 index 00000000..b38764ba --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/CachePersistenceServiceImplTest.java @@ -0,0 +1,89 @@ +package io.mosip.kernel.otpmanager.test.service; + + +import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; +import io.mosip.kernel.otpmanager.entity.OtpEntity; +import io.mosip.kernel.otpmanager.service.impl.CachePersistenceServiceImpl; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +@RunWith(SpringRunner.class) +public class CachePersistenceServiceImplTest { + + @Mock + CacheManager cacheManager; + + @InjectMocks + CachePersistenceServiceImpl cacheDatastore; + + @Mock + Cache cache; + + + @Test + public void saveTest(){ + ReflectionTestUtils.setField(cacheDatastore,"cache","otp"); + OtpEntity otpEntity=new OtpEntity(); + otpEntity.setId("key"); + otpEntity.setOtp("123456"); + Mockito.when(cacheManager.getCache(Mockito.anyString())).thenReturn(cache); + + Cache cache1=Mockito.mock(Cache.class); + Mockito.doNothing().when(cache1).put(Mockito.anyString(), Mockito.any()); + cacheDatastore.saveOtp(otpEntity); + + } + + @Test + public void findOtpByKeyTest(){ + ReflectionTestUtils.setField(cacheDatastore,"cache","otp"); + OtpEntity otpEntity=new OtpEntity(); + otpEntity.setId("key"); + otpEntity.setOtp("123456"); + Mockito.when(cacheManager.getCache(Mockito.anyString())).thenReturn(cache); + Mockito.when(cache.get("key", OtpEntity.class)).thenReturn(otpEntity); + + cacheDatastore.findOtpByKey("key"); + } + + @Test + public void deleteOtpByKeyTest(){ + + ReflectionTestUtils.setField(cacheDatastore,"cache","otp"); + OtpEntity otpEntity=new OtpEntity(); + otpEntity.setId("key"); + otpEntity.setOtp("123456"); + Mockito.when(cacheManager.getCache(Mockito.anyString())).thenReturn(cache); + + Cache cache1=Mockito.mock(Cache.class); + Mockito.doNothing().when(cache1).evict(Mockito.anyString()); + cacheDatastore.findOtpByKey("key"); + } + + @Test + public void testUpdateOtp() { + ReflectionTestUtils.setField(cacheDatastore,"cache","123"); + OtpEntity otpEntity = new OtpEntity(); + otpEntity.setId("123"); + Mockito.when(cache.get("123", OtpEntity.class)).thenReturn(otpEntity); + + Map updateMap = new HashMap<>(); + updateMap.put(SqlQueryConstants.ID.getProperty(), "123"); + updateMap.put(SqlQueryConstants.NEW_OTP_STATUS.getProperty(), "ACTIVE"); + updateMap.put(SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty(), "3"); + updateMap.put(SqlQueryConstants.NEW_VALIDATION_TIME.getProperty(), LocalDateTime.now()); + + Mockito.when(cacheManager.getCache(Mockito.anyString())).thenReturn(cache); + cacheDatastore.updateOtp(updateMap); + } +} diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java deleted file mode 100644 index 5b0ff2fe..00000000 --- a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabaseDatastoreimplTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.mosip.kernel.otpmanager.test.service; - -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.service.impl.DatabaseDatastoreImpl; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -public class DatabaseDatastoreimplTest { - - @Mock - private OtpRepository otpRepository; - - @InjectMocks - private DatabaseDatastoreImpl databaseDatastore; - - @Test - public void updateOtpTest() { - databaseDatastore.updateOtp("updateOtpStatus", null); - databaseDatastore.updateOtp("updateOtpAttempt", null); - } - -} diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabasePersistenceServiceImplTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabasePersistenceServiceImplTest.java new file mode 100644 index 00000000..b79e22f4 --- /dev/null +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/DatabasePersistenceServiceImplTest.java @@ -0,0 +1,61 @@ +package io.mosip.kernel.otpmanager.test.service; + +import io.mosip.kernel.otpmanager.constant.SqlQueryConstants; +import io.mosip.kernel.otpmanager.entity.OtpEntity; +import io.mosip.kernel.otpmanager.repository.OtpRepository; +import io.mosip.kernel.otpmanager.service.impl.DatabasePersistenceServiceImpl; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.test.context.junit4.SpringRunner; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +@RunWith(SpringRunner.class) +public class DatabasePersistenceServiceImplTest { + + @Mock + private OtpRepository otpRepository; + + @InjectMocks + private DatabasePersistenceServiceImpl databaseDatastore; + + @Test + public void saveTest(){ + OtpEntity otpEntity=new OtpEntity(); + otpEntity.setId("key"); + otpEntity.setOtp("123456"); + Mockito.when(otpRepository.save(otpEntity)).thenReturn(otpEntity); + databaseDatastore.saveOtp(otpEntity); + } + + @Test + public void findOtpByKeyTest(){ + OtpEntity otpEntity=new OtpEntity(); + otpEntity.setId("key"); + otpEntity.setOtp("123456"); + Mockito.when(otpRepository.findById(OtpEntity.class,"key")).thenReturn(otpEntity); + databaseDatastore.findOtpByKey("key"); + } + + @Test + public void deleteOtpByKeyTest(){ + databaseDatastore.deleteOtpByKey("key"); + } + + @Test + public void updateOtpTest() { + Map updateMap = new HashMap<>(); + updateMap.put(SqlQueryConstants.ID.getProperty(), "123"); + updateMap.put(SqlQueryConstants.NEW_NUM_OF_ATTEMPT.getProperty(), "3"); + updateMap.put(SqlQueryConstants.NEW_VALIDATION_TIME.getProperty(), LocalDateTime.now()); + databaseDatastore.updateOtp(updateMap); + updateMap.put(SqlQueryConstants.NEW_OTP_STATUS.getProperty(), "ACTIVE"); + databaseDatastore.updateOtp(updateMap); + } + +} diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java index 40531d6c..fa08c326 100644 --- a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpGeneratorServiceTest.java @@ -4,7 +4,7 @@ import java.time.LocalDateTime; import io.mosip.kernel.otpmanager.dto.OtpGeneratorResponseDto; -import io.mosip.kernel.otpmanager.service.impl.DataStore; +import io.mosip.kernel.otpmanager.service.PersistenceService; import io.mosip.kernel.otpmanager.service.impl.OtpGeneratorServiceImpl; import io.mosip.kernel.otpmanager.util.OtpProvider; import org.junit.Assert; @@ -22,7 +22,7 @@ public class OtpGeneratorServiceTest { @Mock - DataStore dataStore; + PersistenceService persistenceService; @Mock OtpProvider otpProvider; @@ -48,7 +48,7 @@ public void testOtpGenerationFreezedCase() throws Exception { otpEntity.setUpdatedDtimes(LocalDateTime.now()); // Mockito.when(repository.findById(Mockito.any(),Mockito.anyString())).thenReturn(otpEntity); - Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(otpEntity); + Mockito.when(persistenceService.findOtpByKey(Mockito.anyString())).thenReturn(otpEntity); otpGeneratorService.getOtp(otpGeneratorRequestDto); diff --git a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java index 73432d7c..ce81a237 100644 --- a/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java +++ b/kernel/kernel-otpmanager/src/test/java/io/mosip/kernel/otpmanager/test/service/OtpValidatorServiceTest.java @@ -4,7 +4,7 @@ import java.time.ZoneId; import java.time.temporal.ChronoUnit; -import io.mosip.kernel.otpmanager.service.impl.DataStore; +import io.mosip.kernel.otpmanager.service.PersistenceService; import io.mosip.kernel.otpmanager.service.impl.OtpValidatorServiceImpl; import io.mosip.kernel.otpmanager.util.OtpManagerUtils; import io.mosip.kernel.otpmanager.util.OtpProvider; @@ -13,20 +13,17 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; import io.mosip.kernel.otpmanager.entity.OtpEntity; -import io.mosip.kernel.otpmanager.repository.OtpRepository; -import io.mosip.kernel.otpmanager.test.OtpmanagerTestBootApplication; @RunWith(SpringRunner.class) public class OtpValidatorServiceTest { @Mock - DataStore dataStore; + PersistenceService persistenceService; @Mock OtpProvider provider; @@ -50,7 +47,7 @@ public void testOtpValidatorServiceWhenMaxAttemptReached() throws Exception { entity.setStatusCode("OTP_UNUSED"); entity.setValidationRetryCount(0); entity.setUpdatedDtimes(LocalDateTime.now()); - Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + Mockito.when(persistenceService.findOtpByKey(Mockito.anyString())).thenReturn(entity); otpValidatorService.validateOtp("12345","123456"); } @@ -65,7 +62,7 @@ public void testOtpValidatorServiceWhenKeyFreezedPositiveCase() throws Exception entity.setValidationRetryCount(0); entity.setStatusCode("KEY_FREEZED"); entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC")).minus(1, ChronoUnit.MINUTES)); - Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + Mockito.when(persistenceService.findOtpByKey(Mockito.anyString())).thenReturn(entity); otpValidatorService.validateOtp("12345","123456"); } @@ -81,7 +78,7 @@ public void testOtpValidatorServiceWhenKeyFreezedPostiveCase() throws Exception entity.setValidationRetryCount(0); entity.setStatusCode("KEY_FREEZED"); entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC"))); - Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + Mockito.when(persistenceService.findOtpByKey(Mockito.anyString())).thenReturn(entity); otpValidatorService.validateOtp("12345","1234"); } @@ -97,7 +94,7 @@ public void testOtpValidatorServiceWhenKeyUnUsedNegativeCase() throws Exception entity.setValidationRetryCount(0); entity.setStatusCode("OTP_UNUSED"); entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC"))); - Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + Mockito.when(persistenceService.findOtpByKey(Mockito.anyString())).thenReturn(entity); otpValidatorService.validateOtp("12345","1234"); } @@ -114,7 +111,7 @@ public void testOtpValidatorServiceWithLocalProfile() throws Exception { entity.setValidationRetryCount(0); entity.setStatusCode("OTP_UNUSED"); entity.setUpdatedDtimes(LocalDateTime.now(ZoneId.of("UTC"))); - Mockito.when(dataStore.findOtpByKey(Mockito.anyString())).thenReturn(entity); + Mockito.when(persistenceService.findOtpByKey(Mockito.anyString())).thenReturn(entity); otpValidatorService.validateOtp("12345","1234"); entity.setOtp("111111"); otpValidatorService.validateOtp("12345","111111");