|
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" |
@@ -319,3 +320,36 @@ func (suite *IntegrationTestSuite) testInsertsBeforeWritesOff(docsCount int) { |
319 | 320 |
|
320 | 321 | suite.Assert().Equal(docsCount, totalFailed, "all source docs should be missing") |
321 | 322 | } |
| 323 | + |
| 324 | +func (suite *IntegrationTestSuite) TestCreateForbidden() { |
| 325 | + ctx := suite.Context() |
| 326 | + buildInfo, err := util.GetBuildInfo(ctx, suite.srcMongoClient) |
| 327 | + suite.Require().NoError(err) |
| 328 | + |
| 329 | + if buildInfo.VersionArray[0] < 6 { |
| 330 | + suite.T().Skipf("This test requires server v6+. (Found: %v)", buildInfo.VersionArray) |
| 331 | + } |
| 332 | + |
| 333 | + verifier := suite.BuildVerifier() |
| 334 | + |
| 335 | + // start verifier |
| 336 | + verifierRunner := RunVerifierCheck(suite.Context(), suite.T(), verifier) |
| 337 | + |
| 338 | + // wait for generation 0 to end |
| 339 | + verifierRunner.AwaitGenerationEnd() |
| 340 | + |
| 341 | + db := suite.srcMongoClient.Database(suite.DBNameForTest()) |
| 342 | + coll := db.Collection("mycoll") |
| 343 | + suite.Require().NoError( |
| 344 | + db.CreateCollection(ctx, coll.Name()), |
| 345 | + ) |
| 346 | + |
| 347 | + suite.Require().NoError(verifier.WritesOff(ctx)) |
| 348 | + |
| 349 | + err = verifierRunner.Await() |
| 350 | + suite.Require().Error(err, "should detect forbidden create event") |
| 351 | + |
| 352 | + eventErr := UnknownEventError{} |
| 353 | + suite.Require().ErrorAs(err, &eventErr) |
| 354 | + suite.Assert().Equal("create", eventErr.Event.OpType) |
| 355 | +} |
0 commit comments