Skip to main content

FakeProvider

Struct FakeProvider 

Source
pub struct FakeProvider { /* private fields */ }
Expand description

An OpenID Connect provider serving its discovery document and token endpoint on a loopback port, which a panel’s OidcProvider reaches as it would a real one.

The browser’s visit to the provider is authorize: it reads the authorization URL the panel redirected to and answers the callback the provider would send the browser back to. The token endpoint checks the client’s secret, the PKCE verifier and the redirect URI, takes each code once, and issues an ID token carrying the nonce the panel sent.

Implementations§

Source§

impl FakeProvider

Source

pub async fn start(client_id: &str, client_secret: &str) -> Self

A provider for the client client_id with client_secret, listening on a free loopback port until dropped.

§Panics

When no loopback port is free.

Source

pub fn issuer(&self) -> &str

The issuer, http://127.0.0.1:{port}.

Source

pub fn provider(&self, key: &str) -> OidcProvider

This provider as a panel installs it, under key, labelled key.

Source

pub fn authorize(&self, location: &str, account: &FakeAccount) -> String

Signs account in at location, the authorization URL a panel redirected the browser to, and answers the path and query the provider sends the browser back to.

§Panics

When location is not this provider’s authorization URL for its client, or asks for no PKCE S256 challenge.

Source

pub fn deny(&self, location: &str) -> String

The account declines at location: the path and query the provider sends the browser back to, carrying error=access_denied.

§Panics

As authorize.

Source

pub fn redeemed(&self) -> usize

How many codes the token endpoint has redeemed.

§Panics

When a request to the fake panicked while holding its lock.

Trait Implementations§

Source§

impl Drop for FakeProvider

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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<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> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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, !>

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