diff options
| author | Pablo M. Bermudo Garay <pablombg@gmail.com> | 2022-02-09 19:58:30 +0100 |
|---|---|---|
| committer | Pablo M. Bermudo Garay <pablombg@gmail.com> | 2022-02-10 13:14:19 +0100 |
| commit | 53667583c094252818f203b9233a7726d0a4e8a0 (patch) | |
| tree | 7bcc7cbaf784f149113cba85a837515d70ae1c87 /objectstore/memory_backend_test.go | |
| parent | c488ed1f80fd54846170c0ab04ce59a69f52a9e5 (diff) | |
Add proactive de-duplication to the memory backend
Diffstat (limited to 'objectstore/memory_backend_test.go')
| -rw-r--r-- | objectstore/memory_backend_test.go | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/objectstore/memory_backend_test.go b/objectstore/memory_backend_test.go index 3ac347c..3fbe7a5 100644 --- a/objectstore/memory_backend_test.go +++ b/objectstore/memory_backend_test.go @@ -4,7 +4,10 @@ // https://creativecommons.org/publicdomain/zero/1.0/legalcode package objectstore -import "testing" +import ( + "errors" + "testing" +) func TestCreateAndGet(t *testing.T) { objects := NewMemBackend() @@ -67,3 +70,49 @@ func TestCreateAndDelete(t *testing.T) { t.Errorf("Number of buckets. Got %v, want 0", numBuckets) } } + +func TestDuplicatesDetection(t *testing.T) { + objects := NewMemBackend() + + // Create an object + bucketId := "foo" + objectId := "bar" + objectContent := "Lorem ipsum" + objects.CreateObject(bucketId, objectId, objectContent) + + // Error type reference + var duplicateError *DuplicateError + + // Try to add the object again (same name) + err := objects.CreateObject(bucketId, objectId, objectContent) + if err == nil { + t.Error("Add a duplicate object. Got nil, want error") + } else if errors.Is(err, duplicateError) { + t.Error("Add a duplicate object. Got unexpected error") + } + + // Try to add the object again (different name) + err = objects.CreateObject(bucketId, "baz", objectContent) + if err == nil { + t.Error("Add a duplicate object. Got nil, want error") + } else if errors.Is(err, duplicateError) { + t.Error("Add a duplicate object. Got unexpected error") + } + + // Add the object to a different bucket + err = objects.CreateObject("baz", objectId, objectContent) + if err != nil { + t.Errorf("Add object. Got error, want nil: %v", err) + } + + // Delete the object + if err := objects.DeleteObject(bucketId, objectId); err != nil { + t.Fatalf("Delete test object: %v", err) + } + + // Add the object again + err = objects.CreateObject(bucketId, objectId, objectContent) + if err != nil { + t.Errorf("Add object. Got error, want nil: %v", err) + } +} |
