Skip to content

Commit c52c25d

Browse files
authored
Merge pull request #123 from codex-team/fix-sentry-key-parsing
Fix sentry key parsing
2 parents cd05da6 + 65c34d5 commit c52c25d

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

pkg/server/errorshandler/sentry_utils.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@ func decompressGzipString(gzipString []byte) ([]byte, error) {
2828

2929
func getSentryKeyFromAuth(auth string) (string, error) {
3030
auth = strings.TrimPrefix(auth, "Sentry ")
31-
pairs := strings.Split(auth, ", ")
31+
pairs := strings.Split(auth, ",")
3232
for _, pair := range pairs {
33-
kv := strings.SplitN(pair, "=", 2)
34-
if len(kv) == 2 && kv[0] == "sentry_key" {
35-
return kv[1], nil
36-
}
33+
pair = strings.TrimSpace(pair)
34+
kv := strings.SplitN(pair, "=", 2)
35+
if len(kv) == 2 && strings.TrimSpace(kv[0]) == "sentry_key" {
36+
return strings.TrimSpace(kv[1]), nil
37+
}
3738
}
3839

3940
log.Infof("Sentry key not found in auth header: %s", auth)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package errorshandler
2+
3+
import (
4+
"errors"
5+
"testing"
6+
)
7+
8+
func TestGetSentryKeyFromAuth(t *testing.T) {
9+
tests := []struct {
10+
auth string
11+
expected string
12+
err error
13+
}{
14+
{"Sentry sentry_key=abc123, sentry_version=7", "abc123", nil},
15+
{"Sentry sentry_version=7, sentry_key=xyz789", "xyz789", nil},
16+
{"Sentry sentry_version=7", "", errors.New("sentry_key not found")},
17+
{"Sentry sentry_key=", "", nil},
18+
{"Sentry something_else=123", "", errors.New("sentry_key not found")},
19+
{"Sentry sentry_version=7,sentry_client=sentry.java.android/8.6.0,sentry_key=77e8ca0d39e3495fa7e360d960b76e5f789377f1fa2b4fe2bffb68649593a123", "77e8ca0d39e3495fa7e360d960b76e5f789377f1fa2b4fe2bffb68649593a123", nil},
20+
}
21+
22+
for _, tt := range tests {
23+
result, err := getSentryKeyFromAuth(tt.auth)
24+
if result != tt.expected || (err != nil && err.Error() != tt.err.Error()) {
25+
t.Errorf("getSentryKeyFromAuth(%q) = (%q, %v), want (%q, %v)", tt.auth, result, err, tt.expected, tt.err)
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)