This commit is contained in:
Bolke de Bruin 2023-04-16 10:02:47 +02:00
parent cdf6e68684
commit 9d9b7a9ab5
2 changed files with 50 additions and 5 deletions

View file

@ -3,12 +3,10 @@ package web
import (
"encoding/hex"
"encoding/json"
"errors"
"github.com/bolkedebruin/rdpgw/cmd/rdpgw/identity"
"github.com/coreos/go-oidc/v3/oidc"
"github.com/patrickmn/go-cache"
"golang.org/x/oauth2"
"log"
"math/rand"
"net/http"
"time"
@ -85,9 +83,7 @@ func (h *OIDC) HandleCallback(w http.ResponseWriter, r *http.Request) {
userName := findUsernameInClaims(data)
if userName == "" {
err = errors.New("no odic claim for username found")
log.Print(err)
http.Error(w, err.Error(), http.StatusInternalServerError)
http.Error(w, "no oidc claim for username found", http.StatusInternalServerError)
}
id.SetUserName(userName)

View file

@ -0,0 +1,49 @@
package web
import "testing"
func TestFindUserNameInClaims(t *testing.T) {
cases := []struct {
data map[string]interface{}
ret string
name string
}{
{
data: map[string]interface{}{
"preferred_username": "exists",
},
ret: "exists",
name: "preferred_username",
},
{
data: map[string]interface{}{
"upn": "exists",
},
ret: "exists",
name: "upn",
},
{
data: map[string]interface{}{
"unique_name": "exists",
},
ret: "exists",
name: "unique_name",
},
{
data: map[string]interface{}{
"fail": "exists",
},
ret: "",
name: "fail",
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
s := findUsernameInClaims(tc.data)
if s != tc.ret {
t.Fatalf("expected return: %v, got: %v", tc.ret, s)
}
})
}
}