Harsh Vardhan c05408413d [INJI-314] [INJI-900] add jest testing config, mocks and sample unit tests for Inji (#1340)
* [INJI-314] initial commit

Signed-off-by: Sri Kanth Kola <srikanthsri7447@gmail.com>

* [INJI-314] add WIP ut stuff

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-314] fix tsconfig for project type

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-314] kludge - skip checking types during unit tests

* mock image imports globally
* enable tests to run from any dir

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-314]: mocked modules

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-314]: mock react-native-google-signin

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-314]: use defined mock from google-signin lib

other details:
- mock base58.., rn-linear-gradient, expo-camera
- add @react-native/assets-registry to make jest-expo babel preset work

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-314] reorganise global const mocks into jest's setupFiles

Co-authored-by: srikanth716 <srikanthsri7447@gmail.com>
Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900] write tests for ActivityLogEvent

* init relevant mocks
* remove redundant global mocks from test files

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900] fixup mocks of mmkv, zip-archive, rnfs

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900]: write unit test for commonUtil

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-900]: write unit test for commonUtil

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-900]: sample unit test for settingsScreen

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-900] add SettingScreen test

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900] update sample tests for commonUtil

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900]: refactoring the settingsScreen test for Android and IOS

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-900] update test snapshots and add kludge in auth for testing

kludge: auth state machine now exports a selector with optional fields
as state machine isn't running in a test environment

Co-authored-by: srikanth716 <srikanthsri7447@gmail.com>
Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900]: snapshot test to settings screen

Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>

* [INJIMOB-900] update mocks for testing and ACK reviews

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900] downgrade expo to match compatibility matrix

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900] upgrade expo to 49 to build the iOS app(kludge)

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

* [INJIMOB-900] configure react-native-vector-icons as per README

Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>

---------

Signed-off-by: Sri Kanth Kola <srikanthsri7447@gmail.com>
Signed-off-by: Harsh Vardhan <harsh59v@gmail.com>
Signed-off-by: srikanth716 <srikanthsri7447@gmail.com>
Co-authored-by: Sri Kanth Kola <srikanthsri7447@gmail.com>
2024-04-02 11:22:01 +05:30
2022-02-15 10:26:25 +07:00
2022-05-11 18:40:05 +08:00
2023-12-20 10:17:46 +05:30
2022-02-28 13:39:10 +08:00
2022-02-15 10:26:25 +07:00

Inji

Inji Mobile Wallet is a mobile application specifically created to streamline all types of identification and credentials into one digital wallet. It offers a secure, trustworthy, and dependable mobile Verifiable Credentials wallet designed to fulfil the following functions

  • Download and store Verifiable Credentials
  • Conduct offline face authentication
  • Share Verifiable Credentials
  • Enable users to log in to online portals

for more details refer here

Setup PreRequisites

Be sure to have the following build tools installed before proceeding:

Android

iOS

  • XCode = >15
  • Minimum Deployment Target = 13.0
  • cocoapods > 1.12
  • Ruby >= 2.6.10

Configuring the Environment

Create a .env.local file using .env as your template in your root directory :

# Mimoto Server
MIMOTO_HOST =  https://api.collab.mosip.net/

# ESignet Server
ESIGNET_HOST =  https://esignet.collab.mosip.net/

# Telemetry Server
OBSRV_HOST = https://dataset-api.obsrv.mosip.net
Telemetry Dashboard = https://druid.obsrv.mosip.net/unified-console.html#workbench

for more information on the backend services refer here.

Building & Running for Android

Generate keystore

# Generate and use Release keystore for Publishing to Play store
keytool \
-genkey -v \
-storetype PKCS12 \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-storepass '<USE-YOUR-RELEASE-PASSWORD-HERE>' \
-keypass '<USE-YOUR-RELEASE-PASSWORD-HERE>' \
-alias androidreleasekey \
-keystore android/app/release.keystore \
-dname "CN=io.mosip.residentapp,OU=,O=,L=,S=,C=US"

Build via Android Studio

The app is available in this repository's frontend/android directory. Open this directory in Android Studio (version
4.1 and above) and the app can be built and run from there.

More info here: Build your app using Android Studio

Build via command line

You need Android SDK CLI to build APK.

# 1. Install dependencies
npm install

# 2. Setup the environment variables for the keystore

# Debug keystore
export DEBUG_KEYSTORE_ALIAS=androiddebugkey
export DEBUG_KEYSTORE_PASSWORD=android

# Release keystore
export RELEASE_KEYSTORE_ALIAS=androidreleasekey
export RELEASE_KEYSTORE_PASSWORD=<USE-YOUR-RELEASE-PASSWORD-HERE>

# https://hostname/residentmobileapp is the Mimoto service url
export BACKEND_SERVICE_URL=https://hostname/residentmobileapp

# Build for MOSIP test
npm run build:android:mosip

More info here: Build your app from the command line

Building & Running for iOS

Build for TestFlight

  • Install all dependencies
npm install
npx pod-install
  • Open the ios/ directory in XCode
  • Set the build target to "Any iOS device (arm64)"
  • Use an Apple Developer account that can provision builds for release/TestFlight

Screen Shot 2022-09-01 at 10 34 45 AM

  • Don't forget to bump the version number when creating an archive
  • Open the Product menu and from there click Archive
  • Once done you can follow the dialog wizard to distribute the app to TestFlight

Screen Shot 2022-09-01 at 1 08 34 PM

More info here:

Contributions

Please refer here for contributing to Inji

Credits

Credits listed here

Troubleshooting

If you can't get this to work, see the Troubleshooting page. this project runtime can be debugged using Flipper.

Learn More

To learn more about React Native, take a look at the following resources:

Description
No description provided
Readme MIT 296 MiB
Languages
TypeScript 86.6%
Kotlin 5.2%
Swift 2.7%
Java 2.6%
JavaScript 1.4%
Other 1.4%