# `Macaw.Auth.Conformance.Fixtures`
[🔗](https://github.com/dcoai/macaw_auth/blob/v0.4.1/lib/macaw/auth/conformance.ex#L45)

What a backend gives the conformance kit.

# `delete!`

```elixir
@callback delete!(Macaw.Auth.User.t()) :: :ok
```

Deletes a user from the backend's store, as an administrator would,
after they signed in: the kit then asks for a session for them.

# `disable!`

```elixir
@callback disable!(Macaw.Auth.User.t()) :: :ok
```

Disables a user.

# `enroll_second_factor!`

```elixir
@callback enroll_second_factor!(Macaw.Auth.User.t()) :: (-&gt; String.t())
```

Enrolls `user` in the backend's second factor, the way a user would
(begin, then confirm with a valid code), and returns a function that
gives a code the backend accepts at the moment it is called and has
not yet accepted: a fresh device's current code. (A fixture that
confirmed with the current step's code should have confirmed with the
previous step's, so the current one is still unspent.)

# `idle_seconds`

```elixir
@callback idle_seconds() :: pos_integer()
```

How long a session may idle before it expires, in seconds.

# `reset!`

```elixir
@callback reset!() :: :ok
```

Resets the backend's store before each test.

# `stored_session_values`

```elixir
@callback stored_session_values() :: [binary()]
```

Every value the backend stores for sessions (to prove no token is stored as is).

# `user!`

```elixir
@callback user!(map()) :: {Macaw.Auth.User.t(), map()}
```

Makes a user; `attrs` may set `:second_factor` (`:none | :enrolled |
:required`). Returns the user and credentials that sign it in.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
