Mediate.Conformance.Versions behaviour (mediate_conformance v0.1.0)

Copy Markdown View Source

What the cm3 laws need and a law cannot write without the adapter's name. It says how this adapter publishes a policy version, how to tighten a rule on it, and how to put the original back. The test passes it to Mediate.Conformance.AdapterCase as versions:. A template given none runs the cm3 laws as skipped and prints the reason.

The laws measure propagation against the tightened version. After tighten/0, the adapter denies the subject focus/1 of the granted world names the first operation the world knows. That subject holds an editor's grant. restore/0 puts the original rule back and returns once it is in force again, because the next law asks with no poll of its own.

These laws write on the committed repo. On some adapters a version is a statement the sandbox's transaction blocks.

Summary

Callbacks

The telemetry event the adapter publishes a policy version on.

Put the original rule back, and return once it is in force.

Prepare an engine that keeps state per test, given the test's tags.

Publish a version that excludes the granted editor from a read, and answer that version.

Callbacks

event()

@callback event() :: [atom()]

The telemetry event the adapter publishes a policy version on.

restore()

@callback restore() :: :ok

Put the original rule back, and return once it is in force.

setup map

(optional)
@callback setup(map()) :: :ok

Prepare an engine that keeps state per test, given the test's tags.

tighten()

@callback tighten() :: {:ok, Mediate.PolicyVersion.t()} | {:error, Mediate.Error.t()}

Publish a version that excludes the granted editor from a read, and answer that version.