# Guide

## Setup OIDC Authentication with Google Provider&#x20;

To use Google Sign In, you will need to create a project on the [Google Developer Console](https://console.developers.google.com) and create an OAuth 2.0 client ID.&#x20;

1. Get an app set up on the Google Developer Console&#x20;
2. Go to the Credentials Page Create an app for your project if you haven't already.&#x20;
3. Once that's done, click "Create Credentials" and then "OAuth client ID." You will be prompted to set the product name on the consent screen, go ahead and do that.

{% hint style="info" %}
**After updating  .env file, you have trigger code rebuild by modifying this file /screens/SocialLogin/behaviors.js. Just add a new line or any change and save it then relaunch the app.**
{% endhint %}

### Connect to your Expo account

When using Expo services like AuthSession, you should use `expo start` and login to your Expo.io account because`react-native-scripts start` uses a logged-out, anonymous developer account that's why you will have a warning message ***You are not currently signed in you Expo on your development machine.***

## Available scripts

This app include all necessary scripts to launch the commons tasks:

```bash
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "jest && eslint .",
    "test:watch": "jest --watch",
    "test:updateSnapshot": "jest --updateSnapshot",
    "test:coverage": "jest --coverage",
    "test:coverage:watch": "jest --coverage --watch",
    "lint:fix": "eslint --fix src",
    "precommit": "yarn test",
    "postinstall": "rndebugger-open",
    "server": "json-server --watch api/db.json --routes api/apiRoutes.json --port 3004"
  }
```

## Testing

### Launching tests

Launch this command to execute tests:&#x20;

```bash
$ yarn test
or
$ npm run test
```

Tests are also launched before each push using a Git hook

To generate test coverage reports, use the command:&#x20;

```bash
$ yarn test:coverage
or
$ npm run test:coverage
```

To update Jest Snapshots , use the command:

```bash
$ yarn test:updateSnapshot
or
$ npm run test:updateSnapshot
```
