Add projects
This commit is contained in:
parent
2d3a9ad623
commit
8b607dd700
1802 changed files with 503346 additions and 2 deletions
|
|
@ -0,0 +1,93 @@
|
|||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type weightValidationStore struct {
|
||||
auths []*Auth
|
||||
saveCount int
|
||||
}
|
||||
|
||||
func (s *weightValidationStore) List(context.Context) ([]*Auth, error) {
|
||||
return s.auths, nil
|
||||
}
|
||||
|
||||
func (s *weightValidationStore) Save(context.Context, *Auth) (string, error) {
|
||||
s.saveCount++
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (s *weightValidationStore) Delete(context.Context, string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestManagerLoadSkipsInvalidExplicitWeights(t *testing.T) {
|
||||
store := &weightValidationStore{auths: []*Auth{
|
||||
{ID: "omitted", Provider: "test"},
|
||||
{ID: "zero", Provider: "test", Metadata: map[string]any{AttributeWeight: json.Number("0")}},
|
||||
{ID: "fraction", Provider: "test", Metadata: map[string]any{AttributeWeight: json.Number("1.5")}},
|
||||
{ID: "overflow", Provider: "test", Attributes: map[string]string{AttributeWeight: "9223372036854775808"}},
|
||||
}}
|
||||
manager := NewManager(store, nil, nil)
|
||||
|
||||
if errLoad := manager.Load(context.Background()); errLoad != nil {
|
||||
t.Fatalf("Load() error = %v", errLoad)
|
||||
}
|
||||
if _, ok := manager.GetByID("omitted"); !ok {
|
||||
t.Fatal("omitted weight auth was not loaded")
|
||||
}
|
||||
if _, ok := manager.GetByID("zero"); !ok {
|
||||
t.Fatal("zero weight auth was not loaded")
|
||||
}
|
||||
for _, id := range []string{"fraction", "overflow"} {
|
||||
if _, ok := manager.GetByID(id); ok {
|
||||
t.Fatalf("invalid auth %q remained active after Load()", id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestManagerRegisterAndUpdateRejectInvalidExplicitWeights(t *testing.T) {
|
||||
store := &weightValidationStore{}
|
||||
manager := NewManager(store, nil, nil)
|
||||
ctx := context.Background()
|
||||
|
||||
invalid := &Auth{
|
||||
ID: "invalid",
|
||||
Provider: "test",
|
||||
Metadata: map[string]any{AttributeWeight: "nonnumeric"},
|
||||
}
|
||||
if _, errRegister := manager.Register(ctx, invalid); errRegister == nil {
|
||||
t.Fatal("Register() accepted an invalid weight")
|
||||
}
|
||||
if _, ok := manager.GetByID(invalid.ID); ok {
|
||||
t.Fatal("invalid registered auth became active")
|
||||
}
|
||||
if store.saveCount != 0 {
|
||||
t.Fatalf("invalid Register() save count = %d, want 0", store.saveCount)
|
||||
}
|
||||
|
||||
valid := &Auth{
|
||||
ID: "valid",
|
||||
Provider: "test",
|
||||
Attributes: map[string]string{AttributeWeight: "2"},
|
||||
Metadata: map[string]any{"type": "test"},
|
||||
}
|
||||
if _, errRegister := manager.Register(ctx, valid); errRegister != nil {
|
||||
t.Fatalf("Register(valid) error = %v", errRegister)
|
||||
}
|
||||
invalidUpdate := valid.Clone()
|
||||
invalidUpdate.Attributes[AttributeWeight] = "1000001"
|
||||
if _, errUpdate := manager.Update(ctx, invalidUpdate); errUpdate == nil {
|
||||
t.Fatal("Update() accepted an invalid weight")
|
||||
}
|
||||
current, ok := manager.GetByID(valid.ID)
|
||||
if !ok || current.Attributes[AttributeWeight] != "2" {
|
||||
t.Fatalf("invalid Update() changed active auth: %#v", current)
|
||||
}
|
||||
if store.saveCount != 1 {
|
||||
t.Fatalf("save count = %d, want only the valid Register() save", store.saveCount)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue