46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package integration
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"log"
|
||
"os"
|
||
"testing"
|
||
"time"
|
||
|
||
"github.com/stretchr/testify/assert"
|
||
"go.mongodb.org/mongo-driver/bson"
|
||
"go.mongodb.org/mongo-driver/mongo"
|
||
"go.mongodb.org/mongo-driver/mongo/options"
|
||
)
|
||
|
||
func TestMongoDBConnection(t *testing.T) {
|
||
mongoURI := os.Getenv("MONGODB_URI")
|
||
if mongoURI == "" {
|
||
mongoURI = "mongodb://mongo_user:mongo_password@localhost:27017/admin"
|
||
}
|
||
|
||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||
defer cancel()
|
||
|
||
client, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoURI))
|
||
assert.NoError(t, err, "Ошибка подключения к MongoDB")
|
||
defer client.Disconnect(ctx)
|
||
|
||
err = client.Ping(ctx, nil)
|
||
assert.NoError(t, err, "Не удается пропинговать MongoDB")
|
||
|
||
dbName := fmt.Sprintf("test_db_%d", time.Now().UnixNano())
|
||
collection := client.Database(dbName).Collection("test_collection")
|
||
|
||
doc := bson.M{"name": "test", "value": "success"}
|
||
result, err := collection.InsertOne(ctx, doc)
|
||
assert.NoError(t, err, "Ошибка при вставке документа")
|
||
assert.NotNil(t, result.InsertedID, "ID вставленного документа не должен быть nil")
|
||
|
||
err = client.Database(dbName).Drop(ctx)
|
||
assert.NoError(t, err, "Ошибка при удалении тестовой БД")
|
||
|
||
log.Println("MongoDB подключение успешно проверено!")
|
||
}
|