Skip to content

Commit

Permalink
chore: synchronize workspaces
Browse files Browse the repository at this point in the history
  • Loading branch information
aeneasr committed Jul 11, 2023
1 parent da2623a commit 8fedaf1
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 10 deletions.
3 changes: 2 additions & 1 deletion internal/testhelpers/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ func NewSessionClient(t *testing.T, u string) *http.Client {
func maybePersistSession(t *testing.T, reg *driver.RegistryDefault, sess *session.Session) {
id, err := reg.PrivilegedIdentityPool().GetIdentityConfidential(context.Background(), sess.Identity.ID)
if err != nil {
require.NoError(t, sess.Identity.SetAvailableAAL(context.Background(), reg.IdentityManager()))
require.NoError(t, reg.PrivilegedIdentityPool().CreateIdentity(context.Background(), sess.Identity))
id, err = reg.PrivilegedIdentityPool().GetIdentityConfidential(context.Background(), sess.Identity.ID)
require.NoError(t, err)
Expand Down Expand Up @@ -156,7 +157,7 @@ func NewHTTPClientWithArbitrarySessionToken(t *testing.T, reg *driver.RegistryDe
func NewHTTPClientWithArbitrarySessionCookie(t *testing.T, reg *driver.RegistryDefault) *http.Client {
req := x.NewTestHTTPRequest(t, "GET", "/sessions/whoami", nil)
s, err := session.NewActiveSession(req,
&identity.Identity{ID: x.NewUUID(), State: identity.StateActive},
&identity.Identity{ID: x.NewUUID(), State: identity.StateActive, Traits: []byte("{}")},
NewSessionLifespanProvider(time.Hour),
time.Now(),
identity.CredentialsTypePassword,
Expand Down
7 changes: 3 additions & 4 deletions selfservice/flow/login/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -433,21 +433,21 @@ func TestFlowLifecycle(t *testing.T) {
"password": {
Type: "password",
Identifiers: []string{email},
Config: sqlxx.JSONRawMessage(`{"hashed_password":"foo"}`),
Config: sqlxx.JSONRawMessage(`{"hashed_password": "$argon2id$v=19$m=32,t=2,p=4$cm94YnRVOW5jZzFzcVE4bQ$MNzk5BtR2vUhrp6qQEjRNw"}`),
},
},
Traits: identity.Traits(fmt.Sprintf(`{"email":"%s"}`, email)),
SchemaID: config.DefaultIdentityTraitsSchemaID,
}

require.NoError(t, reg.PrivilegedIdentityPool().CreateIdentities(context.Background(), id))
require.NoError(t, reg.IdentityManager().CreateIdentities(context.Background(), []*identity.Identity{id}, identity.ManagerAllowWriteProtectedTraits))

id.SetCredentials(identity.CredentialsTypeTOTP, identity.Credentials{
Type: identity.CredentialsTypeTOTP,
Identifiers: []string{id.ID.String()},
Config: sqlxx.JSONRawMessage(`{"totp_url":"` + string(key.URL()) + `"}`),
})
require.NoError(t, reg.PrivilegedIdentityPool().UpdateIdentity(context.Background(), id))
require.NoError(t, reg.IdentityManager().Update(context.Background(), id, identity.ManagerAllowWriteProtectedTraits))

h := func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
sess, err := session.NewActiveSession(r, id, reg.Config(), time.Now().UTC(), identity.CredentialsTypePassword, identity.AuthenticatorAssuranceLevel1)
Expand All @@ -456,7 +456,6 @@ func TestFlowLifecycle(t *testing.T) {
require.NoError(t, reg.SessionPersister().UpsertSession(context.Background(), sess))
require.NoError(t, reg.SessionManager().IssueCookie(context.Background(), w, r, sess))
require.Equal(t, identity.AuthenticatorAssuranceLevel1, sess.AuthenticatorAssuranceLevel)

}

router.GET("/mock-session", h)
Expand Down
1 change: 1 addition & 0 deletions selfservice/strategy/totp/login_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ func createIdentity(t *testing.T, reg driver.Registry) (*identity.Identity, stri
Config: sqlxx.JSONRawMessage(`{"totp_url":"` + string(key.URL()) + `"}`),
},
}
require.NoError(t, i.SetAvailableAAL(context.Background(), reg.IdentityManager()))
require.NoError(t, reg.PrivilegedIdentityPool().UpdateIdentity(context.Background(), i))
return i, password, key
}
Expand Down
6 changes: 4 additions & 2 deletions session/manager_http.go
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,8 @@ func (s *ManagerHTTP) DoesSessionSatisfy(r *http.Request, sess *Session, request
}

i := sess.Identity
available := identity.AuthenticatorAssuranceLevel(i.AvailableAAL.String)
if !i.AvailableAAL.Valid {
available, valid := i.AvailableAAL.ToAAL()
if !valid {
// Available is 0 if the identity was created before the AAL feature was introduced, or if the identity
// was directly created in the persister and not the identity manager.
//
Expand All @@ -321,6 +321,8 @@ func (s *ManagerHTTP) DoesSessionSatisfy(r *http.Request, sess *Session, request
return err
}

available, _ = i.AvailableAAL.ToAAL()

// This is the migration strategy for identities that already exist.
if managerOpts.upsertAAL {
if _, err := s.r.SessionPersister().GetConnection(ctx).Where("id = ? AND nid = ?", i.ID, i.NID).UpdateQuery(i, "available_aal"); err != nil {
Expand Down
4 changes: 1 addition & 3 deletions session/manager_http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -589,7 +589,7 @@ func TestDoesSessionSatisfy(t *testing.T) {
for _, c := range tc.creds {
id.SetCredentials(c.Type, c)
}
require.NoError(t, reg.PrivilegedIdentityPool().CreateIdentity(context.Background(), id))
require.NoError(t, reg.IdentityManager().Create(context.Background(), id, identity.ManagerAllowWriteProtectedTraits))
t.Cleanup(func() {
require.NoError(t, reg.PrivilegedIdentityPool().DeleteIdentity(context.Background(), id.ID))
})
Expand All @@ -606,9 +606,7 @@ func TestDoesSessionSatisfy(t *testing.T) {
if tc.expectedFunc != nil {
tc.expectedFunc(t, err, tc.err)
}

require.ErrorAs(t, err, &tc.err)

} else {
require.NoError(t, err)
}
Expand Down

0 comments on commit 8fedaf1

Please sign in to comment.