diff --git a/src/app.module.ts b/src/app.module.ts index 0cf10ec0..12810907 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -28,22 +28,17 @@ import { TransactionModule } from './endpoints/transaction/transaction.module'; import { SpecializationModule } from './endpoints/category/specialization/specialization.module'; import { NotificationEndpointModule } from './endpoints/notification-endpoint/notification-endpoint.module'; import { DnaCollectionModule } from './endpoints/category/dna-collection/dna-collection.module'; -import { - GCloudSecretManagerModule, - GCloudSecretManagerService, -} from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList, SecretKeyList } from './common/secrets'; import { ConversionModule } from './endpoints/conversion/conversion.module'; import { PinataModule } from './endpoints/pinata/pinata.module'; import { MyriadModule } from './endpoints/myriad/myriad.module'; import { SecondOpinionModule } from './endpoints/second-opinion/second-opinion.module'; +import { config } from './config'; require('dotenv').config(); // eslint-disable-line @Module({ imports: [ ScheduleModule.forRoot(), - GCloudSecretManagerModule.withConfig(process.env.PARENT, SecretKeyList), TypeOrmModule.forRootAsync({ imports: [ ProcessEnvModule.setDefault({ @@ -52,23 +47,15 @@ require('dotenv').config(); // eslint-disable-line DB_POSTGRES: 'DB_POSTGRES', DB_LOCATIONS: 'DB_LOCATIONS', }), - GCloudSecretManagerModule.withConfig(process.env.PARENT, SecretKeyList), ], - inject: [ProcessEnvProxy, GCloudSecretManagerService], - useFactory: async ( - processEnvProxy: ProcessEnvProxy, - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [ProcessEnvProxy], + useFactory: async (processEnvProxy: ProcessEnvProxy) => { return { type: 'postgres', host: processEnvProxy.env.HOST_POSTGRES, port: 5432, - username: gCloudSecretManagerService - .getSecret('POSTGRES_USERNAME') - .toString(), - password: gCloudSecretManagerService - .getSecret('POSTGRES_PASSWORD') - .toString(), + username: config.POSTGRES_USERNAME.toString(), + password: config.POSTGRES_PASSWORD.toString(), database: processEnvProxy.env.DB_POSTGRES, entities: [LabRating, TransactionRequest], autoLoadEntities: true, @@ -84,23 +71,15 @@ require('dotenv').config(); // eslint-disable-line DB_POSTGRES: 'DB_POSTGRES', DB_LOCATIONS: 'DB_LOCATIONS', }), - GCloudSecretManagerModule.withConfig(process.env.PARENT, SecretKeyList), ], - inject: [ProcessEnvProxy, GCloudSecretManagerService], - useFactory: async ( - processEnvProxy: ProcessEnvProxy, - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [ProcessEnvProxy], + useFactory: async (processEnvProxy: ProcessEnvProxy) => { return { type: 'postgres', host: processEnvProxy.env.HOST_POSTGRES, port: 5432, - username: gCloudSecretManagerService - .getSecret('POSTGRES_USERNAME') - .toString(), - password: gCloudSecretManagerService - .getSecret('POSTGRES_PASSWORD') - .toString(), + username: config.POSTGRES_USERNAME.toString(), + password: config.POSTGRES_PASSWORD.toString(), database: processEnvProxy.env.DB_LOCATIONS, entities: [...LocationEntities], autoLoadEntities: true, diff --git a/src/common/modules/caches/index.ts b/src/common/modules/caches/index.ts index 0d416687..fed0f44f 100644 --- a/src/common/modules/caches/index.ts +++ b/src/common/modules/caches/index.ts @@ -1,23 +1,18 @@ import { CacheModule, Module } from '@nestjs/common'; import { CachesService } from './caches.service'; import * as redisStore from 'cache-manager-redis-store'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../secrets'; +import { config } from '../../../config'; @Module({ imports: [ CacheModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { store: redisStore, - host: gCloudSecretManagerService.getSecret('REDIS_HOST').toString(), - port: gCloudSecretManagerService.getSecret('REDIS_PORT').toString(), - auth_pass: gCloudSecretManagerService - .getSecret('REDIS_PASSWORD') - .toString(), + host: config.REDIS_HOST.toString(), + port: config.REDIS_PORT.toString(), + auth_pass: config.REDIS_PASSWORD.toString(), }; }, }), diff --git a/src/common/modules/debio-conversion/debio-conversion.module.ts b/src/common/modules/debio-conversion/debio-conversion.module.ts index b925b9ac..0a08eb48 100644 --- a/src/common/modules/debio-conversion/debio-conversion.module.ts +++ b/src/common/modules/debio-conversion/debio-conversion.module.ts @@ -1,23 +1,18 @@ import { DebioConversionService } from './debio-conversion.service'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { CacheModule, Module } from '@nestjs/common'; import * as redisStore from 'cache-manager-redis-store'; -import { keyList } from '../../../common/secrets'; +import { config } from '../../../config'; @Module({ imports: [ CacheModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { store: redisStore, - host: gCloudSecretManagerService.getSecret('REDIS_HOST').toString(), - port: gCloudSecretManagerService.getSecret('REDIS_PORT').toString(), - auth_pass: gCloudSecretManagerService - .getSecret('REDIS_PASSWORD') - .toString(), + host: config.REDIS_HOST.toString(), + port: config.REDIS_PORT.toString(), + auth_pass: config.REDIS_PASSWORD.toString(), ttl: 2 * 60 * 60, }; }, diff --git a/src/common/modules/debio-conversion/debio-conversion.service.ts b/src/common/modules/debio-conversion/debio-conversion.service.ts index ded1645e..3695720e 100644 --- a/src/common/modules/debio-conversion/debio-conversion.service.ts +++ b/src/common/modules/debio-conversion/debio-conversion.service.ts @@ -1,5 +1,3 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../secrets'; import axios from 'axios'; import { CACHE_MANAGER, Inject, Injectable } from '@nestjs/common'; import { Cache } from 'cache-manager'; @@ -10,13 +8,11 @@ import { estimateSwap, getExpectedOutputFromSwapTodos, } from '@ref-finance/ref-sdk'; +import { config } from '../../../config'; @Injectable() export class DebioConversionService { - constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, - @Inject(CACHE_MANAGER) private readonly cacheManager: Cache, - ) {} + constructor(@Inject(CACHE_MANAGER) private readonly cacheManager: Cache) {} async getCacheExchange() { return this.cacheManager.get('exchange'); @@ -27,10 +23,8 @@ export class DebioConversionService { } async setCacheExchangeFromTo(from: string, to: string) { - const listApiKey: string[] = this.gCloudSecretManagerService - .getSecret('COINMARKETCAP_API_KEY') - .toString() - .split(','); + const listApiKey: string[] = + config.COINMARKETCAP_API_KEY.toString().split(','); const indexCurrentApiKey: number = await this.cacheManager.get( 'index_api_key', ); @@ -68,10 +62,8 @@ export class DebioConversionService { async setCacheExchange() { const sodaki = await this.getSodakiExchange(); - const listApiKey: string[] = this.gCloudSecretManagerService - .getSecret('COINMARKETCAP_API_KEY') - .toString() - .split(','); + const listApiKey: string[] = + config.COINMARKETCAP_API_KEY.toString().split(','); const indexCurrentApiKey: number = await this.cacheManager.get( 'index_api_key', ); @@ -149,9 +141,7 @@ export class DebioConversionService { async convertDaiToUsd(apiKey: string, daiAmount: number): Promise { const response = await axios.get( - `${this.gCloudSecretManagerService - .getSecret('COINMARKETCAP_HOST') - .toString()}/tools/price-conversion`, + `${config.COINMARKETCAP_HOST.toString()}/tools/price-conversion`, { headers: { 'X-CMC_PRO_API_KEY': apiKey, @@ -174,9 +164,7 @@ export class DebioConversionService { to: string, ): Promise { const response = await axios.get( - `${this.gCloudSecretManagerService - .getSecret('COINMARKETCAP_HOST') - .toString()}/tools/price-conversion`, + `${config.COINMARKETCAP_HOST.toString()}/tools/price-conversion`, { headers: { 'X-CMC_PRO_API_KEY': apiKey, diff --git a/src/common/modules/escrow/escrow.service.ts b/src/common/modules/escrow/escrow.service.ts index 7fc5f72d..42a748e4 100644 --- a/src/common/modules/escrow/escrow.service.ts +++ b/src/common/modules/escrow/escrow.service.ts @@ -4,8 +4,7 @@ import { EthereumService, SubstrateService } from '../..'; import { setOrderPaid } from '@debionetwork/polkadot-provider'; import { ethers } from 'ethers'; import AsyncLock from 'async-lock'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../secrets'; +import { config } from '../../../config'; const lock = new AsyncLock(); const ESCROW_WALLET_LOCK_KEY = 'escrow-wallet-lock'; @@ -14,7 +13,6 @@ let nonce = 0; @Injectable() export class EscrowService { constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, private readonly substrateService: SubstrateService, private readonly ethereumService: EthereumService, ) {} @@ -24,9 +22,7 @@ export class EscrowService { async onModuleInit(): Promise { this.provider = await this.ethereumService.getEthersProvider(); this.escrowWallet = await new ethers.Wallet( - this.gCloudSecretManagerService - .getSecret('DEBIO_ESCROW_PRIVATE_KEY') - .toString(), + config.DEBIO_ESCROW_PRIVATE_KEY.toString(), this.provider, ); } @@ -138,9 +134,7 @@ export class EscrowService { const tokenAmount = ethers.utils.parseUnits(String(amount), 18); const tokenContract = this.ethereumService.getContract(); const wallet: WalletSigner = await this.ethereumService.createWallet( - this.gCloudSecretManagerService - .getSecret('DEBIO_ESCROW_PRIVATE_KEY') - .toString(), + config.DEBIO_ESCROW_PRIVATE_KEY.toString(), ); const tokenContractWithSigner = tokenContract.connect(wallet); const options = { diff --git a/src/common/modules/ethereum/ethereum.service.ts b/src/common/modules/ethereum/ethereum.service.ts index c5b757e3..c563c076 100644 --- a/src/common/modules/ethereum/ethereum.service.ts +++ b/src/common/modules/ethereum/ethereum.service.ts @@ -9,13 +9,11 @@ import ABI from './utils/ABI.json'; import escrowContract from './utils/Escrow.json'; import { ethers } from 'ethers'; import { CachesService } from '../caches'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../secrets'; +import { config } from '../../../config'; @Injectable() export class EthereumService { constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, private readonly ethersContract: EthersContract, private readonly ethersSigner: EthersSigner, private readonly cachesService: CachesService, @@ -38,7 +36,7 @@ export class EthereumService { getEthersProvider(): ethers.providers.JsonRpcProvider { const provider = new ethers.providers.JsonRpcProvider( - this.gCloudSecretManagerService.getSecret('WEB3_RPC_HTTPS').toString(), + config.WEB3_RPC_HTTPS.toString(), ); return provider; } @@ -46,9 +44,7 @@ export class EthereumService { getContract(): SmartContract { try { const contract: SmartContract = this.ethersContract.create( - this.gCloudSecretManagerService - .getSecret('ESCROW_CONTRACT_ADDRESS') - .toString(), + config.ESCROW_CONTRACT_ADDRESS.toString(), ABI, ); @@ -62,9 +58,7 @@ export class EthereumService { try { const provider = this.getEthersProvider(); const contract = new ethers.Contract( - this.gCloudSecretManagerService - .getSecret('ESCROW_CONTRACT_ADDRESS') - .toString(), + config.ESCROW_CONTRACT_ADDRESS.toString(), escrowContract.abi, provider, ); diff --git a/src/common/modules/health-indicators/elasticsearch.health/index.ts b/src/common/modules/health-indicators/elasticsearch.health/index.ts index e111c360..bd5f1b99 100644 --- a/src/common/modules/health-indicators/elasticsearch.health/index.ts +++ b/src/common/modules/health-indicators/elasticsearch.health/index.ts @@ -1,29 +1,20 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { Module } from '@nestjs/common'; import { ElasticsearchModule } from '@nestjs/elasticsearch'; import { TerminusModule } from '@nestjs/terminus'; import { ElasticsearchHealthIndicator } from './elasticsearch.health.indicator'; -import { keyList } from '../../../secrets'; +import { config } from '../../../../config'; @Module({ imports: [ TerminusModule, ElasticsearchModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { - node: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_NODE') - .toString(), + node: config.ELASTICSEARCH_NODE.toString(), auth: { - username: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_USERNAME') - .toString(), - password: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_PASSWORD') - .toString(), + username: config.ELASTICSEARCH_USERNAME.toString(), + password: config.ELASTICSEARCH_PASSWORD.toString(), }, }; }, diff --git a/src/common/modules/mailer/mailer.manager.ts b/src/common/modules/mailer/mailer.manager.ts index c3d3bd7a..e4ee85a9 100644 --- a/src/common/modules/mailer/mailer.manager.ts +++ b/src/common/modules/mailer/mailer.manager.ts @@ -1,4 +1,3 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { MailerService } from '@nestjs-modules/mailer'; import { Injectable, Logger } from '@nestjs/common'; import { @@ -6,27 +5,19 @@ import { GeneticAnalystRegister, LabRegister, } from './models'; -import { keyList } from '../../secrets'; import { HealthProfessionalRegister } from './models/health-professional.model'; +import { config } from '../../../config'; @Injectable() export class MailerManager { private readonly _logger: Logger = new Logger(MailerManager.name); - constructor( - private readonly mailerService: MailerService, - private readonly gCloudSecretManagerService: GCloudSecretManagerService, - ) {} + constructor(private readonly mailerService: MailerService) {} async sendCustomerStakingRequestServiceEmail( to: string | string[], context: CustomerStakingRequestService, ) { - let subject = `New Service Request - ${context.service_name} - ${context.city}, ${context.state}, ${context.country}`; - if ( - this.gCloudSecretManagerService.getSecret('POSTGRES_HOST') == 'localhost' - ) { - subject = `Testing New Service Request Email`; - } + const subject = `New Service Request - ${context.service_name} - ${context.city}, ${context.state}, ${context.country}`; this.mailerService.sendMail({ to: to, subject: subject, @@ -40,9 +31,7 @@ export class MailerManager { context: GeneticAnalystRegister, ) { let subject = `New Genetic Analyst Register – ${context.genetic_analyst_name}`; - if ( - this.gCloudSecretManagerService.getSecret('POSTGRES_HOST') == 'localhost' - ) { + if (config.POSTGRES_HOST == 'localhost') { subject = `Testing New Genetic Analyst Register Email`; } const files: any[] = []; @@ -78,12 +67,7 @@ export class MailerManager { } async sendLabRegistrationEmail(to: string | string[], context: LabRegister) { - let subject = `New Lab Register – ${context.lab_name} - ${context.city}, ${context.state}, ${context.country}`; - if ( - this.gCloudSecretManagerService.getSecret('POSTGRES_HOST') == 'localhost' - ) { - subject = `Testing New Lab Register Email`; - } + const subject = `New Lab Register – ${context.lab_name} - ${context.city}, ${context.state}, ${context.country}`; const files: any[] = []; context.certifications.forEach((val, idx) => { files.push({ @@ -128,9 +112,7 @@ export class MailerManager { context: HealthProfessionalRegister, ) { let subject = `New Health Professinal Register – ${context.health_professional_name}`; - if ( - this.gCloudSecretManagerService.getSecret('POSTGRES_HOST') == 'localhost' - ) { + if (config.POSTGRES_HOST == 'localhost') { subject = `Testing New Lab Register Email`; } const files: any[] = []; diff --git a/src/common/modules/mailer/mailer.module.ts b/src/common/modules/mailer/mailer.module.ts index 90bce1d1..2c7bf739 100644 --- a/src/common/modules/mailer/mailer.module.ts +++ b/src/common/modules/mailer/mailer.module.ts @@ -1,27 +1,22 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; import { Module } from '@nestjs/common'; import { join } from 'path'; import { MailerManager } from './mailer.manager'; -import { keyList } from '../../secrets'; +import { config } from '../../../config'; @Module({ imports: [ MailerModule.forRootAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { transport: { host: 'smtp.gmail.com', secure: false, auth: { - user: gCloudSecretManagerService.getSecret('EMAIL').toString(), - pass: gCloudSecretManagerService - .getSecret('PASS_EMAIL') - .toString(), + user: config.EMAIL.toString(), + pass: config.PASS_EMAIL.toString(), }, }, template: { diff --git a/src/common/modules/substrate/substrate.service.ts b/src/common/modules/substrate/substrate.service.ts index b3f4e1ec..97e80610 100644 --- a/src/common/modules/substrate/substrate.service.ts +++ b/src/common/modules/substrate/substrate.service.ts @@ -1,8 +1,7 @@ import { ApiPromise, Keyring, WsProvider } from '@polkadot/api'; import { Injectable, OnModuleInit, Logger } from '@nestjs/common'; import { waitReady } from '@polkadot/wasm-crypto'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../secrets'; +import { config } from '../../../config'; @Injectable() export class SubstrateService implements OnModuleInit { @@ -12,10 +11,6 @@ export class SubstrateService implements OnModuleInit { private _listenStatus: boolean; private readonly _logger: Logger = new Logger(SubstrateService.name); - constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, - ) {} - get api(): ApiPromise { return this._api; } @@ -25,17 +20,13 @@ export class SubstrateService implements OnModuleInit { } async onModuleInit() { - this._wsProvider = new WsProvider( - this.gCloudSecretManagerService.getSecret('SUBSTRATE_URL').toString(), - ); + this._wsProvider = new WsProvider(config.SUBSTRATE_URL.toString()); const keyring = new Keyring({ type: 'sr25519' }); await waitReady(); this._pair = await keyring.addFromUri( - this.gCloudSecretManagerService - .getSecret('ADMIN_SUBSTRATE_MNEMONIC') - .toString(), + config.ADMIN_SUBSTRATE_MNEMONIC.toString(), ); await this.startListen(); diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 00000000..06d2ee94 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,36 @@ +import dotenv from 'dotenv'; +dotenv.config(); + +export const config = { + DEBIO_API_KEY: process.env.DEBIO_API_KEY ?? '', + RECAPTCHA_SECRET_KEY: process.env.RECAPTCHA_SECRET_KEY ?? '', + REDIS_HOST: process.env.HOST_REDIS ?? 'localhost', + REDIS_PORT: process.env.PORT_REDIS ?? '6379', + REDIS_PASSWORD: process.env.REDIS_PASSWORD ?? 'root', + COINMARKETCAP_API_KEY: process.env.API_KEY_COINMARKETCAP ?? '', + COINMARKETCAP_HOST: + process.env.COINMARKETCAP_HOST ?? 'https://pro-api.coinmarketcap.com/v2', + DEBIO_ESCROW_PRIVATE_KEY: process.env.DEBIO_ESCROW_PRIVATE_KEY ?? 'PRIVKEY', + WEB3_RPC_HTTPS: process.env.WEB3_RPC_HTTPS ?? '', + ESCROW_CONTRACT_ADDRESS: process.env.ESCROW_CONTRACT_ADDRESS ?? 'ADDR', + ELASTICSEARCH_NODE: process.env.ELASTICSEARCH_NODE ?? '', + ELASTICSEARCH_USERNAME: process.env.ELASTICSEARCH_USERNAME ?? '', + ELASTICSEARCH_PASSWORD: process.env.ELASTICSEARCH_PASSWORD ?? '', + POSTGRES_HOST: process.env.HOST_POSTGRES ?? 'localhost', + POSTGRES_USERNAME: process.env.USERNAME_POSTGRES ?? '', + POSTGRES_PASSWORD: process.env.PASSWORD_POSTGRES ?? '', + EMAIL: process.env.EMAIL ?? '', + PASS_EMAIL: process.env.PASS_EMAIL ?? '', + EMAILS: process.env.EMAILS ?? '', + SUBSTRATE_URL: process.env.SUBSTRATE_URL ?? 'URL', + ADMIN_SUBSTRATE_MNEMONIC: process.env.ADMIN_SUBSTRATE_MNEMONIC ?? '', + BUCKET_NAME: process.env.BUCKET_NAME ?? '', + STORAGE_BASE_URI: process.env.STORAGE_BASE_URI ?? '', + MYRIAD_API_URL: process.env.MYRIAD_API_URL ?? '', + MYRIAD_ADMIN_USERNAME: process.env.MYRIAD_ADMIN_USERNAME ?? '', + MYRIAD_PHYSICAL_HEALTH_TIMELINE_ID: + process.env.PHYSICAL_HEALTH_EXPERIENCE_ID ?? '', + MYRIAD_MENTAL_HEALTH_TIMELINE_ID: + process.env.MENTAL_HEALTH_EXPERIENCE_ID ?? '', + PINATA_JWT: process.env.PINATA_SECRET_KEY ?? '', +}; diff --git a/src/endpoints/bounty/bounty.module.ts b/src/endpoints/bounty/bounty.module.ts index 0426bd45..6d09f7ed 100644 --- a/src/endpoints/bounty/bounty.module.ts +++ b/src/endpoints/bounty/bounty.module.ts @@ -5,22 +5,15 @@ import { DataStakingEvents } from './models/data-staking-events.entity'; import { DateTimeModule } from '../../common'; import { DataTokenToDatasetMapping } from './models/data-token-to-dataset-mapping.entity'; import { GCloudStorageModule } from '@debionetwork/nestjs-gcloud-storage'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../common/secrets'; +import { config } from '../../config'; @Module({ imports: [ GCloudStorageModule.withConfigAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => ({ - defaultBucketname: gCloudSecretManagerService - .getSecret('BUCKET_NAME') - .toString(), - storageBaseUri: gCloudSecretManagerService - .getSecret('STORAGE_BASE_URI') - .toString(), + inject: [], + useFactory: async () => ({ + defaultBucketname: config.BUCKET_NAME.toString(), + storageBaseUri: config.STORAGE_BASE_URI.toString(), predefinedAcl: 'private', }), }), diff --git a/src/endpoints/cloud-storage/cloud-storage.module.ts b/src/endpoints/cloud-storage/cloud-storage.module.ts index 0accbf27..09b5ccd7 100644 --- a/src/endpoints/cloud-storage/cloud-storage.module.ts +++ b/src/endpoints/cloud-storage/cloud-storage.module.ts @@ -2,23 +2,16 @@ import { Module } from '@nestjs/common'; import { GCloudStorageModule } from '@debionetwork/nestjs-gcloud-storage'; import { CloudStorageController } from './cloud-storage.controller'; import { DateTimeModule } from '../../common'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../common/secrets'; +import { config } from '../../config'; @Module({ imports: [ GCloudStorageModule.withConfigAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { - defaultBucketname: gCloudSecretManagerService - .getSecret('BUCKET_NAME') - .toString(), - storageBaseUri: gCloudSecretManagerService - .getSecret('STORAGE_BASE_URI') - .toString(), + defaultBucketname: config.BUCKET_NAME.toString(), + storageBaseUri: config.STORAGE_BASE_URI.toString(), predefinedAcl: 'private', }; }, diff --git a/src/endpoints/conversion/conversion.module.ts b/src/endpoints/conversion/conversion.module.ts index 4efa9152..437da348 100644 --- a/src/endpoints/conversion/conversion.module.ts +++ b/src/endpoints/conversion/conversion.module.ts @@ -1,23 +1,20 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { HttpModule } from '@nestjs/axios'; import { CacheModule, Module } from '@nestjs/common'; import * as redisStore from 'cache-manager-redis-store'; import { DebioConversionModule } from 'src/common'; -import { keyList } from '../../common/secrets'; import { CacheController } from './conversion.controller'; +import { config } from '../../config'; @Module({ imports: [ CacheModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { store: redisStore, - host: gCloudSecretManagerService.getSecret('REDIS_HOST'), - port: gCloudSecretManagerService.getSecret('REDIS_PORT'), - auth_pass: gCloudSecretManagerService.getSecret('REDIS_PASSWORD'), + host: config.REDIS_HOST, + port: config.REDIS_PORT, + auth_pass: config.REDIS_PASSWORD, ttl: 2 * 60 * 60, }; }, diff --git a/src/endpoints/email/email.controller.ts b/src/endpoints/email/email.controller.ts index 4636dde7..c0adef8c 100644 --- a/src/endpoints/email/email.controller.ts +++ b/src/endpoints/email/email.controller.ts @@ -17,14 +17,12 @@ import { queryGeneticAnalystByAccountId, queryLabById, } from '@debionetwork/polkadot-provider'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../common/secrets'; import { queryHealthProfessionalById } from '@common/modules/polkadot-provider/query/health-professional'; +import { config } from '../../config'; @Controller('email') export class EmailEndpointController { constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, private readonly mailerManager: MailerManager, private readonly substrateService: SubstrateService, private readonly emailNotificationService: EmailNotificationService, @@ -62,10 +60,7 @@ export class EmailEndpointController { ); const sentEMail = await this.mailerManager.sendLabRegistrationEmail( - this.gCloudSecretManagerService - .getSecret('EMAILS') - .toString() - .split(','), + config.EMAILS.toString().split(','), labRegister, ); @@ -119,10 +114,7 @@ export class EmailEndpointController { const sentEMail = await this.mailerManager.sendGeneticAnalystRegistrationEmail( - this.gCloudSecretManagerService - .getSecret('EMAILS') - .toString() - .split(','), + config.EMAILS.toString().split(','), geneticAnalystRegister, ); @@ -175,10 +167,7 @@ export class EmailEndpointController { ); const sentEMail = await this.mailerManager.sendHealthProfessionalEmail( - this.gCloudSecretManagerService - .getSecret('EMAILS') - .toString() - .split(','), + config.EMAILS.toString().split(','), healthProfessionalRegister, ); diff --git a/src/endpoints/myriad/myriad.module.ts b/src/endpoints/myriad/myriad.module.ts index 52a7f096..4064d31b 100644 --- a/src/endpoints/myriad/myriad.module.ts +++ b/src/endpoints/myriad/myriad.module.ts @@ -1,24 +1,21 @@ -import { keyList } from '@common/secrets'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { CacheModule, Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { MyriadAccount } from './models/myriad-account.entity'; import { MyriadController } from './myriad.controller'; import { MyriadService } from './myriad.service'; import * as redisStore from 'cache-manager-redis-store'; +import { config } from '../../config'; @Module({ imports: [ CacheModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { store: redisStore, - host: gCloudSecretManagerService.getSecret('REDIS_HOST'), - port: gCloudSecretManagerService.getSecret('REDIS_PORT'), - auth_pass: gCloudSecretManagerService.getSecret('REDIS_PASSWORD'), + host: config.REDIS_HOST, + port: config.REDIS_PORT, + auth_pass: config.REDIS_PASSWORD, ttl: 2 * 60 * 60, }; }, diff --git a/src/endpoints/myriad/myriad.service.ts b/src/endpoints/myriad/myriad.service.ts index 23e1b7e9..eefedd6b 100644 --- a/src/endpoints/myriad/myriad.service.ts +++ b/src/endpoints/myriad/myriad.service.ts @@ -1,5 +1,3 @@ -import { keyList } from '@common/secrets'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { CACHE_MANAGER, Inject, @@ -23,6 +21,7 @@ import { UserMyriadInterface } from './interface/user'; import { UsernameCheckInterface } from './interface/username-check'; import { MyriadAccount } from './models/myriad-account.entity'; import { Cache } from 'cache-manager'; +import { config } from '../../config'; @Injectable() export class MyriadService { @@ -32,12 +31,9 @@ export class MyriadService { constructor( @InjectRepository(MyriadAccount) private readonly myriadAccountRepository: Repository, - private readonly gCloudSecretManagerService: GCloudSecretManagerService, @Inject(CACHE_MANAGER) private readonly cacheManager: Cache, ) { - this.myriadEndPoints = this.gCloudSecretManagerService - .getSecret('MYRIAD_API_URL') - .toString(); + this.myriadEndPoints = config.MYRIAD_API_URL.toString(); } public async checkUsernameMyriad(username: string): Promise { @@ -68,9 +64,7 @@ export class MyriadService { const user = await this.myriadAccountRepository.findOne({ select: ['username', 'jwt_token'], where: { - username: this.gCloudSecretManagerService - .getSecret('MYRIAD_ADMIN_USERNAME') - .toString(), + username: config.MYRIAD_ADMIN_USERNAME.toString(), }, }); @@ -520,7 +514,6 @@ export class MyriadService { rawText, selectedUserIds, jwt, - postType, timelineId, }: { createdBy: string; @@ -583,9 +576,7 @@ export class MyriadService { const user = await this.myriadAccountRepository.findOne({ select: ['username', 'jwt_token'], where: { - username: this.gCloudSecretManagerService - .getSecret('MYRIAD_ADMIN_USERNAME') - .toString(), + username: config.MYRIAD_ADMIN_USERNAME.toString(), }, }); @@ -616,13 +607,9 @@ export class MyriadService { private getExperienceIdAdmin(type: string): string { if (type === E_PostType.PHYSICAL_HEALTH) { - return this.gCloudSecretManagerService - .getSecret('MYRIAD_PHYSICAL_HEALTH_TIMELINE_ID') - .toString(); + return config.MYRIAD_PHYSICAL_HEALTH_TIMELINE_ID.toString(); } else if (type === E_PostType.MENTAL_HEALTH) { - return this.gCloudSecretManagerService - .getSecret('MYRIAD_MENTAL_HEALTH_TIMELINE_ID') - .toString(); + return config.MYRIAD_MENTAL_HEALTH_TIMELINE_ID.toString(); } else { throw new HttpException( { diff --git a/src/endpoints/pinata/pinata.service.ts b/src/endpoints/pinata/pinata.service.ts index 9b3fd19d..7dbd5664 100644 --- a/src/endpoints/pinata/pinata.service.ts +++ b/src/endpoints/pinata/pinata.service.ts @@ -1,15 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../common/secrets'; import axios from 'axios'; import { AxiosRequestConfig } from 'axios'; import FormData from 'form-data'; +import { config } from '../../config'; @Injectable() export class PinataService { - constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, - ) {} async uploadToPinata(file: Express.Multer.File) { const options = { pinataMetadata: { @@ -30,19 +26,17 @@ export class PinataService { data.append('pinataMetadata', JSON.stringify(options.pinataMetadata)); data.append('pinataOptions', JSON.stringify(options.pinataOptions)); - const config: AxiosRequestConfig = { + const configuration: AxiosRequestConfig = { method: 'POST', url: 'https://api.pinata.cloud/pinning/pinFileToIPFS', headers: { - Authorization: this.gCloudSecretManagerService - .getSecret('PINATA_JWT') - .toString(), + Authorization: config.PINATA_JWT.toString(), ...data.getHeaders(), }, data: data, }; - const res = await axios(config); + const res = await axios(configuration); return res; } diff --git a/src/endpoints/recaptcha/recaptcha.controller.ts b/src/endpoints/recaptcha/recaptcha.controller.ts index 188a54da..8d1f7527 100644 --- a/src/endpoints/recaptcha/recaptcha.controller.ts +++ b/src/endpoints/recaptcha/recaptcha.controller.ts @@ -1,25 +1,18 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { Body, Controller, Post, Res, UseInterceptors } from '@nestjs/common'; import axios from 'axios'; import { Response } from 'express'; -import { keyList } from '../../common/secrets'; import { SentryInterceptor } from '../../common/interceptors'; +import { config } from '../../config'; @UseInterceptors(SentryInterceptor) @Controller('recaptcha') export class RecaptchaController { - constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, - ) {} - @Post() async recaptcha(@Body() payload: any, @Res() response: Response) { const result = await axios.post( 'https://www.google.com/recaptcha/api/siteverify' + '?secret=' + - this.gCloudSecretManagerService - .getSecret('RECAPTCHA_SECRET_KEY') - .toString() + + config.RECAPTCHA_SECRET_KEY.toString() + '&response=' + payload.response, ); diff --git a/src/endpoints/second-opinion/second-opinion.module.ts b/src/endpoints/second-opinion/second-opinion.module.ts index 820ad15a..306308a4 100644 --- a/src/endpoints/second-opinion/second-opinion.module.ts +++ b/src/endpoints/second-opinion/second-opinion.module.ts @@ -1,5 +1,3 @@ -import { keyList } from '@common/secrets'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { CacheModule, Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { HealthProfessionalRole } from './models/health-professional-role.entity'; @@ -7,19 +5,18 @@ import { HealthProfessionalSpecialization } from './models/health-professional-s import { SecondOpinionController } from './second-opinion.controller'; import { SecondOpinionService } from './second-opinion.service'; import * as redisStore from 'cache-manager-redis-store'; +import { config } from '../../config'; @Module({ imports: [ CacheModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { store: redisStore, - host: gCloudSecretManagerService.getSecret('REDIS_HOST'), - port: gCloudSecretManagerService.getSecret('REDIS_PORT'), - auth_pass: gCloudSecretManagerService.getSecret('REDIS_PASSWORD'), + host: config.REDIS_HOST, + port: config.REDIS_PORT, + auth_pass: config.REDIS_PASSWORD, ttl: 2 * 60 * 60, }; }, diff --git a/src/endpoints/substrate-endpoint/substrate-endpoint.controller.ts b/src/endpoints/substrate-endpoint/substrate-endpoint.controller.ts index 6a1f8d31..316722b8 100644 --- a/src/endpoints/substrate-endpoint/substrate-endpoint.controller.ts +++ b/src/endpoints/substrate-endpoint/substrate-endpoint.controller.ts @@ -39,9 +39,8 @@ import { geneticAnalysisByTrakingIdResponse, geneticAnalysisOrderByGA, } from './models/response'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../common/secrets'; import { MenstrualSubscriptionService } from './services/menstrual-subscription.service'; +import { config } from '../../config'; @Controller('substrate') @UseInterceptors(SentryInterceptor) @@ -51,7 +50,6 @@ export class SubstrateController { private readonly labService: LabService, private readonly serviceService: ServiceService, private readonly orderService: OrderService, - private readonly gCloudSecretManagerService: GCloudSecretManagerService, private readonly serviceRequestService: ServiceRequestService, private readonly geneticAnalysisService: GeneticAnalysisService, private readonly geneticAnalysisOrderService: GeneticAnalysisOrderService, @@ -405,10 +403,7 @@ export class SubstrateController { @Body() payload: WalletBindingDTO, @Res() response: Response, ) { - if ( - debioApiKey !== - this.gCloudSecretManagerService.getSecret('DEBIO_API_KEY').toString() - ) { + if (debioApiKey !== config.DEBIO_API_KEY.toString()) { return response.status(401).send('debio-api-key header is required'); } const { accountId, ethAddress } = payload; @@ -442,10 +437,7 @@ export class SubstrateController { ) { const { genetic_analysis_order_id } = geneticOrderId; - if ( - debioApiKey != - this.gCloudSecretManagerService.getSecret('DEBIO_API_KEY').toString() - ) { + if (debioApiKey != config.DEBIO_API_KEY.toString()) { return response.status(401).send('debio-api-key header is required'); } diff --git a/src/endpoints/substrate-endpoint/substrate-endpoint.module.ts b/src/endpoints/substrate-endpoint/substrate-endpoint.module.ts index 295e5695..aaffd03d 100644 --- a/src/endpoints/substrate-endpoint/substrate-endpoint.module.ts +++ b/src/endpoints/substrate-endpoint/substrate-endpoint.module.ts @@ -14,31 +14,22 @@ import { ServiceRequestService } from './services/service-request.service'; import { LocationModule } from '../location/location.module'; import { GeneticAnalysisService } from './services/genetic-analysis.service'; import { GeneticAnalysisOrderService } from './services/genetic-analysis-order.service'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../common/secrets'; import { MenstrualCalendarService } from './services/menstrual-calendar.service'; import { MenstrualSubscriptionService } from './services/menstrual-subscription.service'; +import { config } from '../../config'; @Module({ imports: [ LocationModule, DebioConversionModule, ElasticsearchModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { - node: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_NODE') - .toString(), + node: config.ELASTICSEARCH_NODE.toString(), auth: { - username: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_USERNAME') - .toString(), - password: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_PASSWORD') - .toString(), + username: config.ELASTICSEARCH_USERNAME.toString(), + password: config.ELASTICSEARCH_PASSWORD.toString(), }, }; }, diff --git a/src/endpoints/transaction/transaction.module.ts b/src/endpoints/transaction/transaction.module.ts index a29bf408..ca8ba1ec 100644 --- a/src/endpoints/transaction/transaction.module.ts +++ b/src/endpoints/transaction/transaction.module.ts @@ -1,30 +1,21 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { Module } from '@nestjs/common'; import { ElasticsearchModule } from '@nestjs/elasticsearch'; -import { keyList } from '../../common/secrets'; import { TransactionLoggingModule } from '../../common'; import { TransactionController } from './transaction.controller'; import { TransactionService } from './transaction.service'; +import { config } from '../../config'; @Module({ imports: [ TransactionLoggingModule, ElasticsearchModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { - node: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_NODE') - .toString(), + node: config.ELASTICSEARCH_NODE.toString(), auth: { - username: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_USERNAME') - .toString(), - password: gCloudSecretManagerService - .getSecret('ELASTICSEARCH_PASSWORD') - .toString(), + username: config.ELASTICSEARCH_USERNAME.toString(), + password: config.ELASTICSEARCH_PASSWORD.toString(), }, }; }, diff --git a/src/endpoints/verification/verification.controller.ts b/src/endpoints/verification/verification.controller.ts index 50fbe5dc..31b96dc1 100644 --- a/src/endpoints/verification/verification.controller.ts +++ b/src/endpoints/verification/verification.controller.ts @@ -1,4 +1,3 @@ -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { Body, Controller, @@ -11,19 +10,16 @@ import { } from '@nestjs/common'; import { ApiBody, ApiOperation, ApiQuery } from '@nestjs/swagger'; import { Response } from 'express'; -import { keyList } from '../../common/secrets'; import { SentryInterceptor } from '../../common'; import { VerificationService } from './verification.service'; import { VerificationStatus } from '@debionetwork/polkadot-provider/lib/primitives'; import { HealthProfessionalRegisterDTO } from './dto/health-professional.dto'; +import { config } from '../../config'; @UseInterceptors(SentryInterceptor) @Controller('verification') export class VerificationController { - constructor( - private readonly gCloudSecretManagerService: GCloudSecretManagerService, - private readonly verificationService: VerificationService, - ) {} + constructor(private readonly verificationService: VerificationService) {} @Post('/lab') @ApiQuery({ name: 'account_id' }) @@ -39,10 +35,7 @@ export class VerificationController { @Query('verification_status') verification_status: string, ) { try { - if ( - debioApiKey != - this.gCloudSecretManagerService.getSecret('DEBIO_API_KEY').toString() - ) { + if (debioApiKey != config.DEBIO_API_KEY.toString()) { return response.status(401).send('debio-api-key header is required'); } await this.verificationService.verificationLab( @@ -75,10 +68,7 @@ export class VerificationController { @Query('verification_status') verification_status: string, ) { try { - if ( - debioApiKey != - this.gCloudSecretManagerService.getSecret('DEBIO_API_KEY').toString() - ) { + if (debioApiKey != config.DEBIO_API_KEY.toString()) { return response.status(401).send('debio-api-key header is required'); } await this.verificationService.verificationGeneticAnalyst( @@ -102,10 +92,7 @@ export class VerificationController { @Res() response: Response, @Body() data: HealthProfessionalRegisterDTO, ) { - if ( - debioApiKey != - this.gCloudSecretManagerService.getSecret('DEBIO_API_KEY').toString() - ) { + if (debioApiKey != config.DEBIO_API_KEY.toString()) { throw new HttpException( { status: 401, diff --git a/src/endpoints/verification/verification.module.ts b/src/endpoints/verification/verification.module.ts index 538c52a4..d92c9cc2 100644 --- a/src/endpoints/verification/verification.module.ts +++ b/src/endpoints/verification/verification.module.ts @@ -7,22 +7,19 @@ import { VerificationService } from './verification.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { MyriadAccount } from '@endpoints/myriad/models/myriad-account.entity'; import * as redisStore from 'cache-manager-redis-store'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '@common/secrets'; import { MyriadModule } from '@endpoints/myriad/myriad.module'; +import { config } from '../../config'; @Module({ imports: [ CacheModule.registerAsync({ - inject: [GCloudSecretManagerService], - useFactory: async ( - gCloudSecretManagerService: GCloudSecretManagerService, - ) => { + inject: [], + useFactory: async () => { return { store: redisStore, - host: gCloudSecretManagerService.getSecret('REDIS_HOST'), - port: gCloudSecretManagerService.getSecret('REDIS_PORT'), - auth_pass: gCloudSecretManagerService.getSecret('REDIS_PASSWORD'), + host: config.REDIS_HOST, + port: config.REDIS_PORT, + auth_pass: config.REDIS_PASSWORD, ttl: 2 * 60 * 60, }; }, diff --git a/test/e2e/endpoints/recaptcha.spec.ts b/test/e2e/endpoints/recaptcha.spec.ts index 221ec5e9..b44479e3 100644 --- a/test/e2e/endpoints/recaptcha.spec.ts +++ b/test/e2e/endpoints/recaptcha.spec.ts @@ -6,7 +6,6 @@ import { Response } from 'express'; import { INestApplication } from '@nestjs/common'; import { TestingModule, Test } from '@nestjs/testing'; import { RecaptchaController } from '../../../src/endpoints/recaptcha/recaptcha.controller'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; describe('Recaptcha Controller (e2e)', () => { const axiosMock = new MockAdapter(axios); @@ -14,31 +13,11 @@ describe('Recaptcha Controller (e2e)', () => { let app: INestApplication; const RECAPTCHA_SECRET_KEY = 'KEY'; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['RECAPTCHA_SECRET_KEY', RECAPTCHA_SECRET_KEY], - ['REDIS_HOST', process.env.HOST_REDIS], - ['REDIS_PORT', process.env.PORT_REDIS], - ['REDIS_PASSWORD', process.env.REDIS_PASSWORD], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [RecaptchaController], - providers: [ - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, - ], + providers: [], }).compile(); axiosMock.reset(); diff --git a/test/unit/common/modules/debio-conversion/debio-conversion.service.spec.ts b/test/unit/common/modules/debio-conversion/debio-conversion.service.spec.ts index 3e140573..3c893863 100644 --- a/test/unit/common/modules/debio-conversion/debio-conversion.service.spec.ts +++ b/test/unit/common/modules/debio-conversion/debio-conversion.service.spec.ts @@ -2,10 +2,10 @@ import { Test, TestingModule } from '@nestjs/testing'; import { DebioConversionService } from '../../../../../src/common'; import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; import { CACHE_MANAGER } from '@nestjs/common'; import { Cache } from 'cache-manager'; import { when } from 'jest-when'; +import { config } from '../../../../../src/config'; jest.mock('axios'); describe('Debio Conversion Service Unit Tests', () => { @@ -13,39 +13,13 @@ describe('Debio Conversion Service Unit Tests', () => { let cacheManager: Cache; const axiosMock = new MockAdapter(axios); - const API_KEY_COINMARKETCAP = 'API_KEY_COINMARKETCAP'; - const SODAKI_HOST = 'SODAKI_HOST'; - const COINMARKETCAP_HOST = 'COINMARKETCAP_HOST'; - const REDIS_HOST = 'REDIS_HOST'; - const REDIS_PORT = 'REDIS_PORT'; - const REDIS_PASSWORD = 'REDIS_PASSWORD'; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['API_KEY_COINMARKETCAP', API_KEY_COINMARKETCAP], - ['SODAKI_HOST', SODAKI_HOST], - ['COINMARKETCAP_HOST', COINMARKETCAP_HOST], - ['REDIS_HOST', REDIS_HOST], - ['REDIS_PORT', REDIS_PORT], - ['REDIS_PASSWORD', REDIS_PASSWORD], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } + const COINMARKETCAP_HOST = config.COINMARKETCAP_HOST; // Arrange before each iteration beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ DebioConversionService, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, { provide: CACHE_MANAGER, useValue: { @@ -102,7 +76,7 @@ describe('Debio Conversion Service Unit Tests', () => { // Arrange const httpGetSpy = jest.spyOn(axios, 'get'); const RESULT = 1; - const API_KEY = 'KEY'; + const API_KEY = config.COINMARKETCAP_API_KEY; const BALANCE_AMOUNT = 1; const FROM = 'USN'; const TO = 'USDT'; diff --git a/test/unit/common/modules/escrow/escrow.service.spec.ts b/test/unit/common/modules/escrow/escrow.service.spec.ts index 076716d7..1bf7d04f 100644 --- a/test/unit/common/modules/escrow/escrow.service.spec.ts +++ b/test/unit/common/modules/escrow/escrow.service.spec.ts @@ -8,13 +8,13 @@ import { import { EscrowService } from '../../../../../src/common/modules/escrow/escrow.service'; import { ethers } from 'ethers'; import { setOrderPaid } from '@debionetwork/polkadot-provider'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; +import { config } from '../../../../../src/config'; jest.mock('@debionetwork/polkadot-provider', () => ({ setOrderPaid: jest.fn(), })); -const WALLET_ADDRESS = 'ADDR'; +const WALLET_ADDRESS = config.ESCROW_CONTRACT_ADDRESS; const ETHERS_PARSE_UNITS_MOCK = { tokenAmount: 'AMOUNT', }; @@ -39,19 +39,7 @@ describe('Escrow Service Unit Tests', () => { let substrateServiceMock: MockType; let ethereumServiceMock: MockType; - const DEBIO_ESCROW_PRIVATE_KEY = 'PRIVKEY'; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['DEBIO_ESCROW_PRIVATE_KEY', DEBIO_ESCROW_PRIVATE_KEY], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } + const DEBIO_ESCROW_PRIVATE_KEY = config.DEBIO_ESCROW_PRIVATE_KEY; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ @@ -59,10 +47,6 @@ describe('Escrow Service Unit Tests', () => { EscrowService, { provide: SubstrateService, useFactory: substrateServiceMockFactory }, { provide: EthereumService, useFactory: ethereumServiceMockFactory }, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, ], }).compile(); diff --git a/test/unit/common/modules/ethereum/ethereum.service.spec.ts b/test/unit/common/modules/ethereum/ethereum.service.spec.ts index 54111a58..0d315b8e 100644 --- a/test/unit/common/modules/ethereum/ethereum.service.spec.ts +++ b/test/unit/common/modules/ethereum/ethereum.service.spec.ts @@ -5,7 +5,7 @@ import { EthersContract, EthersSigner } from 'nestjs-ethers'; import ABI from '../../../../../src/common/modules/ethereum/utils/ABI.json'; import escrowContract from '../../../../../src/common/modules/ethereum/utils/Escrow.json'; import { ethers } from 'ethers'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; +import { config } from '../../../../../src/config'; const PROVIDER_RESULT = 1; jest.mock('ethers', () => ({ @@ -42,22 +42,8 @@ describe.only('EthereumService', () => { createWallet: jest.fn(), })); - const WEB3_RPC_HTTPS = 'RPC'; - const ESCROW_CONTRACT_ADDRESS = 'ADDR'; - - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['WEB3_RPC_HTTPS', WEB3_RPC_HTTPS], - ['ESCROW_CONTRACT_ADDRESS', ESCROW_CONTRACT_ADDRESS], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } + const WEB3_RPC_HTTPS = config.WEB3_RPC_HTTPS; + const ESCROW_CONTRACT_ADDRESS = config.ESCROW_CONTRACT_ADDRESS; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ @@ -66,10 +52,6 @@ describe.only('EthereumService', () => { { provide: CachesService, useFactory: cachesServiceMockFactory }, { provide: EthersContract, useFactory: ethersContractMockFactory }, { provide: EthersSigner, useFactory: ethersSignerMockFactory }, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, ], }).compile(); diff --git a/test/unit/common/modules/mailer/mailer.manager.spec.ts b/test/unit/common/modules/mailer/mailer.manager.spec.ts index bf0fd35a..af7fa73f 100644 --- a/test/unit/common/modules/mailer/mailer.manager.spec.ts +++ b/test/unit/common/modules/mailer/mailer.manager.spec.ts @@ -3,33 +3,17 @@ import { mailerServiceMockFactory, MockType } from '../../../mock'; import { MailerService } from '@nestjs-modules/mailer'; import { MailerManager } from '../../../../../src/common'; import { customerStakingRequestService, labRegister } from './mailer.mock.data'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; describe('Mailer Manager Unit Tests', () => { let mailerManager: MailerManager; let mailerServiceMock: MockType; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([['POSTGRES_HOST', '']]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } - // Arrange before each iteration beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ MailerManager, { provide: MailerService, useFactory: mailerServiceMockFactory }, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, ], }).compile(); diff --git a/test/unit/common/modules/substrate/substrate.service.spec.ts b/test/unit/common/modules/substrate/substrate.service.spec.ts index 53e06aef..a3edb049 100644 --- a/test/unit/common/modules/substrate/substrate.service.spec.ts +++ b/test/unit/common/modules/substrate/substrate.service.spec.ts @@ -2,7 +2,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { mockFunction } from '../../../mock'; import { ProcessEnvProxy, SubstrateService } from '../../../../../src/common'; import { ApiPromise, Keyring } from '@polkadot/api'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; +import { config } from '../../../../../src/config'; jest.mock('../../../mock', () => ({ mockFunction: jest.fn(), @@ -14,21 +14,8 @@ const keyringSpy = jest.spyOn(Keyring.prototype, 'addFromUri'); describe.only('Substrate Service Unit Test', () => { let substrateService: SubstrateService; - const SUBSTRATE_URL = 'URL'; - const ADMIN_SUBSTRATE_MNEMONIC = 'ADDR'; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['ADMIN_SUBSTRATE_MNEMONIC', ADMIN_SUBSTRATE_MNEMONIC], - ['SUBSTRATE_URL', SUBSTRATE_URL], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } + const SUBSTRATE_URL = config.SUBSTRATE_URL; + const ADMIN_SUBSTRATE_MNEMONIC = config.ADMIN_SUBSTRATE_MNEMONIC; class ProcessEnvProxyMock { env = { @@ -41,10 +28,6 @@ describe.only('Substrate Service Unit Test', () => { providers: [ SubstrateService, { provide: ProcessEnvProxy, useClass: ProcessEnvProxyMock }, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, ], }).compile(); diff --git a/test/unit/endpoints/email/email.controller.spec.ts b/test/unit/endpoints/email/email.controller.spec.ts index 4e30e830..cc869285 100644 --- a/test/unit/endpoints/email/email.controller.spec.ts +++ b/test/unit/endpoints/email/email.controller.spec.ts @@ -6,7 +6,6 @@ import { } from '../../../../src/common'; import { emailNotificationServiceMockFactory, - googleSecretManagerServiceMockFactory, mailerManagerMockFactory, MockType, substrateServiceMockFactory, @@ -16,7 +15,6 @@ import { Response } from 'express'; import { Test, TestingModule } from '@nestjs/testing'; import * as labQuery from '@debionetwork/polkadot-provider/lib/query/labs'; import { when } from 'jest-when'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; describe('Email Controller', () => { let emailEndpointControllerMock: EmailEndpointController; @@ -49,10 +47,6 @@ describe('Email Controller', () => { provide: EmailNotificationService, useFactory: emailNotificationServiceMockFactory, }, - { - provide: GCloudSecretManagerService, - useFactory: googleSecretManagerServiceMockFactory, - }, ], }).compile(); diff --git a/test/unit/endpoints/recaptcha/recaptcha.controller.spec.ts b/test/unit/endpoints/recaptcha/recaptcha.controller.spec.ts index 14500c5d..c4655f4c 100644 --- a/test/unit/endpoints/recaptcha/recaptcha.controller.spec.ts +++ b/test/unit/endpoints/recaptcha/recaptcha.controller.spec.ts @@ -3,35 +3,18 @@ import { Response } from 'express'; import MockAdapter from 'axios-mock-adapter'; import { TestingModule, Test } from '@nestjs/testing'; import { RecaptchaController } from '../../../../src/endpoints/recaptcha/recaptcha.controller'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; +import { config } from '../../../../src/config'; describe('Recaptcha Controller Unit Tests', () => { let recaptchaController: RecaptchaController; const axiosMock = new MockAdapter(axios); - const RECAPTCHA_SECRET_KEY = 'KEY'; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['RECAPTCHA_SECRET_KEY', RECAPTCHA_SECRET_KEY], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } + const RECAPTCHA_SECRET_KEY = config.RECAPTCHA_SECRET_KEY; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [RecaptchaController], - providers: [ - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, - ], + providers: [], }).compile(); recaptchaController = module.get(RecaptchaController); diff --git a/test/unit/endpoints/substrate-endpoint/substrate-endpoint.controller.spec.ts b/test/unit/endpoints/substrate-endpoint/substrate-endpoint.controller.spec.ts index 01f2def7..cb77f914 100644 --- a/test/unit/endpoints/substrate-endpoint/substrate-endpoint.controller.spec.ts +++ b/test/unit/endpoints/substrate-endpoint/substrate-endpoint.controller.spec.ts @@ -29,7 +29,7 @@ import { setGeneticAnalysisOrderPaid, adminSetEthAddress, } from '@debionetwork/polkadot-provider'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; +import { config } from '../../../../src/config'; jest.mock('@debionetwork/polkadot-provider', () => ({ queryAccountIdByEthAddress: jest.fn(), @@ -54,7 +54,7 @@ describe('Substrate Endpoint Controller Unit Tests', () => { let geneticAnalysisMock: MockType; let geneticAnalysisOrderMock: MockType; - const DEBIO_API_KEY = 'KEY'; + const DEBIO_API_KEY = config.DEBIO_API_KEY.toString(); const labServiceMockFactory: () => MockType = jest.fn(() => ({ getByCountryCityCategory: jest.fn(), @@ -108,17 +108,6 @@ describe('Substrate Endpoint Controller Unit Tests', () => { getGeneticAnalysisOrderById: jest.fn(), })); - class GoogleSecretManagerServiceMock { - _secretsList = new Map([['DEBIO_API_KEY', DEBIO_API_KEY]]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } - class SubstrateServiceMock { api = 'API'; pair = 'PAIR'; @@ -162,10 +151,6 @@ describe('Substrate Endpoint Controller Unit Tests', () => { useFactory: geneticAnalysisOrderMockfactory, }, { provide: DateTimeProxy, useFactory: dateTimeProxyMockFactory }, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, ], }).compile(); diff --git a/test/unit/endpoints/verification/verification.controller.spec.ts b/test/unit/endpoints/verification/verification.controller.spec.ts index a5d17d7e..2697e1a1 100644 --- a/test/unit/endpoints/verification/verification.controller.spec.ts +++ b/test/unit/endpoints/verification/verification.controller.spec.ts @@ -3,7 +3,7 @@ import { MockType } from '../../mock'; import { VerificationService } from '../../../../src/endpoints/verification/verification.service'; import { VerificationController } from '../../../../src/endpoints/verification/verification.controller'; import httpMocks = require('node-mocks-http'); -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; +import { config } from '../../../../src/config'; describe('Verification Controller Unit Tests', () => { let verificationController: VerificationController; @@ -15,19 +15,6 @@ describe('Verification Controller Unit Tests', () => { })); let verificationServiceMock: MockType; - class GoogleSecretManagerServiceMock { - _secretsList = new Map([ - ['DEBIO_API_KEY', 'DEBIO_API_KEY'], - ]); - loadSecrets() { - return null; - } - - getSecret(key) { - return this._secretsList.get(key); - } - } - // Arrange before each iteration beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ @@ -37,10 +24,6 @@ describe('Verification Controller Unit Tests', () => { provide: VerificationService, useFactory: verificationServiceMockFactory, }, - { - provide: GCloudSecretManagerService, - useClass: GoogleSecretManagerServiceMock, - }, ], }).compile(); @@ -80,7 +63,7 @@ describe('Verification Controller Unit Tests', () => { // Arrange const EXPECTED_STATUS = 500; const EXPECTED_RESULT = "I just don't feel like it"; - const API_KEY = 'DEBIO_API_KEY'; + const API_KEY = config.DEBIO_API_KEY; const ACCOUNT_ID = 'ACCOUT_ID'; const VERIFICATION_STATUS = 'VERIFICATION_STATUS'; verificationServiceMock.verificationLab.mockImplementation(() => @@ -106,7 +89,7 @@ describe('Verification Controller Unit Tests', () => { // Arrange const EXPECTED_STATUS = 500; const EXPECTED_RESULT = "I just don't feel like it"; - const API_KEY = 'DEBIO_API_KEY'; + const API_KEY = config.DEBIO_API_KEY; const ACCOUNT_ID = 'ACCOUT_ID'; const VERIFICATION_STATUS = 'VERIFICATION_STATUS'; verificationServiceMock.verificationGeneticAnalyst.mockImplementation(() => @@ -132,7 +115,7 @@ describe('Verification Controller Unit Tests', () => { // Arrange const EXPECTED_STATUS = 200; const EXPECTED_RESULT = 'Verified, and Got Reward 2 DBIO'; - const API_KEY = 'DEBIO_API_KEY'; + const API_KEY = config.DEBIO_API_KEY; const ACCOUNT_ID = 'ACCOUT_ID'; const VERIFICATION_STATUS = 'Verified'; @@ -155,7 +138,7 @@ describe('Verification Controller Unit Tests', () => { // Arrange const EXPECTED_STATUS = 200; const EXPECTED_RESULT = 'Verified'; - const API_KEY = 'DEBIO_API_KEY'; + const API_KEY = config.DEBIO_API_KEY; const ACCOUNT_ID = 'ACCOUT_ID'; const VERIFICATION_STATUS = 'Verified'; diff --git a/test/unit/mock.ts b/test/unit/mock.ts index 9f5385c2..42aae5f4 100644 --- a/test/unit/mock.ts +++ b/test/unit/mock.ts @@ -23,8 +23,6 @@ import { CountryService } from '../../src/endpoints/location/country.service'; import { StateService } from '../../src/endpoints/location/state.service'; import { SchedulerRegistry } from '@nestjs/schedule'; import { NotificationService } from '../../src/common/modules/notification/notification.service'; -import { GCloudSecretManagerService } from '@debionetwork/nestjs-gcloud-secret-manager'; -import { keyList } from '../../src/common/secrets'; export function mockFunction(args) {} // eslint-disable-line @@ -373,10 +371,3 @@ export const schedulerRegistryMockFactory: () => MockType = jest.fn(() => ({ addInterval: jest.fn(), })); - -export const googleSecretManagerServiceMockFactory: () => MockType< - GCloudSecretManagerService -> = jest.fn(() => ({ - loadSecrets: jest.fn((entity) => entity), - getSecret: jest.fn((entity) => entity), -}));