package storage import "testing" import ( "bytes" "io" "io/ioutil" "os" "strings" ) const ( test_path = "/tmp/store" test_book = ` HARI SELDON-… born in the 11,988th year of the Galactic Era; died 12,069. The dates are more commonly given in terms of the current Foundational Era as - 79 to the year 1 F.E. Born to middle-class parents on Helicon, Arcturus sector (where his father, in a legend of doubtful authenticity, was a tobacco grower in the hydroponic plants of the planet), he early showed amazing ability in mathematics. Anecdotes concerning his ability are innumerable, and some are contradictory. At the age of two, he is said to have …` test_id = "1234567890abcdef" ) func TestInit(t *testing.T) { st, err := Init(test_path) if err != nil { t.Fatal("An error ocurred initializing the store =>", err) } defer st.del() info, err := os.Stat(test_path) if err != nil { t.Fatal("An error ocurred =>", err) } if !info.Mode().IsDir() { t.Errorf(test_path, " is not dir.") } info, err = os.Stat(test_path + "/a/M") if err != nil { t.Fatal("An error ocurred =>", err) } if !info.Mode().IsDir() { t.Errorf(test_path, " is not dir.") } } func TestStore(t *testing.T) { st, err := Init(test_path) defer st.del() _, err = st.Store(test_id, strings.NewReader(test_book), "epub") if err != nil { t.Fatal("An error ocurred storing the book =>", err) } book, err := st.Get(test_id, "epub") if err != nil { t.Fatal("An error ocurred getting the book =>", err) } content, err := ioutil.ReadAll(book) if err != nil { t.Fatal("An error ocurred reading the book =>", err) } if !bytes.Equal(content, []byte(test_book)) { t.Error("Not the same content") } } func TestCreate(t *testing.T) { st, err := Init(test_path) defer st.del() f, err := st.Create(test_id, "img") if err != nil { t.Fatal("An error ocurred storing the book =>", err) } io.Copy(f, strings.NewReader(test_book)) img, err := st.Get(test_id, "img") if err != nil { t.Fatal("An error ocurred getting the book =>", err) } content, err := ioutil.ReadAll(img) if err != nil { t.Fatal("An error ocurred reading the book =>", err) } if !bytes.Equal(content, []byte(test_book)) { t.Error("Not the same content") } } func TestDelete(t *testing.T) { st, err := Init(test_path) defer st.del() _, err = st.Store(test_id, strings.NewReader(test_book), "epub") if err != nil { t.Fatal("An error ocurred storing the book =>", err) } err = st.Delete(test_id) if err != nil { t.Fatal("An error ocurred deleteing id =>", err) } _, err = st.Get(test_id, "epub") if err == nil { t.Fatal("Retrieve book without error.") } }