@@ -2,11 +2,13 @@ package persistence
22
33import (
44 "bytes"
5+ "errors"
56 "fmt"
7+ "io/ioutil"
68 "os"
9+ "strings"
710 "sync"
811 "testing"
9- "io/ioutil"
1012)
1113
1214var (
2426
2527 pathToCurrent = fmt .Sprintf ("%s/%s" , dataDir , dirCurrent )
2628 pathToArchive = fmt .Sprintf ("%s/%s" , dataDir , dirArchive )
29+
30+ errExpectedRead = errors .New ("cannot read from the storage directory: " )
31+ errExpectedWrite = errors .New ("cannot write to the storage directory: " )
2732)
2833
2934func TestMain (m * testing.M ) {
@@ -34,7 +39,7 @@ func TestMain(m *testing.M) {
3439}
3540
3641func TestDiskPersistence_Save (t * testing.T ) {
37- diskPersistence := NewDiskHandle (dataDir )
42+ diskPersistence , _ := NewDiskHandle (dataDir )
3843 bytesToTest := []byte {115 , 111 , 109 , 101 , 10 }
3944
4045 diskPersistence .Save (bytesToTest , dirName1 , fileName11 )
@@ -46,8 +51,30 @@ func TestDiskPersistence_Save(t *testing.T) {
4651 }
4752}
4853
54+ func TestDiskPersistence_StoragePermission (t * testing.T ) {
55+ tempDir := "./data_storage"
56+
57+ err := os .Mkdir (tempDir , 0000 ) // d---------
58+ if _ , err := os .Stat (tempDir ); os .IsNotExist (err ) {
59+ t .Fatalf ("dir [%+v] was supposed to be created" , tempDir )
60+ }
61+ defer os .RemoveAll (tempDir )
62+
63+ _ , err = NewDiskHandle (tempDir )
64+ if err == nil || ! strings .Contains (err .Error (), errExpectedRead .Error ()) {
65+ t .Fatalf ("error on read was supposed to be returned" )
66+ }
67+
68+ os .Chmod (tempDir , 0444 ) // dr--r--r
69+
70+ _ , err = NewDiskHandle (tempDir )
71+ if err == nil || ! strings .Contains (err .Error (), errExpectedWrite .Error ()) {
72+ t .Fatalf ("error on write was supposed to be returned" )
73+ }
74+ }
75+
4976func TestDiskPersistence_ReadAll (t * testing.T ) {
50- diskPersistence := NewDiskHandle (dataDir )
77+ diskPersistence , _ := NewDiskHandle (dataDir )
5178
5279 bytesToTest := []byte {115 , 111 , 109 , 101 , 10 }
5380 expectedBytes := [][]byte {bytesToTest , bytesToTest , bytesToTest }
@@ -110,7 +137,7 @@ func TestDiskPersistence_ReadAll(t *testing.T) {
110137}
111138
112139func TestDiskPersistence_Archive (t * testing.T ) {
113- diskPersistence := NewDiskHandle (dataDir )
140+ diskPersistence , _ := NewDiskHandle (dataDir )
114141
115142 pathMoveFrom := fmt .Sprintf ("%s/%s" , pathToCurrent , dirName1 )
116143 pathMoveTo := fmt .Sprintf ("%s/%s" , pathToArchive , dirName1 )
@@ -147,7 +174,7 @@ func TestDiskPersistence_Archive(t *testing.T) {
147174}
148175
149176func TestDiskPersistence_AppendToArchive (t * testing.T ) {
150- diskPersistence := NewDiskHandle (dataDir )
177+ diskPersistence , _ := NewDiskHandle (dataDir )
151178
152179 pathMoveFrom := fmt .Sprintf ("%s/%s" , pathToCurrent , dirName1 )
153180 pathMoveTo := fmt .Sprintf ("%s/%s" , pathToArchive , dirName1 )
@@ -157,11 +184,11 @@ func TestDiskPersistence_AppendToArchive(t *testing.T) {
157184 diskPersistence .Save (bytesToTest , dirName1 , fileName11 )
158185 diskPersistence .Save (bytesToTest , dirName1 , fileName12 )
159186 diskPersistence .Archive (dirName1 )
160-
187+
161188 diskPersistence .Save (bytesToTest , dirName1 , "/file13" )
162189 diskPersistence .Save (bytesToTest , dirName1 , "/file14" )
163190 diskPersistence .Archive (dirName1 )
164-
191+
165192 if _ , err := os .Stat (pathMoveFrom ); ! os .IsNotExist (err ) {
166193 t .Fatalf ("Dir [%+v] was supposed to be removed" , pathMoveFrom )
167194 }
@@ -171,4 +198,4 @@ func TestDiskPersistence_AppendToArchive(t *testing.T) {
171198 t .Fatalf ("Number of all files was supposed to be [%+v]" , 4 )
172199 }
173200
174- }
201+ }
0 commit comments