mirror of https://github.com/portainer/portainer
71 lines
2.5 KiB
Go
71 lines
2.5 KiB
Go
|
package settings
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
portainer "github.com/portainer/portainer/api"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
dummyOAuthClientID = "1a2b3c4d"
|
||
|
dummyOAuthScopes = "scopes"
|
||
|
dummyOAuthAuthenticationURI = "example.com/auth"
|
||
|
dummyOAuthRedirectURI = "example.com/redirect"
|
||
|
dummyOAuthLogoutURI = "example.com/logout"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
dummyOAuthLoginURI string
|
||
|
mockAppSettings *portainer.Settings
|
||
|
)
|
||
|
|
||
|
func setup() {
|
||
|
dummyOAuthLoginURI = fmt.Sprintf("%s?response_type=code&client_id=%s&redirect_uri=%s&scope=%s",
|
||
|
dummyOAuthAuthenticationURI,
|
||
|
dummyOAuthClientID,
|
||
|
dummyOAuthRedirectURI,
|
||
|
dummyOAuthScopes)
|
||
|
mockAppSettings = &portainer.Settings{
|
||
|
AuthenticationMethod: portainer.AuthenticationOAuth,
|
||
|
OAuthSettings: portainer.OAuthSettings{
|
||
|
AuthorizationURI: dummyOAuthAuthenticationURI,
|
||
|
ClientID: dummyOAuthClientID,
|
||
|
Scopes: dummyOAuthScopes,
|
||
|
RedirectURI: dummyOAuthRedirectURI,
|
||
|
LogoutURI: dummyOAuthLogoutURI,
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestGeneratePublicSettingsWithSSO(t *testing.T) {
|
||
|
setup()
|
||
|
mockAppSettings.OAuthSettings.SSO = true
|
||
|
publicSettings := generatePublicSettings(mockAppSettings)
|
||
|
if publicSettings.AuthenticationMethod != portainer.AuthenticationOAuth {
|
||
|
t.Errorf("wrong AuthenticationMethod, want: %d, got: %d", portainer.AuthenticationOAuth, publicSettings.AuthenticationMethod)
|
||
|
}
|
||
|
if publicSettings.OAuthLoginURI != dummyOAuthLoginURI {
|
||
|
t.Errorf("wrong OAuthLoginURI when SSO is switched on, want: %s, got: %s", dummyOAuthLoginURI, publicSettings.OAuthLoginURI)
|
||
|
}
|
||
|
if publicSettings.OAuthLogoutURI != dummyOAuthLogoutURI {
|
||
|
t.Errorf("wrong OAuthLogoutURI, want: %s, got: %s", dummyOAuthLogoutURI, publicSettings.OAuthLogoutURI)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestGeneratePublicSettingsWithoutSSO(t *testing.T) {
|
||
|
setup()
|
||
|
mockAppSettings.OAuthSettings.SSO = false
|
||
|
publicSettings := generatePublicSettings(mockAppSettings)
|
||
|
if publicSettings.AuthenticationMethod != portainer.AuthenticationOAuth {
|
||
|
t.Errorf("wrong AuthenticationMethod, want: %d, got: %d", portainer.AuthenticationOAuth, publicSettings.AuthenticationMethod)
|
||
|
}
|
||
|
expectedOAuthLoginURI := dummyOAuthLoginURI + "&prompt=login"
|
||
|
if publicSettings.OAuthLoginURI != expectedOAuthLoginURI {
|
||
|
t.Errorf("wrong OAuthLoginURI when SSO is switched off, want: %s, got: %s", expectedOAuthLoginURI, publicSettings.OAuthLoginURI)
|
||
|
}
|
||
|
if publicSettings.OAuthLogoutURI != dummyOAuthLogoutURI {
|
||
|
t.Errorf("wrong OAuthLogoutURI, want: %s, got: %s", dummyOAuthLogoutURI, publicSettings.OAuthLogoutURI)
|
||
|
}
|
||
|
}
|