mirror of
https://github.com/argoproj/argo-cd
synced 2026-05-24 09:50:08 +00:00
* Support OAuth2 login flow from CLI (resolves #172) * Refactor SessionManager to handle local and OAuth2 logins. * argo login will request permanent credentials after OAuth2 flow * Implement proper OIDC app state nonce. Add explicit `--sso` flag to `argo login`
45 lines
1,015 B
Go
45 lines
1,015 B
Go
package session
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/argoproj/argo-cd/util/settings"
|
|
jwt "github.com/dgrijalva/jwt-go"
|
|
)
|
|
|
|
func TestSessionManager(t *testing.T) {
|
|
const (
|
|
defaultSecretKey = "Hello, world!"
|
|
defaultSubject = "argo"
|
|
)
|
|
set := settings.ArgoCDSettings{
|
|
ServerSignature: []byte(defaultSecretKey),
|
|
}
|
|
mgr := NewSessionManager(&set)
|
|
|
|
token, err := mgr.Create(defaultSubject)
|
|
if err != nil {
|
|
t.Errorf("Could not create token: %v", err)
|
|
}
|
|
|
|
claims, err := mgr.Parse(token)
|
|
if err != nil {
|
|
t.Errorf("Could not parse token: %v", err)
|
|
}
|
|
|
|
mapClaims := *(claims.(*jwt.MapClaims))
|
|
subject := mapClaims["sub"].(string)
|
|
if subject != "argo" {
|
|
t.Errorf("Token claim subject \"%s\" does not match expected subject \"%s\".", subject, defaultSubject)
|
|
}
|
|
}
|
|
|
|
func TestMakeSignature(t *testing.T) {
|
|
for size := 1; size <= 64; size++ {
|
|
s, err := MakeSignature(size)
|
|
if err != nil {
|
|
t.Errorf("Could not generate signature of size %d: %v", size, err)
|
|
}
|
|
t.Logf("Generated token: %v", s)
|
|
}
|
|
}
|