...

Source file src/github.com/go-kivik/kivik/v4/kiviktest/db/delete.go

Documentation: github.com/go-kivik/kivik/v4/kiviktest/db

     1  // Licensed under the Apache License, Version 2.0 (the "License"); you may not
     2  // use this file except in compliance with the License. You may obtain a copy of
     3  // the License at
     4  //
     5  //  http://www.apache.org/licenses/LICENSE-2.0
     6  //
     7  // Unless required by applicable law or agreed to in writing, software
     8  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     9  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    10  // License for the specific language governing permissions and limitations under
    11  // the License.
    12  
    13  package db
    14  
    15  import (
    16  	"context"
    17  
    18  	"github.com/go-kivik/kivik/v4"
    19  	"github.com/go-kivik/kivik/v4/kiviktest/kt"
    20  )
    21  
    22  func init() {
    23  	kt.Register("Delete", _delete)
    24  }
    25  
    26  func _delete(ctx *kt.Context) {
    27  	ctx.RunRW(func(ctx *kt.Context) {
    28  		ctx.RunAdmin(func(ctx *kt.Context) {
    29  			testDelete(ctx, ctx.Admin)
    30  		})
    31  		ctx.RunNoAuth(func(ctx *kt.Context) {
    32  			testDelete(ctx, ctx.NoAuth)
    33  		})
    34  	})
    35  }
    36  
    37  type deleteDoc struct {
    38  	ID      string `json:"_id"`
    39  	Rev     string `json:"_rev,omitempty"`
    40  	Deleted bool   `json:"_deleted"`
    41  }
    42  
    43  func testDelete(ctx *kt.Context, client *kivik.Client) {
    44  	ctx.Parallel()
    45  	dbName := ctx.TestDB()
    46  	admdb := ctx.Admin.DB(dbName, ctx.Options("db"))
    47  	if err := admdb.Err(); err != nil {
    48  		ctx.Errorf("Failed to connect to db as admin: %s", err)
    49  	}
    50  	db := client.DB(dbName, ctx.Options("db"))
    51  	if err := db.Err(); err != nil {
    52  		ctx.Errorf("Failed to connect to db: %s", err)
    53  		return
    54  	}
    55  
    56  	doc := &deleteDoc{
    57  		ID: ctx.TestDBName(),
    58  	}
    59  	rev, err := admdb.Put(context.Background(), doc.ID, doc)
    60  	if err != nil {
    61  		ctx.Errorf("Failed to create test doc: %s", err)
    62  		return
    63  	}
    64  	doc.Rev = rev
    65  
    66  	doc2 := &deleteDoc{
    67  		ID: ctx.TestDBName(),
    68  	}
    69  	rev, err = admdb.Put(context.Background(), doc2.ID, doc2)
    70  	if err != nil {
    71  		ctx.Errorf("Failed to create test doc: %s", err)
    72  		return
    73  	}
    74  	doc2.Rev = rev
    75  
    76  	ddoc := &testDoc{
    77  		ID: "_design/foo",
    78  	}
    79  	rev, err = admdb.Put(context.Background(), ddoc.ID, ddoc)
    80  	if err != nil {
    81  		ctx.Fatalf("Failed to create design doc in test db: %s", err)
    82  	}
    83  	ddoc.Rev = rev
    84  
    85  	local := &testDoc{
    86  		ID: "_local/foo",
    87  	}
    88  	rev, err = admdb.Put(context.Background(), local.ID, local)
    89  	if err != nil {
    90  		ctx.Fatalf("Failed to create local doc in test db: %s", err)
    91  	}
    92  	local.Rev = rev
    93  
    94  	ctx.Run("group", func(ctx *kt.Context) {
    95  		ctx.Run("WrongRev", func(ctx *kt.Context) {
    96  			ctx.Parallel()
    97  			_, err := db.Delete(context.Background(), doc2.ID, "1-9c65296036141e575d32ba9c034dd3ee")
    98  			ctx.CheckError(err)
    99  		})
   100  		ctx.Run("InvalidRevFormat", func(ctx *kt.Context) {
   101  			ctx.Parallel()
   102  			_, err := db.Delete(context.Background(), doc2.ID, "invalid rev format")
   103  			ctx.CheckError(err)
   104  		})
   105  		ctx.Run("MissingDoc", func(ctx *kt.Context) {
   106  			ctx.Parallel()
   107  			_, err := db.Delete(context.Background(), "missing doc", "1-9c65296036141e575d32ba9c034dd3ee")
   108  			ctx.CheckError(err)
   109  		})
   110  		ctx.Run("ValidRev", func(ctx *kt.Context) {
   111  			ctx.Parallel()
   112  			_, err := db.Delete(context.Background(), doc.ID, doc.Rev)
   113  			ctx.CheckError(err)
   114  		})
   115  		ctx.Run("DesignDoc", func(ctx *kt.Context) {
   116  			ctx.Parallel()
   117  			_, err := db.Delete(context.Background(), ddoc.ID, ddoc.Rev)
   118  			ctx.CheckError(err)
   119  		})
   120  		ctx.Run("Local", func(ctx *kt.Context) {
   121  			ctx.Parallel()
   122  			_, err := db.Delete(context.Background(), local.ID, local.Rev)
   123  			ctx.CheckError(err)
   124  		})
   125  	})
   126  }
   127  

View as plain text