Bootstrap copied BFF and local accounts with public Sendico contracts (#34)
This commit is contained in:
1 parent
67dc5b5b1e
commit
7062672a87
556 files changed
+42291
-777
No files matched your search
@@ -0,0 +1,92 @@
|
||||
//go:build integration
|
||||
// +build integration
|
||||
|
||||
package refreshtokens_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"git.sendico.io/tech/sxchnge/bff/edge/shared/storage/refreshtokens"
|
||||
"git.sendico.io/tech/sxchnge/bff/pkg/db/repository"
|
||||
"git.sendico.io/tech/sxchnge/bff/pkg/db/repository/builder"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.mongodb.org/mongo-driver/v2/bson"
|
||||
)
|
||||
|
||||
func TestRefreshTokenDB_DatabaseIndexes(t *testing.T) {
|
||||
db, cleanup := setupTestDB(t)
|
||||
defer cleanup()
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
t.Run("Unique_Token_Constraint", func(t *testing.T) {
|
||||
userID1 := bson.NewObjectID()
|
||||
userID2 := bson.NewObjectID()
|
||||
token := "duplicate_token_123"
|
||||
|
||||
refreshToken1 := createTestRefreshToken(userID1, "client1", "device1", token)
|
||||
err := db.Create(ctx, refreshToken1)
|
||||
require.NoError(t, err)
|
||||
|
||||
refreshToken2 := createTestRefreshToken(userID2, "client2", "device2", token)
|
||||
err = db.Create(ctx, refreshToken2)
|
||||
assert.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "duplicate")
|
||||
})
|
||||
|
||||
t.Run("Query_Performance_By_Revocation_Status", func(t *testing.T) {
|
||||
userID := bson.NewObjectID()
|
||||
clientID := "web-app"
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
token := createTestRefreshToken(userID, clientID,
|
||||
fmt.Sprintf("device_%d", i), fmt.Sprintf("token_%d", i))
|
||||
if i%2 == 0 {
|
||||
token.IsRevoked = true
|
||||
}
|
||||
err := db.Create(ctx, token)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
query := repository.Query().
|
||||
Filter(repository.AccountField(), userID).
|
||||
And(repository.Query().Comparison(repository.Field(refreshtokens.IsRevokedField), builder.Eq, false))
|
||||
|
||||
ids, err := db.ListIDs(ctx, query)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, ids, 5)
|
||||
})
|
||||
}
|
||||
|
||||
func TestRefreshTokenDB_IndexPartialUniqueActiveSession(t *testing.T) {
|
||||
db, database, cleanup := setupTestDBWithMongo(t)
|
||||
defer cleanup()
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
cursor, err := database.Collection(db.Repository.Collection()).Indexes().List(ctx)
|
||||
require.NoError(t, err)
|
||||
defer cursor.Close(ctx)
|
||||
|
||||
found := false
|
||||
for cursor.Next(ctx) {
|
||||
var idx bson.M
|
||||
require.NoError(t, cursor.Decode(&idx))
|
||||
if idx["name"] == "unique_active_session" {
|
||||
found = true
|
||||
assert.Equal(t, true, idx["unique"])
|
||||
|
||||
partialRaw, err := bson.Marshal(idx["partialFilterExpression"])
|
||||
require.NoError(t, err)
|
||||
|
||||
var partial bson.M
|
||||
err = bson.Unmarshal(partialRaw, &partial)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, bson.M{"isRevoked": false}, partial)
|
||||
}
|
||||
}
|
||||
assert.True(t, found, "unique_active_session index not found")
|
||||
}
|
||||
Reference in new issue
Block a user