Skip to content

Commit e39f39e

Browse files
committed
Add tests for bearer token authentication
- Options: bearer token from explicit value, env var resolution, preference of explicit over env, and serialize exclusion - Provider: client returns BearerClient when token is present, falls back to Anthropic::BedrockClient otherwise, memoization - BearerClient: initialization, auth_token, region, base_url, inheritance, and resource accessors (messages, completions, beta)
1 parent 8b32960 commit e39f39e

File tree

3 files changed

+148
-1
lines changed

3 files changed

+148
-1
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# frozen_string_literal: true
2+
3+
require "test_helper"
4+
require_relative "../../../lib/active_agent/providers/bedrock_provider"
5+
6+
class BedrockBearerClientTest < ActiveSupport::TestCase
7+
test "initializes with region and bearer token" do
8+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
9+
aws_region: "eu-west-2",
10+
bearer_token: "test-token"
11+
)
12+
13+
assert_equal "eu-west-2", client.aws_region
14+
end
15+
16+
test "sets auth_token from bearer_token parameter" do
17+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
18+
aws_region: "eu-west-2",
19+
bearer_token: "test-token"
20+
)
21+
22+
assert_equal "test-token", client.auth_token
23+
end
24+
25+
test "sets default base_url from aws_region" do
26+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
27+
aws_region: "us-east-1",
28+
bearer_token: "test-token"
29+
)
30+
31+
assert_equal "us-east-1", client.aws_region
32+
end
33+
34+
test "allows custom base_url" do
35+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
36+
aws_region: "eu-west-2",
37+
bearer_token: "test-token",
38+
base_url: "https://custom-bedrock.example.com"
39+
)
40+
41+
assert_instance_of ActiveAgent::Providers::Bedrock::BearerClient, client
42+
end
43+
44+
test "inherits from Anthropic::Client" do
45+
assert ActiveAgent::Providers::Bedrock::BearerClient < ::Anthropic::Client
46+
end
47+
48+
test "has messages resource" do
49+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
50+
aws_region: "eu-west-2",
51+
bearer_token: "test-token"
52+
)
53+
54+
assert_instance_of ::Anthropic::Resources::Messages, client.messages
55+
end
56+
57+
test "has completions resource" do
58+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
59+
aws_region: "eu-west-2",
60+
bearer_token: "test-token"
61+
)
62+
63+
assert_instance_of ::Anthropic::Resources::Completions, client.completions
64+
end
65+
66+
test "has beta resource" do
67+
client = ActiveAgent::Providers::Bedrock::BearerClient.new(
68+
aws_region: "eu-west-2",
69+
bearer_token: "test-token"
70+
)
71+
72+
assert_instance_of ::Anthropic::Resources::Beta, client.beta
73+
end
74+
end

test/providers/bedrock/bedrock_provider_test.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,39 @@ class BedrockProviderTest < ActiveSupport::TestCase
6161

6262
assert_equal "eu-west-2", client.aws_region
6363
end
64+
65+
test "client returns BearerClient when bearer token is configured" do
66+
bearer_config = {
67+
service: "Bedrock",
68+
aws_region: "eu-west-2",
69+
aws_bearer_token: "test-bearer-token",
70+
model: "eu.anthropic.claude-sonnet-4-5-20250929-v1:0",
71+
messages: [{ role: "user", content: "Hello" }]
72+
}
73+
74+
provider = ActiveAgent::Providers::BedrockProvider.new(bearer_config)
75+
client = provider.client
76+
77+
assert_instance_of ActiveAgent::Providers::Bedrock::BearerClient, client
78+
end
79+
80+
test "client returns Anthropic::BedrockClient when no bearer token" do
81+
provider = ActiveAgent::Providers::BedrockProvider.new(@valid_config)
82+
client = provider.client
83+
84+
assert_instance_of ::Anthropic::Helpers::Bedrock::Client, client
85+
end
86+
87+
test "bearer client is memoized" do
88+
bearer_config = {
89+
service: "Bedrock",
90+
aws_region: "eu-west-2",
91+
aws_bearer_token: "test-bearer-token",
92+
model: "eu.anthropic.claude-sonnet-4-5-20250929-v1:0"
93+
}
94+
95+
provider = ActiveAgent::Providers::BedrockProvider.new(bearer_config)
96+
97+
assert_same provider.client, provider.client
98+
end
6499
end

test/providers/bedrock/options_test.rb

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,48 @@ class BedrockOptionsTest < ActiveSupport::TestCase
179179
ENV["AWS_PROFILE"] = original_profile
180180
end
181181

182+
test "initializes with bearer token" do
183+
options = ActiveAgent::Providers::Bedrock::Options.new(
184+
aws_region: "eu-west-2",
185+
aws_bearer_token: "test-bearer-token"
186+
)
187+
188+
assert_equal "test-bearer-token", options.aws_bearer_token
189+
end
190+
191+
test "resolves aws_bearer_token from environment variable" do
192+
original_token = ENV["AWS_BEARER_TOKEN_BEDROCK"]
193+
ENV["AWS_BEARER_TOKEN_BEDROCK"] = "env-bearer-token"
194+
195+
options = ActiveAgent::Providers::Bedrock::Options.new(
196+
aws_region: "eu-west-2"
197+
)
198+
199+
assert_equal "env-bearer-token", options.aws_bearer_token
200+
ensure
201+
ENV["AWS_BEARER_TOKEN_BEDROCK"] = original_token
202+
end
203+
204+
test "prefers explicit aws_bearer_token over environment variable" do
205+
original_token = ENV["AWS_BEARER_TOKEN_BEDROCK"]
206+
ENV["AWS_BEARER_TOKEN_BEDROCK"] = "env-bearer-token"
207+
208+
options = ActiveAgent::Providers::Bedrock::Options.new(
209+
aws_region: "eu-west-2",
210+
aws_bearer_token: "explicit-bearer-token"
211+
)
212+
213+
assert_equal "explicit-bearer-token", options.aws_bearer_token
214+
ensure
215+
ENV["AWS_BEARER_TOKEN_BEDROCK"] = original_token
216+
end
217+
182218
test "serialize excludes sensitive credential fields" do
183219
options = ActiveAgent::Providers::Bedrock::Options.new(
184220
@valid_options.merge(
185221
aws_session_token: "test-token",
186-
aws_profile: "test-profile"
222+
aws_profile: "test-profile",
223+
aws_bearer_token: "test-bearer-token"
187224
)
188225
)
189226

@@ -194,6 +231,7 @@ class BedrockOptionsTest < ActiveSupport::TestCase
194231
assert_nil serialized[:aws_secret_key]
195232
assert_nil serialized[:aws_session_token]
196233
assert_nil serialized[:aws_profile]
234+
assert_nil serialized[:aws_bearer_token]
197235
end
198236

199237
test "serialize includes non-credential fields" do

0 commit comments

Comments
 (0)