> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flinks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GEFT Test Scenarios

> Review all available sandbox test scenarios for GEFT including happy paths and error cases.

This guide covers all available test scenarios in the GEFT sandbox environment. Each scenario simulates different user behaviors and system responses.

## Happy Path Scenarios

### Happy Path 1 - Standard Success Flow

Simulates a generic, error-free EFT flow representing the standard end-user journey.

**Expected Behavior:**

* Standard end-user flow with no errors
* Full guarantee is offered automatically
* Flow completes successfully without retries or interruptions

**Test Data:**

* **ReferenceId**: `Happy1`
* **Username**: `Happy1`
* **Password**: `Everyday`
* **Customer**: John Doe
* **Amount**: \$100

**Session Request:**

```json theme={null}
{
  "referenceId": "Happy1",
  "type": "EFT",
  "direction": "DEBIT",
  "currency": "CAD",
  "options": {
    "guarantee": {
      "enable": true
    },
    "notificationPreferences": {
      "language": "EN"
    }
  },
  "payor": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "j.doe@gmail.com",
    "address": {
      "addressLine1": "123 Front Avenue",
      "city": "Toronto",
      "postalCode": "h2eh2e",
      "province": "ON",
      "country": "CA"
    }
  },
  "payee": {
    "account": {
      "accountNumber": "9876541",
      "transitNumber": "60265",
      "institutionCode": "999"
    }
  }
}
```

**User Flow:**

1. Add SessionId to iFrame → Flinks consent screen displayed
2. Institution Selection → User selects bank → Connection screen appears
3. Standard Flinks Connect Flow → Account selection and MFA (if applicable)
4. Funding Screen → User enters deposit amount
5. Review Details Screen → User reviews entered information
6. PAD Agreement Screen → Custom Pre-Authorized Debit consent for user signature

### Happy Path 2 - Next Best Offer Flow

Simulates a scenario where the user cannot move the initially requested amount but receives a next-best-offer (reduced amount).

**Expected Behavior:**

* End-user flow proceeds without errors
* Next-best-offer displayed when original funding amount cannot be processed
* Full guarantee still offered after accepting new amount

**Test Data:**

* **ReferenceId**: `Happy2`
* **Username**: `Happy2`
* **Password**: `Everyday`
* **Customer**: Steve Diamond
* **Amount**: \$1,000

**Session Request:**

```json theme={null}
{
  "referenceId": "Happy2",
  "type": "EFT",
  "direction": "DEBIT",
  "currency": "CAD",
  "options": {
    "guarantee": {
      "enable": true
    },
    "notificationPreferences": {
      "language": "EN"
    }
  },
  "payor": {
    "firstName": "Steve",
    "lastName": "Diamond",
    "email": "steve.diamond@example.com",
    "address": {
      "addressLine1": "123 street",
      "city": "Toronto",
      "postalCode": "h2eh2e",
      "province": "ON",
      "country": "CA"
    }
  },
  "payee": {
    "account": {
      "accountNumber": "9876541",
      "transitNumber": "30265",
      "institutionCode": "999"
    }
  }
}
```

### Happy Path 3 - French Language Flow

Tests French language interface for Quebec users.

**Expected Behavior:**

* Flow displayed in French
* All messaging and UI elements in French
* Standard successful completion

**Test Data:**

* **ReferenceId**: `Happy3`
* **Username**: `Happy3`
* **Password**: `Everyday`
* **Customer**: Alex Rider (Quebec)

## Unhappy Path Scenarios

### Unhappy Path 1 - Guarantee Failure

Simulates scenario where guarantee cannot be provided.

**Expected Behavior:**

* User completes authentication and account connection
* Guarantee evaluation fails
* `GUARANTEE_FAILED` event fired
* User must use alternative payment method

**Test Data:**

* **ReferenceId**: `Unhappy1`
* **Username**: `Unhappy1`
* **Password**: `Everyday`
* **Customer**: Joe Fails
* **Expected Status**: `Failed` with `EFT0402` (Eligibility Failed)

## Interactive Test Scenarios

### Refuse Next Best Offer (NBO)

1. Use Happy2 scenario to trigger NBO
2. When NBO screen appears, click "Other funding options"
3. Expect `COMPONENT_OTHER_FUNDING_OPTIONS_SELECTED` event
4. Handle return to your application

### Accept NBO but Refuse PAD Agreement

1. Use Happy2 scenario to trigger NBO
2. Accept the reduced amount
3. When PAD agreement appears, reject it
4. Expect `COMPONENT_PAD_REJECTED` event
5. Handle payment method alternatives

### Cancel on Deposit Screen

1. Start any Happy scenario
2. Reach deposit amount screen
3. Cancel/close the flow
4. Expect `CLOSE` event
5. Handle user cancellation gracefully

### Name Mismatch Error

1. Create session with incorrect firstName/lastName
2. Use correct test credentials in flow
3. Expect identity validation failure
4. Status should be Failed with EFT0403

## Testing Each Scenario

For each test scenario:

1. **Create session** using the provided session request JSON
2. **Launch widget** with the returned sessionId
3. **Enter credentials** using the specified username/password
4. **Follow the expected flow** and verify expected behavior
5. **Monitor events** to ensure proper event handling
6. **Check final status** using the [/sessions/status](/api/pay/endpoints/geft/sessions-status) endpoint

## Next Steps

* **[Testing Best Practices](/guides/pay/geft/testing-best-practices)**: Implement automated testing
* **[Production Readiness](/guides/pay/geft/production-readiness)**: Verify you're ready to go live
* **[Event Handling](/guides/pay/geft/event-handling)**: Understanding widget events
