mirror of
				https://gitea.com/gitea/gitea-mcp.git
				synced 2025-11-04 12:21:50 +00:00 
			
		
		
		
	- Refactor Bearer token parsing into a dedicated function for improved validation and readability - Add comprehensive tests for edge cases in Bearer token extraction Signed-off-by: appleboy <appleboy.tw@gmail.com> Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/96 Co-authored-by: appleboy <appleboy.tw@gmail.com> Co-committed-by: appleboy <appleboy.tw@gmail.com>
		
			
				
	
	
		
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package operation
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestParseBearerToken(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		name      string
 | 
						|
		header    string
 | 
						|
		wantToken string
 | 
						|
		wantOK    bool
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			name:      "valid token",
 | 
						|
			header:    "Bearer validtoken",
 | 
						|
			wantToken: "validtoken",
 | 
						|
			wantOK:    true,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "token with spaces trimmed",
 | 
						|
			header:    "Bearer   spacedToken ",
 | 
						|
			wantToken: "spacedToken",
 | 
						|
			wantOK:    true,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "lowercase bearer should fail",
 | 
						|
			header:    "bearer lowercase",
 | 
						|
			wantToken: "",
 | 
						|
			wantOK:    false,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "bearer with no token",
 | 
						|
			header:    "Bearer ",
 | 
						|
			wantToken: "",
 | 
						|
			wantOK:    false,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "bearer with only spaces",
 | 
						|
			header:    "Bearer     ",
 | 
						|
			wantToken: "",
 | 
						|
			wantOK:    false,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "missing space after Bearer",
 | 
						|
			header:    "Bearertoken",
 | 
						|
			wantToken: "",
 | 
						|
			wantOK:    false,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "different auth type",
 | 
						|
			header:    "Basic dXNlcjpwYXNz",
 | 
						|
			wantToken: "",
 | 
						|
			wantOK:    false,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "empty header",
 | 
						|
			header:    "",
 | 
						|
			wantToken: "",
 | 
						|
			wantOK:    false,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name:      "token with internal spaces",
 | 
						|
			header:    "Bearer token with spaces",
 | 
						|
			wantToken: "token with spaces",
 | 
						|
			wantOK:    true,
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, tt := range tests {
 | 
						|
		t.Run(tt.name, func(t *testing.T) {
 | 
						|
			gotToken, gotOK := parseBearerToken(tt.header)
 | 
						|
			if gotToken != tt.wantToken {
 | 
						|
				t.Errorf("parseBearerToken() token = %q, want %q", gotToken, tt.wantToken)
 | 
						|
			}
 | 
						|
			if gotOK != tt.wantOK {
 | 
						|
				t.Errorf("parseBearerToken() ok = %v, want %v", gotOK, tt.wantOK)
 | 
						|
			}
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |