• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ilpanich / axiam-rust-sdk / 29638214857
94%

Build:
DEFAULT BRANCH: main
Ran 18 Jul 2026 08:57AM UTC
Jobs 1
Files 17
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

18 Jul 2026 08:53AM UTC coverage: 92.387% (+0.02%) from 92.364%
29638214857

push

github

web-flow
feat(tls): add client-certificate mTLS support (CONTRACT §6.1) (#18)

Add opt-in mutual-TLS client-certificate authentication to both the REST
and gRPC transports, per the newly re-vendored CONTRACT.md §6.1.

- `AxiamClient::builder().with_client_cert(cert_pem, key_pem)` accepts a PEM
  cert chain + PEM private key, validated eagerly (malformed PEM -> AxiamError
  at construction). The key is retained behind `Sensitive<Vec<u8>>` and never
  exposed via getter/Debug/log.
- REST: builds a `reqwest::Identity` (cert chain + key concatenated into the
  single buffer `Identity::from_pem` expects) and applies it via
  `ClientBuilder::identity`. No new reqwest feature needed — the existing
  `rustls` feature already provides `Identity`.
- gRPC: `GrpcChannelConfig` gains `client_cert_pem` + `client_key` fields;
  `build_channel` applies `ClientTlsConfig::identity(Identity::from_pem(...))`.
  `AxiamClient::grpc_channel_config()` threads the same identity (and custom
  CA) from the REST client to the gRPC transport (§6.1 rule 4).
- Strict server verification is never weakened; the client-cert path is kept
  separate from `with_custom_ca` (§6.1 rule 2, TLS-bypass lint untouched).
- Tests generate throwaway PKI at runtime with the `rcgen` dev-dependency —
  no private key is committed. Covers accept/reject/build/grpc-identity/redaction.
- README mTLS subsection + conformance now "(including §6.1 mTLS)"; CHANGELOG
  Added entry.


Claude-Session: https://claude.ai/code/session_01FM1xTLBaGvfUv8X3bPw6oj

Co-authored-by: Claude <noreply@anthropic.com>

45 of 48 new or added lines in 2 files covered. (93.75%)

19 existing lines in 2 files now uncovered.

2694 of 2916 relevant lines covered (92.39%)

6.94 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
94.39
-0.35% src/client.rs

Coverage Regressions

Lines Coverage ∆ File
16
94.39
-0.35% src/client.rs
3
93.18
2.27% src/grpc/channel.rs
Jobs
ID Job ID Ran Files Coverage
1 29638214857.1 18 Jul 2026 08:57AM UTC 17
92.39
GitHub Action Run
Source Files on build 29638214857
  • Tree
  • List 17
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #29638214857
  • 84e6f172 on github
  • Prev Build on main (#29611426788)
  • Next Build on main (#29639323692)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc