Skip to main content

TestHarness

Struct TestHarness 

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

Test harness that can run the full test suite against any connector.

Loads credentials from .env at construction time and provides helpers to create public or authenticated connectors, query registry metadata, and look up default test symbols.

§Example

let harness = TestHarness::new();

for id in harness.available_exchanges() {
    let connector = harness.create_authenticated(id).await
        .expect("creds found")
        .expect("connector created");
    // run suite...
}

Implementations§

Source§

impl TestHarness

Source

pub fn new() -> Self

Create a new harness, loading credentials from .env.

Source

pub fn available_exchanges(&self) -> Vec<ExchangeId>

Get the list of exchanges that have API keys available in .env.

Source

pub fn all_exchanges() -> Vec<ExchangeId>

Get the list of ALL registered exchanges (for public-only tests).

Uses the static ConnectorRegistry to enumerate every known connector.

Source

pub async fn create_public( &self, id: ExchangeId, testnet: bool, ) -> ExchangeResult<Arc<dyn CoreConnector>>

Create a public (unauthenticated) connector for id.

Pass testnet: true to use the exchange’s testnet/sandbox environment.

Source

pub async fn create_authenticated( &self, id: ExchangeId, ) -> Option<ExchangeResult<Arc<dyn CoreConnector>>>

Create an authenticated connector for id, if credentials are available.

Returns None if no credentials are present for this exchange. Returns Some(Err(_)) if credentials exist but connector creation fails.

Source

pub fn test_symbol(id: ExchangeId) -> &'static str

Get a default, liquid test symbol for an exchange.

Returns a safe symbol appropriate for the exchange category:

  • Crypto CEX/DEX derivatives → "BTC/USDT" or perpetual equivalent
  • US stocks → "AAPL"
  • Forex → "EUR/USD"
  • Data aggregators → "BTC/USD"

Trait Implementations§

Source§

impl Default for TestHarness

Source§

fn default() -> Self

Returns the “default value” for a type. 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<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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> 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 = Infallible

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