mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: implement bitbucket-server external auth defaults (#10520)
* feat: implement bitbucket-server external auth defaults Bitbucket cloud != Bitbucket server Add reasonable defaults for server * change "bitbucket" to "bitbucket-cloud"
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package externalauth
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
)
|
||||
|
||||
func Test_bitbucketServerConfigDefaults(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
bbType := string(codersdk.EnhancedExternalAuthProviderBitBucketServer)
|
||||
tests := []struct {
|
||||
name string
|
||||
config *codersdk.ExternalAuthConfig
|
||||
expected codersdk.ExternalAuthConfig
|
||||
}{
|
||||
{
|
||||
// Very few fields are statically defined for Bitbucket Server.
|
||||
name: "EmptyBitbucketServer",
|
||||
config: &codersdk.ExternalAuthConfig{
|
||||
Type: bbType,
|
||||
},
|
||||
expected: codersdk.ExternalAuthConfig{
|
||||
Type: bbType,
|
||||
ID: bbType,
|
||||
DisplayName: "Bitbucket Server",
|
||||
Scopes: []string{"PUBLIC_REPOS", "REPO_READ", "REPO_WRITE"},
|
||||
DisplayIcon: "/icon/bitbucket.svg",
|
||||
},
|
||||
},
|
||||
{
|
||||
// Only the AuthURL is required for defaults to work.
|
||||
name: "AuthURL",
|
||||
config: &codersdk.ExternalAuthConfig{
|
||||
Type: bbType,
|
||||
AuthURL: "https://bitbucket.example.com/login/oauth/authorize",
|
||||
},
|
||||
expected: codersdk.ExternalAuthConfig{
|
||||
Type: bbType,
|
||||
ID: bbType,
|
||||
AuthURL: "https://bitbucket.example.com/login/oauth/authorize",
|
||||
TokenURL: "https://bitbucket.example.com/rest/oauth2/latest/token",
|
||||
ValidateURL: "https://bitbucket.example.com/rest/api/latest/inbox/pull-requests/count",
|
||||
Scopes: []string{"PUBLIC_REPOS", "REPO_READ", "REPO_WRITE"},
|
||||
Regex: `^(https?://)?bitbucket\.example\.com(/.*)?$`,
|
||||
DisplayName: "Bitbucket Server",
|
||||
DisplayIcon: "/icon/bitbucket.svg",
|
||||
},
|
||||
},
|
||||
{
|
||||
// Ensure backwards compatibility. The type should update to "bitbucket-cloud",
|
||||
// but the ID and other fields should remain the same.
|
||||
name: "BitbucketLegacy",
|
||||
config: &codersdk.ExternalAuthConfig{
|
||||
Type: "bitbucket",
|
||||
},
|
||||
expected: codersdk.ExternalAuthConfig{
|
||||
Type: string(codersdk.EnhancedExternalAuthProviderBitBucketCloud),
|
||||
ID: "bitbucket", // Legacy ID remains unchanged
|
||||
AuthURL: "https://bitbucket.org/site/oauth2/authorize",
|
||||
TokenURL: "https://bitbucket.org/site/oauth2/access_token",
|
||||
ValidateURL: "https://api.bitbucket.org/2.0/user",
|
||||
DisplayName: "BitBucket",
|
||||
DisplayIcon: "/icon/bitbucket.svg",
|
||||
Regex: `^(https?://)?bitbucket\.org(/.*)?$`,
|
||||
Scopes: []string{"account", "repository:write"},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
applyDefaultsToConfig(tt.config)
|
||||
require.Equal(t, tt.expected, *tt.config)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user