aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/api/manifest_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'swarm/api/manifest_test.go')
-rw-r--r--swarm/api/manifest_test.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/swarm/api/manifest_test.go b/swarm/api/manifest_test.go
index 20b8117c6..0208848a3 100644
--- a/swarm/api/manifest_test.go
+++ b/swarm/api/manifest_test.go
@@ -18,6 +18,8 @@ package api
import (
// "encoding/json"
+ "bytes"
+ "encoding/json"
"fmt"
"io"
"strings"
@@ -78,3 +80,34 @@ func TestGetEntry(t *testing.T) {
func TestDeleteEntry(t *testing.T) {
}
+
+// TestAddFileWithManifestPath tests that adding an entry at a path which
+// already exists as a manifest just adds the entry to the manifest rather
+// than replacing the manifest with the entry
+func TestAddFileWithManifestPath(t *testing.T) {
+ // create a manifest containing "ab" and "ac"
+ manifest, _ := json.Marshal(&Manifest{
+ Entries: []ManifestEntry{
+ {Path: "ab", Hash: "ab"},
+ {Path: "ac", Hash: "ac"},
+ },
+ })
+ reader := &storage.LazyTestSectionReader{
+ SectionReader: io.NewSectionReader(bytes.NewReader(manifest), 0, int64(len(manifest))),
+ }
+ trie, err := readManifest(reader, nil, nil, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ checkEntry(t, "ab", "ab", trie)
+ checkEntry(t, "ac", "ac", trie)
+
+ // now add path "a" and check we can still get "ab" and "ac"
+ entry := &manifestTrieEntry{}
+ entry.Path = "a"
+ entry.Hash = "a"
+ trie.addEntry(entry, nil)
+ checkEntry(t, "ab", "ab", trie)
+ checkEntry(t, "ac", "ac", trie)
+ checkEntry(t, "a", "a", trie)
+}