Skip to main content

TestIssuer

Struct TestIssuer 

Source
pub struct TestIssuer { /* private fields */ }
Available on crate feature testing only.
Expand description

Mints Clerk-shaped session tokens signed by a local RSA key, and emits the matching JWKS for with_static_jwks.

See the module docs for how to choose between generating a key and loading one from disk.

Implementations§

Source§

impl TestIssuer

Source

pub fn generate() -> Result<Self, TestIssuerError>

Generates a fresh RSA-2048 keypair, held in memory only.

Source

pub fn from_pem(pem: &str) -> Result<Self, TestIssuerError>

Loads a PKCS#1 or PKCS#8 RSA private key from PEM.

Source

pub fn from_pem_file(path: impl AsRef<Path>) -> Result<Self, TestIssuerError>

Loads a private key from a PEM file.

Use this when the key must outlive the test process or be shared with one — a browser test runner minting its own cookies, say. Prefer from_pem_file_or_generate if the file is gitignored, so a fresh checkout does not have to run a setup step first.

Source

pub fn from_pem_file_or_generate( path: impl AsRef<Path>, ) -> Result<Self, TestIssuerError>

Loads a private key from a PEM file, generating and writing one if the file does not exist yet.

This is the path for a gitignored key: the first run creates it, later runs reuse it, and no separate openssl script is needed. Missing parent directories are created.

Concurrent first runs are safe. If another process wins the race to create the file, this returns the key that process wrote rather than the one generated here, so every process ends up on the same key.

Source

pub fn with_key_id(self, key_id: impl Into<String>) -> Self

Overrides the kid used in signed token headers and the emitted JWKS.

Source

pub fn key_id(&self) -> &str

The kid this issuer signs with.

Source

pub fn to_pem(&self) -> Result<String, TestIssuerError>

Serializes the private key as PKCS#1 PEM.

Source

pub fn jwks_json(&self) -> Result<String, TestIssuerError>

The JWKS document for this issuer’s public key.

Pass it to with_static_jwks to verify offline, or serve it from a mock JWKS endpoint to exercise the fetching and caching path as well.

Source

pub fn sign(&self, session: &TestSession) -> Result<String, TestIssuerError>

Signs session into a Clerk-shaped RS256 session token.

Signs session and formats it as a __session cookie header value, the credential Clerk’s browser SDK sends and this crate reads.

Trait Implementations§

Source§

impl Debug for TestIssuer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> InitializeFromFunction<T> for T

Source§

fn initialize_from_function(f: fn() -> T) -> T

Create an instance of this type from an initialization function
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<Ret> SpawnIfAsync<(), Ret> for Ret

Source§

fn spawn(self) -> Ret

Spawn the value into the dioxus runtime if it is an async block
Source§

impl<T, O> SuperFrom<T> for O
where O: From<T>,

Source§

fn super_from(input: T) -> O

Convert from a type to another type.
Source§

impl<T, O, M> SuperInto<O, M> for T
where O: SuperFrom<T, M>,

Source§

fn super_into(self) -> O

Convert from a type to another type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more