# CredentialManagement Testing

## OTPCredential Testing

In this test suite `otpcredential-helper.js` is a testing framework that enables
engines to test OTPCredential by intercepting the connection between the browser
and the underlying operating system and mock its behavior.

Usage:

1. Include the following in your test:
```html
<script src="/resources/test-only-api.js"></script>
<script src="support/otpcredential-helper.js"></script>
```
2. Set expectations
```javascript
await expect(receive).andReturn(() => {
  // mock behavior
})
```
3. Call `navigator.credentials.get({otp: {transport: ["sms"]}})`
4. Verify results

The mocking API is browser agnostic and is designed such that other engines
could implement it too.

Here are the symbols that are exposed to tests that need to be implemented
per engine:

- function receive(): the main/only function that can be mocked
- function expect(): the main/only function that enables us to mock it
- enum State {kSuccess, kTimeout}: allows you to mock success/failures
