(t *testing.T)
| 102 | } |
| 103 | |
| 104 | func TestBuildUpstreamHeaders(t *testing.T) { |
| 105 | t.Parallel() |
| 106 | |
| 107 | t.Run("preserves auth from SDK", func(t *testing.T) { |
| 108 | t.Parallel() |
| 109 | |
| 110 | sdkHeader := http.Header{ |
| 111 | "Authorization": {"Bearer sk-provider-key"}, |
| 112 | } |
| 113 | clientHeaders := http.Header{ |
| 114 | "Authorization": {"Bearer coder-session-token"}, |
| 115 | "User-Agent": {"claude-code/1.0"}, |
| 116 | } |
| 117 | |
| 118 | result := intercept.BuildUpstreamHeaders(sdkHeader, clientHeaders, "Authorization") |
| 119 | |
| 120 | assert.Equal(t, "Bearer sk-provider-key", result.Get("Authorization")) |
| 121 | assert.Equal(t, "claude-code/1.0", result.Get("User-Agent")) |
| 122 | }) |
| 123 | |
| 124 | t.Run("preserves X-Api-Key from SDK and strips client Authorization", func(t *testing.T) { |
| 125 | t.Parallel() |
| 126 | |
| 127 | sdkHeader := http.Header{ |
| 128 | "X-Api-Key": {"sk-ant-provider-key"}, |
| 129 | } |
| 130 | clientHeaders := http.Header{ |
| 131 | "X-Api-Key": {"sk-ant-client-key"}, |
| 132 | "Authorization": {"Bearer coder-session-token"}, |
| 133 | "Anthropic-Beta": {"prompt-caching-2024-07-31"}, |
| 134 | } |
| 135 | |
| 136 | result := intercept.BuildUpstreamHeaders(sdkHeader, clientHeaders, "X-Api-Key") |
| 137 | |
| 138 | assert.Equal(t, "sk-ant-provider-key", result.Get("X-Api-Key")) |
| 139 | assert.Empty(t, result.Get("Authorization")) |
| 140 | assert.Equal(t, "prompt-caching-2024-07-31", result.Get("Anthropic-Beta")) |
| 141 | }) |
| 142 | |
| 143 | t.Run("preserves actor headers from SDK", func(t *testing.T) { |
| 144 | t.Parallel() |
| 145 | |
| 146 | sdkHeader := http.Header{ |
| 147 | "Authorization": {"Bearer sk-key"}, |
| 148 | "X-Ai-Bridge-Actor-Id": {"user-123"}, |
| 149 | "X-Ai-Bridge-Actor-Metadata-Name": {"alice"}, |
| 150 | } |
| 151 | clientHeaders := http.Header{ |
| 152 | "Authorization": {"Bearer coder-token"}, |
| 153 | "User-Agent": {"claude-code/1.0"}, |
| 154 | } |
| 155 | |
| 156 | result := intercept.BuildUpstreamHeaders(sdkHeader, clientHeaders, "Authorization") |
| 157 | |
| 158 | assert.Equal(t, "Bearer sk-key", result.Get("Authorization")) |
| 159 | assert.Equal(t, "user-123", result.Get("X-Ai-Bridge-Actor-Id")) |
| 160 | assert.Equal(t, "alice", result.Get("X-Ai-Bridge-Actor-Metadata-Name")) |
| 161 | assert.Equal(t, "claude-code/1.0", result.Get("User-Agent")) |
nothing calls this directly
no test coverage detected