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 подключение успешно проверено!") }