// checkOnlyHasDocuments returns an error if the documents in the test // collection don't exactly match those that are passed in func checkOnlyHasDocuments(sessionProvider db.SessionProvider, expectedDocuments []bson.M) error { session, err := sessionProvider.GetSession() if err != nil { return err } defer session.Close() collection := session.DB(testDb).C(testCollection) dbDocuments := []bson.M{} err = collection.Find(nil).Sort("_id").All(&dbDocuments) if err != nil { return err } if len(dbDocuments) != len(expectedDocuments) { return fmt.Errorf("document count mismatch: expected %#v, got %#v", len(expectedDocuments), len(dbDocuments)) } for index := range dbDocuments { if !reflect.DeepEqual(dbDocuments[index], expectedDocuments[index]) { return fmt.Errorf("document mismatch: expected %#v, got %#v", expectedDocuments[index], dbDocuments[index]) } } return nil }
// VerifySystemAuthVersion returns an error if authentication is not set up for // the given server. func VerifySystemAuthVersion(sessionProvider *db.SessionProvider) error { session, err := sessionProvider.GetSession() if err != nil { return fmt.Errorf("error getting session from server: %v", err) } defer session.Close() versionEntries := session.DB("admin").C("system.version") if count, err := versionEntries.Count(); err != nil { return fmt.Errorf("error checking pressence of auth version: %v", err) } else if count == 0 { return fmt.Errorf("found no auth version") } return nil }