Bug: [FEAT] Multiple credential support for a connector in Cypress



## Requirement

Execute cypress tests for a connector having **multiple credentials** which can be used for different scenarios (one api key for `cards`, another for `bank redirects` and etc.,).

## Implementation

### Introduce new format for `creds.json`

`creds.json` should include both the formats. if a connector requires us passing **multiple credentials**, then that connector api key object **should** include multiple `connector_account_details` object all named under a generic name `connector_<number>` where `number` is an `integer`.

Refer example given below for more clarity:

```json
// connector having multiple credentials
<connector_name_1>: {
    "connector_1": {
        "connector_account_details": {
            "auth_type": "KeyType",
            "api_key": "",
            "api_secret": "",
            "key1": "",
            "key2": ""
        },
        "metadata": {}
    },
    "connector_2": {
        "connector_account_details": {
            "auth_type": "KeyType",
            "api_key": "",
            "api_secret": "",
            "key1": "",
            "key2": ""
        },
        "metadata": {}
    },
},
// connector with a single credential
<connector_name_2>: {
	"connector_account_details": {
		"auth_type": "KeyType",
		"api_key": "",
		"api_secret": "",
		"key1": "",
		"key2": ""
	}
}
```

### Introduce new `object` (`Configs`) for `connector.js`

Within `connector.js`, introduce new object called as `Configs` alongside to `Request` and `Response` where user can define `flags` to achieve granular control over what test is being run.

An example implementation given below for reference:

```js
getCustomExchange({
	Configs: {
		TRIGGER_SKIP: true, // skips redirection flow from running. takes in a boolean
		DELAY: {
			STATUS: true, // flag to turn delay feature on or off. takes in a boolean
			TIMEOUT: 5000, // timeout in milliseconds
		},
		CONNECTOR_CREDENTIAL: connector_1 / connector_2 // flag to route tests to a specific profile
		// etc.,
	},
	Requst: {},
	Response: {}
}),
```

### Modify `getValueByKey` function in `Utils.js`

Validate if `connector_account_details` dot exist within `<connector>` object in creds.
If it does not, start a loop and see if `connector_account_details` exist within every object. If true, return the `connector_account_details` while setting an object as a Cypress environment flag (`MULTIPLE_CONNECTORS`) with status `true` and length. If any validation fails, directly return the object (`data[key]`).

An example implementation given below for reference:

```js
if (data && typeof data === "object" && key in data) {
	// Connector object has multiple keys
	if (typeof data[key].connector_account_details === "undefined") {
		const keys = Object.keys(data[key]);

		for (let i = 0; i < keys.length; i++) {
			const currentItem = data[key][keys[i]];

			if (currentItem.hasOwnProperty("connector_account_details")) {
				Cypress.env("MULTIPLE_CONNECTORS", {
					status: true,
					count: keys.length,
				});

				return currentItem;
			}
		}
	}

	return data[key];
} else {
	return null;
}

```

### Add a new test to MCA create call

If `MULTIPLE_CONNECTORS.status` is `TRUE`. Check `MULTIPLE_CONNECTORS.count` and create `profile` and `mca` beneath that `profile` based on the number of `count`.

An example of possible implementation given below for reference:

```js
if (Cypress.env("MULTIPLE_CONNECTORS")?.status) {
	for (let i = 0; i < Cypress.env("MULTIPLE_CONNECTORS").count; i++) {
		cy.createBusinessProfileTest(
			createBusinessProfileBody,
			globalState,
			"profile" + i // new optional fields
		);
		cy.createConnectorCallTest(
			"payment_processor",
			createConnectorBody,
			payment_methods_enabled,
			globalState,
			"profile" + i, // new optional fields
			"merchantConnector" + i // new optional fields
		);
	}
}
```

Store these created `profile_id`s and `mca`s in `globalState` for future usage.
Pass `CONNECTOR_CREDENTIAL` value as `connector_1` or `connector_2` in `<connector>.js`
In `commands.js`, `execute` these configs before a `request` has been made.
`execute` here means to make these configs work.

Preferably, make this execution of configs a function and pass the values accordingly along with trace to find from where the function has been called.

## Limitations

- Cypress cannot call itself unless a wrapper around Cypress is written (`Rustpress`?)
  - This stops us from running the entire test suite against every credentials
  - One possible work around for this is to have multiple keys (`cybersource_1`, `cybersource_2`) but this will result in a lot of confusion
- Current implementation **requires** the user to mandatorily pass a `CONNECTOR_CREDENTIAL` config to pass a different `profileId`
  - Hence, the tests will only run once but, specific tests like `incremental auth` will be forced to run against different credential
- `00025-IncrementalAuth.cy.js` can be stopped from execution based on `MULTIPLE_CONNECTORS` environment variable as it is set during run time and the file is read asynchronously when the execution starts (to address this, we will have to make a function call to see if it is set during run time and it is, then skip)
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [x] CI/CD

## Description
<!-- Describe your changes in detail -->

This PR introduces 2 new features:

- Multiple credentials for a connector
- Configuration flags

closes #6645 (check this issue for detailed documentation / flow / explanation)

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->

- We need to run tests against multiple connector api keys for a single connector
- We also need configuration flag support to selectively grant a test certain features / options

## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->

Only Cybersource with `multiple creds` (takes only from first `connector_1`):

<img width="594" alt="image" src="https://github.com/user-attachments/assets/7c05742c-6331-417a-8699-731285463560">

Cybersource with `multiple creds` (along with `incremental auth`):

<img width="554" alt="image" src="https://github.com/user-attachments/assets/664defa0-2fa4-4189-82f1-987421a48374">

(incremental auth fails from the connector's end and hence 4 failures)

Stripe:

<img width="676" alt="image" src="https://github.com/user-attachments/assets/cc1f2c16-bc9d-417e-94da-18870d9399cd">

Wise:

<img width="567" alt="image" src="https://github.com/user-attachments/assets/512e8bbc-c979-4791-8263-3253e61e193c">

PML:

<img width="549" alt="image" src="https://github.com/user-attachments/assets/e53a72e0-fddc-4351-8557-07058e223be8">

have disabled incremental auth from executing:

<img width="680" alt="image" src="https://github.com/user-attachments/assets/e2cd2e96-326e-422a-a9c4-21bd5a2b86c2">


trustpay refunds (multiple creds):

<img width="675" alt="image" src="https://github.com/user-attachments/assets/7fcb908f-de34-4d28-ac10-e4082ad3d54c">

i commented iDEAL redirections to check, error is being thrown from connector's end and there's nothing much i can do:

<img width="607" alt="image" src="https://github.com/user-attachments/assets/689979c8-d044-4b5f-a5a8-9ea8e15860e1">
<img width="1364" alt="image" src="https://github.com/user-attachments/assets/b0261af6-68c7-445f-af79-5e9d16bdc7fa">

<img width="555" alt="image" src="https://github.com/user-attachments/assets/fae0d997-695b-4db2-8f3e-0afad44c9c3e">

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `prettier . --write`
- [ ] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
