diff --git a/app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.test.ts b/app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.test.ts new file mode 100644 index 000000000000..16226d221c2d --- /dev/null +++ b/app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.test.ts @@ -0,0 +1,90 @@ +import { SdkEnvironment } from '@consensys/native-ramps-sdk'; +import { getSdkEnvironment } from './getSdkEnvironment'; + +describe('getSdkEnvironment', () => { + const originalEnv = process.env.METAMASK_ENVIRONMENT; + + afterEach(() => { + process.env.METAMASK_ENVIRONMENT = originalEnv; + }); + + describe('Production Environment', () => { + it('returns Production for production environment', () => { + process.env.METAMASK_ENVIRONMENT = 'production'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Production); + }); + + it('returns Production for beta environment', () => { + process.env.METAMASK_ENVIRONMENT = 'beta'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Production); + }); + + it('returns Production for rc environment', () => { + process.env.METAMASK_ENVIRONMENT = 'rc'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Production); + }); + }); + + describe('Staging Environment', () => { + it('returns Staging for dev environment', () => { + process.env.METAMASK_ENVIRONMENT = 'dev'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + + it('returns Staging for exp environment', () => { + process.env.METAMASK_ENVIRONMENT = 'exp'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + + it('returns Staging for test environment', () => { + process.env.METAMASK_ENVIRONMENT = 'test'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + + it('returns Staging for e2e environment', () => { + process.env.METAMASK_ENVIRONMENT = 'e2e'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + }); + + describe('Default/Unknown Environment', () => { + it('returns Staging for undefined environment', () => { + delete process.env.METAMASK_ENVIRONMENT; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + + it('returns Staging for unknown environment value', () => { + process.env.METAMASK_ENVIRONMENT = 'unknown-env'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + + it('returns Staging for empty string environment', () => { + process.env.METAMASK_ENVIRONMENT = ''; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + }); + + describe('Edge Cases', () => { + it('handles case sensitivity correctly', () => { + process.env.METAMASK_ENVIRONMENT = 'PRODUCTION'; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + + it('handles whitespace in environment value', () => { + process.env.METAMASK_ENVIRONMENT = ' production '; + const result = getSdkEnvironment(); + expect(result).toBe(SdkEnvironment.Staging); + }); + }); +}); diff --git a/app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.ts b/app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.ts new file mode 100644 index 000000000000..26b8dd8c5acf --- /dev/null +++ b/app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.ts @@ -0,0 +1,18 @@ +import { SdkEnvironment } from '@consensys/native-ramps-sdk'; + +export function getSdkEnvironment() { + const metamaskEnvironment = process.env.METAMASK_ENVIRONMENT; + switch (metamaskEnvironment) { + case 'production': + case 'beta': + case 'rc': + return SdkEnvironment.Production; + + case 'dev': + case 'exp': + case 'test': + case 'e2e': + default: + return SdkEnvironment.Staging; + } +} diff --git a/app/components/UI/Ramp/Deposit/sdk/index.tsx b/app/components/UI/Ramp/Deposit/sdk/index.tsx index 6b8d8ae330a2..047ece29d8a9 100644 --- a/app/components/UI/Ramp/Deposit/sdk/index.tsx +++ b/app/components/UI/Ramp/Deposit/sdk/index.tsx @@ -13,7 +13,6 @@ import { selectDepositProviderApiKey } from '../../../../../selectors/featureFla import { NativeRampsSdk, NativeTransakAccessToken, - SdkEnvironment, Context, DepositPaymentMethod, DepositRegion, @@ -24,6 +23,7 @@ import { resetProviderToken, storeProviderToken, } from '../utils/ProviderTokenVault'; +import { getSdkEnvironment } from './getSdkEnvironment'; import { fiatOrdersGetStartedDeposit, setFiatOrdersGetStartedDeposit, @@ -58,16 +58,7 @@ export interface DepositSDK { setSelectedCryptoCurrency: (cryptoCurrency: DepositCryptoCurrency) => void; } -const isDevelopment = - process.env.NODE_ENV !== 'production' || - process.env.RAMP_DEV_BUILD === 'true'; -const isInternalBuild = process.env.RAMP_INTERNAL_BUILD === 'true'; -const isDevelopmentOrInternalBuild = isDevelopment || isInternalBuild; - -let environment = SdkEnvironment.Production; -if (isDevelopmentOrInternalBuild) { - environment = SdkEnvironment.Staging; -} +const environment = getSdkEnvironment(); const context = Platform.OS === 'ios' ? Context.MobileIOS : Context.MobileAndroid; diff --git a/babel.config.tests.js b/babel.config.tests.js index e2f805f2ab6d..e21499bb5c73 100644 --- a/babel.config.tests.js +++ b/babel.config.tests.js @@ -17,6 +17,8 @@ const newOverrides = [ 'app/core/Engine/controllers/network-controller/utils.test.ts', 'app/core/Engine/controllers/gator-permissions-controller/gator-permissions-controller-init.ts', 'app/core/Engine/controllers/gator-permissions-controller/gator-permissions-controller-init.test.ts', + 'app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.ts', + 'app/components/UI/Ramp/Deposit/sdk/getSdkEnvironment.test.ts', 'app/components/UI/Ramp/Aggregator/sdk/getSdkEnvironment.ts', 'app/components/UI/Ramp/Aggregator/sdk/getSdkEnvironment.test.ts', 'app/store/migrations/**',