|
5 | 5 | "testing" |
6 | 6 | "time" |
7 | 7 |
|
| 8 | + "github.com/10gen/migration-verifier/internal/util" |
8 | 9 | "github.com/10gen/migration-verifier/mslices" |
9 | 10 | "github.com/pkg/errors" |
10 | 11 | "github.com/samber/lo" |
@@ -306,3 +307,36 @@ func (suite *IntegrationTestSuite) TestEventBeforeWritesOff() { |
306 | 307 |
|
307 | 308 | suite.Assert().Equal(docsCount, totalFailed, "all source docs should be missing") |
308 | 309 | } |
| 310 | + |
| 311 | +func (suite *IntegrationTestSuite) TestCreateForbidden() { |
| 312 | + ctx := suite.Context() |
| 313 | + buildInfo, err := util.GetBuildInfo(ctx, suite.srcMongoClient) |
| 314 | + suite.Require().NoError(err) |
| 315 | + |
| 316 | + if buildInfo.VersionArray[0] < 6 { |
| 317 | + suite.T().Skipf("This test requires server v6+. (Found: %v)", buildInfo.VersionArray) |
| 318 | + } |
| 319 | + |
| 320 | + verifier := suite.BuildVerifier() |
| 321 | + |
| 322 | + // start verifier |
| 323 | + verifierRunner := RunVerifierCheck(suite.Context(), suite.T(), verifier) |
| 324 | + |
| 325 | + // wait for generation 0 to end |
| 326 | + verifierRunner.AwaitGenerationEnd() |
| 327 | + |
| 328 | + db := suite.srcMongoClient.Database(suite.DBNameForTest()) |
| 329 | + coll := db.Collection("mycoll") |
| 330 | + suite.Require().NoError( |
| 331 | + db.CreateCollection(ctx, coll.Name()), |
| 332 | + ) |
| 333 | + |
| 334 | + suite.Require().NoError(verifier.WritesOff(ctx)) |
| 335 | + |
| 336 | + err = verifierRunner.Await() |
| 337 | + suite.Require().Error(err, "should detect forbidden create event") |
| 338 | + |
| 339 | + eventErr := UnknownEventError{} |
| 340 | + suite.Require().ErrorAs(err, &eventErr) |
| 341 | + suite.Assert().Equal("create", eventErr.Event.OpType) |
| 342 | +} |
0 commit comments