|
|
|
|
@@ -14,17 +14,19 @@ import (
|
|
|
|
|
"github.com/tech/sendico/pkg/db/repository"
|
|
|
|
|
"github.com/tech/sendico/pkg/db/repository/builder"
|
|
|
|
|
"github.com/tech/sendico/pkg/merrors"
|
|
|
|
|
|
|
|
|
|
// Model package (contains PolicyDescription + Describable)
|
|
|
|
|
"github.com/tech/sendico/pkg/model"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
"github.com/tech/sendico/pkg/model"
|
|
|
|
|
|
|
|
|
|
// Testcontainers
|
|
|
|
|
"github.com/testcontainers/testcontainers-go"
|
|
|
|
|
"github.com/testcontainers/testcontainers-go/modules/mongodb"
|
|
|
|
|
"github.com/testcontainers/testcontainers-go/wait"
|
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
|
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
|
|
|
"go.mongodb.org/mongo-driver/v2/bson"
|
|
|
|
|
"go.mongodb.org/mongo-driver/v2/mongo"
|
|
|
|
|
"go.mongodb.org/mongo-driver/v2/mongo/options"
|
|
|
|
|
"go.uber.org/zap"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@@ -114,7 +116,7 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
cleanupCollection(t, ctx, db)
|
|
|
|
|
|
|
|
|
|
// Attempt to get a non-existent ID
|
|
|
|
|
nonExistentID := primitive.NewObjectID()
|
|
|
|
|
nonExistentID := bson.NewObjectID()
|
|
|
|
|
result := &model.PolicyDescription{}
|
|
|
|
|
err := pdb.Get(ctx, nonExistentID, result)
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
@@ -234,8 +236,8 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
cleanupCollection(t, ctx, db)
|
|
|
|
|
|
|
|
|
|
// Insert some policies (orgA, orgB, nil org)
|
|
|
|
|
orgA := primitive.NewObjectID()
|
|
|
|
|
orgB := primitive.NewObjectID()
|
|
|
|
|
orgA := bson.NewObjectID()
|
|
|
|
|
orgB := bson.NewObjectID()
|
|
|
|
|
|
|
|
|
|
descA := "Org A policy"
|
|
|
|
|
policyA := &model.PolicyDescription{
|
|
|
|
|
@@ -272,7 +274,7 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Len(t, resultsA, 2) // orgA + built-in
|
|
|
|
|
|
|
|
|
|
var idsA []primitive.ObjectID
|
|
|
|
|
var idsA []bson.ObjectID
|
|
|
|
|
for _, r := range resultsA {
|
|
|
|
|
idsA = append(idsA, r.ID)
|
|
|
|
|
}
|
|
|
|
|
@@ -284,7 +286,7 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Len(t, resultsB, 2) // orgB + built-in
|
|
|
|
|
|
|
|
|
|
var idsB []primitive.ObjectID
|
|
|
|
|
var idsB []bson.ObjectID
|
|
|
|
|
for _, r := range resultsB {
|
|
|
|
|
idsB = append(idsB, r.ID)
|
|
|
|
|
}
|
|
|
|
|
@@ -322,11 +324,11 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
require.NoError(t, pdb.Create(ctx, pol3))
|
|
|
|
|
|
|
|
|
|
// 1) Request pol1, pol2
|
|
|
|
|
results12, err := pdb.Policies(ctx, []primitive.ObjectID{pol1.ID, pol2.ID})
|
|
|
|
|
results12, err := pdb.Policies(ctx, []bson.ObjectID{pol1.ID, pol2.ID})
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Len(t, results12, 2)
|
|
|
|
|
// IDs might be out of order, so we do a set-like check
|
|
|
|
|
var set12 []primitive.ObjectID
|
|
|
|
|
var set12 []bson.ObjectID
|
|
|
|
|
for _, r := range results12 {
|
|
|
|
|
set12 = append(set12, r.ID)
|
|
|
|
|
}
|
|
|
|
|
@@ -334,11 +336,11 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
assert.Contains(t, set12, pol2.ID)
|
|
|
|
|
|
|
|
|
|
// 2) Request pol1, pol3, plus a random ID
|
|
|
|
|
fakeID := primitive.NewObjectID()
|
|
|
|
|
results13Fake, err := pdb.Policies(ctx, []primitive.ObjectID{pol1.ID, pol3.ID, fakeID})
|
|
|
|
|
fakeID := bson.NewObjectID()
|
|
|
|
|
results13Fake, err := pdb.Policies(ctx, []bson.ObjectID{pol1.ID, pol3.ID, fakeID})
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Len(t, results13Fake, 2) // pol1 + pol3 only
|
|
|
|
|
var set13Fake []primitive.ObjectID
|
|
|
|
|
var set13Fake []bson.ObjectID
|
|
|
|
|
for _, r := range results13Fake {
|
|
|
|
|
set13Fake = append(set13Fake, r.ID)
|
|
|
|
|
}
|
|
|
|
|
@@ -346,7 +348,7 @@ func TestPoliciesDB(t *testing.T) {
|
|
|
|
|
assert.Contains(t, set13Fake, pol3.ID)
|
|
|
|
|
|
|
|
|
|
// 3) Request with empty slice => expect no results
|
|
|
|
|
resultsEmpty, err := pdb.Policies(ctx, []primitive.ObjectID{})
|
|
|
|
|
resultsEmpty, err := pdb.Policies(ctx, []bson.ObjectID{})
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.Len(t, resultsEmpty, 0)
|
|
|
|
|
})
|
|
|
|
|
|