summaryrefslogtreecommitdiff
path: root/objectstore/memory_backend_test.go
diff options
context:
space:
mode:
authorPablo M. Bermudo Garay <pablombg@gmail.com>2022-02-09 19:58:30 +0100
committerPablo M. Bermudo Garay <pablombg@gmail.com>2022-02-10 13:14:19 +0100
commit53667583c094252818f203b9233a7726d0a4e8a0 (patch)
tree7bcc7cbaf784f149113cba85a837515d70ae1c87 /objectstore/memory_backend_test.go
parentc488ed1f80fd54846170c0ab04ce59a69f52a9e5 (diff)
Add proactive de-duplication to the memory backend
Diffstat (limited to 'objectstore/memory_backend_test.go')
-rw-r--r--objectstore/memory_backend_test.go51
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)
+ }
+}