70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
description: "findOneAndUpdate-errorResponse"
 | 
						|
 | 
						|
schemaVersion: "1.12"
 | 
						|
 | 
						|
createEntities:
 | 
						|
  - client:
 | 
						|
      id: &client0 client0
 | 
						|
  - database:
 | 
						|
      id: &database0 database0
 | 
						|
      client: *client0
 | 
						|
      databaseName: &database0Name crud-tests
 | 
						|
  - collection:
 | 
						|
      id: &collection0 collection0
 | 
						|
      database: *database0
 | 
						|
      collectionName: &collection0Name test
 | 
						|
 | 
						|
initialData: &initialData
 | 
						|
  - collectionName: *collection0Name
 | 
						|
    databaseName: *database0Name
 | 
						|
    documents:
 | 
						|
      - { _id: 1, x: "foo" }
 | 
						|
 | 
						|
tests:
 | 
						|
  - description: "findOneAndUpdate DuplicateKey error is accessible"
 | 
						|
    runOnRequirements:
 | 
						|
      - minServerVersion: "4.2" # SERVER-37124
 | 
						|
    operations:
 | 
						|
      - name: createIndex
 | 
						|
        object: *collection0
 | 
						|
        arguments:
 | 
						|
          keys: { x: 1 }
 | 
						|
          unique: true
 | 
						|
      - name: findOneAndUpdate
 | 
						|
        object: *collection0
 | 
						|
        arguments:
 | 
						|
          filter: { _id: 2 }
 | 
						|
          update: { $set: { x: "foo" } }
 | 
						|
          upsert: true
 | 
						|
        expectError:
 | 
						|
          errorCode: 11000 # DuplicateKey
 | 
						|
          errorResponse:
 | 
						|
            keyPattern: { x: 1 }
 | 
						|
            keyValue: { x: "foo" }
 | 
						|
 | 
						|
  - description: "findOneAndUpdate document validation errInfo is accessible"
 | 
						|
    runOnRequirements:
 | 
						|
      - minServerVersion: "5.0"
 | 
						|
    operations:
 | 
						|
      - name: modifyCollection
 | 
						|
        object: *database0
 | 
						|
        arguments:
 | 
						|
          collection: *collection0Name
 | 
						|
          validator:
 | 
						|
            x: { $type: "string" }
 | 
						|
      - name: findOneAndUpdate
 | 
						|
        object: *collection0
 | 
						|
        arguments:
 | 
						|
          filter: { _id: 1 }
 | 
						|
          update: { $set: { x: 1 } }
 | 
						|
        expectError:
 | 
						|
          errorCode: 121 # DocumentValidationFailure
 | 
						|
          errorResponse:
 | 
						|
            # Avoid asserting the exact contents of errInfo as it may vary by
 | 
						|
            # server version. Likewise, this is why drivers do not model the
 | 
						|
            # document. The following is sufficient to test that validation
 | 
						|
            # details are accessible. See SERVER-20547 for more context.
 | 
						|
            errInfo:
 | 
						|
              failingDocumentId: 1
 | 
						|
              details: { $$type: "object" }
 |