Issue:
[FEATURE] Create a dummy connector for internal and external testing of payments and refunds flows

### Feature Description

A dummy test connector needs to be created with the ability to process all the payment methods available on Hyperswitch. This dummy connector will be useful for internal and external testing and it will be used extensively by those trying to test or integrate Hyperswitch without setting up any active accounts with any of the processors. 

The dummy test connector will be able to simulate most basic scenarios (success/failure/pending) for all the available payment methods by having separate test payment method data for each of these flows. Payment failure can include further breakdown in scenarios according to the payment methods. 

For example, there should be separate test card numbers for simulating success, failure, pending statuses of 3DS and Non 3DS flows. Under failure, different test card numbers should enable simulating errors like invalid card info, insufficient funds, declined by gateway, declined by issuing bank, declines due to bad fraud score, etc. 

### Possible Implementation

We would need to create a dummy connector to test all the payment flows, refund flows, webhooks, etc.

The two major tasks are:
1. Server implementation for dummy connector for the following endpoints
a. payments #980
b. refunds #1071 
c. webhooks 

2. Integrating Hyperswitch with the dummy connector for the following endpoints
a. payments #1084 
b. refunds #1084 
c. webhooks 

3. Enable Dummy Connector and make it default

**Cards:**
Non- 3DS payments flow https://github.com/juspay/hyperswitch/issues/727


### Have you spent some time to check if this feature request has been raised before?

- [X] I checked and didn't find similar issue

### Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

No, but I'm happy to collaborate on a PR with someone else

Resolution:
<think>
PR Context:
- Title: feat(connector): add multiple dummy connectors and enable them
- Merged: 2023-05-13T11:12:49Z
- Files changed: 6 files
- Commits: 2 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
Add multiple dummy connectors and enable dummy connector by default

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment 
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(connector): add multiple dummy connectors and enable them (#1147)
Files to modify:


**crates/api_models/src/enums.rs**
  Modify existing code

**crates/router/src/connector/dummyconnector.rs**
  Remove:
    - struct: pub::DummyConnector
    - impl: impl api::Payment for DummyConnector
    - impl: impl api::PaymentSession for DummyConnector
    - impl: impl api::ConnectorAccessToken for DummyConnector
    - impl: impl api::PreVerify for DummyConnector
    - impl: impl api::PaymentAuthorize for DummyConnector
    - impl: impl api::PaymentSync for DummyConnector
    - impl: impl api::PaymentCapture for DummyConnector
    - impl: impl api::PaymentVoid for DummyConnector
    - impl: impl api::Refund for DummyConnector
    - impl: impl api::RefundExecute for DummyConnector
    - impl: impl api::RefundSync for DummyConnector
    - impl: impl api::PaymentToken for DummyConnector
    - impl: impl impl<Flow, Request, Response> ConnectorCommonExt<Flow, Request, Response> for DummyConnector
    - impl: impl ConnectorCommon for DummyConnector
    - impl: impl ConnectorIntegration<api::Session, types::PaymentsSessionData, types::PaymentsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::AccessTokenAuth, types::AccessTokenRequestData, types::AccessToken> for DummyConnector
    - impl: impl ConnectorIntegration<api::Verify, types::VerifyRequestData, types::PaymentsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::PaymentsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::PaymentsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsResponseData> for DummyConnector
    - impl: impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponseData> for DummyConnector
    - impl: impl api::IncomingWebhook for DummyConnector
  Add:
    - struct: pub::DummyConnector
    - impl: impl api::Payment for DummyConnector<T>
    - impl: impl api::PaymentSession for DummyConnector<T>
    - impl: impl api::ConnectorAccessToken for DummyConnector<T>
    - impl: impl api::PreVerify for DummyConnector<T>
    - impl: impl api::PaymentAuthorize for DummyConnector<T>
    - impl: impl api::PaymentSync for DummyConnector<T>
    - impl: impl api::PaymentCapture for DummyConnector<T>
    - impl: impl api::PaymentVoid for DummyConnector<T>
    - impl: impl api::Refund for DummyConnector<T>
    - impl: impl api::RefundExecute for DummyConnector<T>
    - impl: impl api::RefundSync for DummyConnector<T>
    - impl: impl api::PaymentToken for DummyConnector<T>
    - impl: impl impl<const T: u8, Flow, Request, Response> ConnectorCommonExt<Flow, Request, Response>
    for DummyConnector<T>
impl<const T: u8> ConnectorCommon for DummyConnector<T> {
        match T
    - impl: impl ConnectorIntegration<api::Session, types::PaymentsSessionData, types::PaymentsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::AccessTokenAuth, types::AccessTokenRequestData, types::AccessToken> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::Verify, types::VerifyRequestData, types::PaymentsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::Authorize, types::PaymentsAuthorizeData, types::PaymentsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::Capture, types::PaymentsCaptureData, types::PaymentsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::Void, types::PaymentsCancelData, types::PaymentsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::Execute, types::RefundsData, types::RefundsResponseData> for DummyConnector<T>
    - impl: impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponseData> for DummyConnector<T>
    - impl: impl api::IncomingWebhook for DummyConnector<T>

**crates/router/src/core/payments/flows.rs**
  Add:
    - function: private::get_flow_type
    - impl: impl api::PaymentsCompleteAuthorize for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::CompleteAuthorize,
        types::CompleteAuthorizeData,
        types::PaymentsResponseData,
    > for connector::DummyConnector<T>
    - impl: impl api::ConnectorCustomer for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::CreateConnectorCustomer,
        types::ConnectorCustomerData,
        types::PaymentsResponseData,
    > for connector::DummyConnector<T>
    - impl: impl services::ConnectorRedirectResponse for connector::DummyConnector<T>
    - impl: impl api::ConnectorTransactionId for connector::DummyConnector<T>
    - impl: impl api::Dispute for connector::DummyConnector<T>
    - impl: impl api::AcceptDispute for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::Accept,
        types::AcceptDisputeRequestData,
        types::AcceptDisputeResponse,
    > for connector::DummyConnector<T>
    - impl: impl api::FileUpload for connector::DummyConnector<T>
    - impl: impl api::UploadFile for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::Upload,
        types::UploadFileRequestData,
        types::UploadFileResponse,
    > for connector::DummyConnector<T>
    - impl: impl api::RetrieveFile for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::Retrieve,
        types::RetrieveFileRequestData,
        types::RetrieveFileResponse,
    > for connector::DummyConnector<T>
    - impl: impl api::SubmitEvidence for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::Evidence,
        types::SubmitEvidenceRequestData,
        types::SubmitEvidenceResponse,
    > for connector::DummyConnector<T>
    - impl: impl api::DefendDispute for connector::DummyConnector<T>
    - impl: impl services::ConnectorIntegration<
        api::Defend,
        types::DefendDisputeRequestData,
        types::DefendDisputeResponse,
    > for connector::DummyConnector<T>

**crates/router/src/types/api.rs**
  Modify existing code

**crates/router/tests/connectors/dummyconnector.rs**
  Modify existing code