Add OpenID tests

This commit is contained in:
Till Faelligen 2022-04-27 09:58:11 +02:00
parent 4b977cefd5
commit fb12c99c34
2 changed files with 31 additions and 5 deletions

View file

@ -97,19 +97,23 @@ type LoginToken interface {
GetLoginTokenDataByToken(ctx context.Context, token string) (*api.LoginTokenData, error)
}
type OpenID interface {
CreateOpenIDToken(ctx context.Context, token, userID string) (exp int64, err error)
GetOpenIDTokenAttributes(ctx context.Context, token string) (*api.OpenIDTokenAttributes, error)
}
type Database interface {
Account
AccountData
Device
KeyBackup
LoginToken
OpenID
Profile
SaveThreePIDAssociation(ctx context.Context, threepid, localpart, medium string) (err error)
RemoveThreePIDAssociation(ctx context.Context, threepid string, medium string) (err error)
GetLocalpartForThreePID(ctx context.Context, threepid string, medium string) (localpart string, err error)
GetThreePIDsForLocalpart(ctx context.Context, localpart string) (threepids []authtypes.ThreePID, err error)
CreateOpenIDToken(ctx context.Context, token, localpart string) (exp int64, err error)
GetOpenIDTokenAttributes(ctx context.Context, token string) (*api.OpenIDTokenAttributes, error)
InsertNotification(ctx context.Context, localpart, eventID string, pos int64, tweaks map[string]interface{}, n *api.Notification) error
DeleteNotificationsUpTo(ctx context.Context, localpart, roomID string, pos int64) (affected bool, err error)

View file

@ -20,11 +20,13 @@ import (
const loginTokenLifetime = time.Minute
var openIDLifetimeMS = time.Minute.Milliseconds()
func mustCreateDatabase(t *testing.T, dbType test.DBType) (storage.Database, func()) {
connStr, close := test.PrepareDBConnectionString(t, dbType)
db, err := storage.NewUserAPIDatabase(&config.DatabaseOptions{
ConnectionString: config.DataSource(connStr),
}, "localhost", bcrypt.MinCost, time.Minute.Milliseconds(), loginTokenLifetime, "_server")
}, "localhost", bcrypt.MinCost, openIDLifetimeMS, loginTokenLifetime, "_server")
if err != nil {
t.Fatalf("NewUserAPIDatabase returned %s", err)
}
@ -171,9 +173,8 @@ func Test_Devices(t *testing.T) {
func Test_KeyBackup(t *testing.T) {
ctx := context.Background()
alice := test.NewUser()
//localpart, _, err := gomatrixserverlib.SplitID('@', alice.ID)
//assert.NoError(t, err)
room := test.NewRoom(t, alice)
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
db, close := mustCreateDatabase(t, dbType)
defer close()
@ -279,3 +280,24 @@ func Test_LoginToken(t *testing.T) {
assert.Error(t, err, "expected an error, but got none")
})
}
func Test_OpenID(t *testing.T) {
ctx := context.Background()
alice := test.NewUser()
token := util.RandomString(24)
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
db, close := mustCreateDatabase(t, dbType)
defer close()
expiresAtMS := time.Now().UnixNano()/int64(time.Millisecond) + openIDLifetimeMS
expires, err := db.CreateOpenIDToken(ctx, token, alice.ID)
assert.NoError(t, err, "unable to create OpenID token")
assert.Equal(t, expiresAtMS, expires)
attributes, err := db.GetOpenIDTokenAttributes(ctx, token)
assert.NoError(t, err, "unable to get OpenID token attributes")
assert.Equal(t, alice.ID, attributes.UserID)
assert.Equal(t, expiresAtMS, attributes.ExpiresAtMS)
})
}