// SPDX-License-Identifier: MIT // Copyright (c) 2026 Slick Quant // https://github.com/SlickQuant/alpaca-cpp // // Offline tests for Market Data client construction. Nothing here touches the network: // non-empty credentials short-circuit `credentials::resolve`, so the constructors only // pick a base URL and record the environment. #include #include #include #include namespace alpaca::tests { namespace { credentials test_creds() { return credentials("PKTEST", "secret"); } } // namespace // `data.alpaca.markets` is not account-scoped, so the environment shows up only in the // key pair the client resolved and — for sandbox — in the base URL. Keeping env() // readable is what makes the stored environment observable at all. TEST(DataClient, RecordsTheEnvironmentItWasBuiltFor) { const data_client paper(test_creds(), environment::paper); EXPECT_EQ(paper.env(), environment::paper); EXPECT_EQ(paper.base_url(), urls::market_data); const data_client live(test_creds(), environment::live); EXPECT_EQ(live.env(), environment::live); EXPECT_EQ(live.base_url(), urls::market_data); const data_client sandbox(test_creds(), environment::sandbox); EXPECT_EQ(sandbox.env(), environment::sandbox); EXPECT_EQ(sandbox.base_url(), urls::sandbox_data); } // The explicit-base-URL constructor has no environment argument; it resolves paper // credentials, so that is what env() must report. TEST(DataClient, ExplicitBaseUrlReportsPaper) { const data_client client(test_creds(), std::string("https://proxy.example.com")); EXPECT_EQ(client.env(), environment::paper); EXPECT_EQ(client.base_url(), "https://proxy.example.com"); } TEST(DataClientAwaitable, RecordsTheEnvironmentItWasBuiltFor) { const data_client_awaitable paper(test_creds(), environment::paper); EXPECT_EQ(paper.env(), environment::paper); EXPECT_EQ(paper.base_url(), urls::market_data); const data_client_awaitable sandbox(test_creds(), environment::sandbox); EXPECT_EQ(sandbox.env(), environment::sandbox); EXPECT_EQ(sandbox.base_url(), urls::sandbox_data); } TEST(DataClientAwaitable, ExplicitBaseUrlReportsPaper) { const data_client_awaitable client(test_creds(), std::string("https://proxy.example.com")); EXPECT_EQ(client.env(), environment::paper); EXPECT_EQ(client.base_url(), "https://proxy.example.com"); } } // namespace alpaca::tests