@@ -2,7 +2,6 @@ package persistence
22
33import (
44 "bytes"
5- "errors"
65 "fmt"
76 "io/ioutil"
87 "os"
@@ -18,37 +17,97 @@ var (
1817 dirArchive = "archive"
1918
2019 dirName1 = "0x424242"
21- fileName11 = "/ file11"
22- fileName12 = "/ file12"
20+ fileName11 = "file11"
21+ fileName12 = "file12"
2322
2423 dirName2 = "0x777777"
25- fileName21 = "/ file21"
24+ fileName21 = "file21"
2625
2726 pathToCurrent = fmt .Sprintf ("%s/%s" , dataDir , dirCurrent )
2827 pathToArchive = fmt .Sprintf ("%s/%s" , dataDir , dirArchive )
2928
30- errExpectedRead = errors .New ("cannot read from the storage directory: " )
31- errExpectedWrite = errors .New ("cannot write to the storage directory: " )
29+ errExpectedRead = fmt .Errorf ("cannot read from the storage directory: " )
30+ errExpectedWrite = fmt .Errorf ("cannot write to the storage directory: " )
31+
32+ // 128 characters
33+ maxAllowedName = "0cc2abf49e067b3bede8426d9369c6952655d33629f44610536445c00c974c7e2740dfac967dbfceeeec0af88cd48a5d8c1c167df93cad1b8301a4a204c9f235"
34+ // 129 charactes
35+ notAllowedName = "0cc2abf49e067b3bede8426d9369c6952655d33629f44610536445c00c974c7e2740dfac967dbfceeeec0af88cd48a5d8c1c167df93cad1b8301a4a204c9f235a"
36+
37+ errDirectoryNameLength = fmt .Errorf ("the maximum directory name length of [128] exceeded for [%v]" , notAllowedName )
38+ errFileNameLength = fmt .Errorf ("the maximum file name length of [128] exceeded for [%v]" , notAllowedName )
3239)
3340
34- func TestMain (m * testing.M ) {
35- code := m .Run ()
41+ func cleanup () {
3642 os .RemoveAll (pathToCurrent )
3743 os .RemoveAll (pathToArchive )
38- os .Exit (code )
3944}
4045
4146func TestDiskPersistence_Save (t * testing.T ) {
4247 diskPersistence , _ := NewDiskHandle (dataDir )
4348 bytesToTest := []byte {115 , 111 , 109 , 101 , 10 }
4449
45- diskPersistence .Save (bytesToTest , dirName1 , fileName11 )
50+ err := diskPersistence .Save (bytesToTest , dirName1 , fileName11 )
51+ if err != nil {
52+ t .Fatal (err )
53+ }
4654
47- pathToFile := fmt .Sprintf ("%s/%s%s" , pathToCurrent , dirName1 , fileName11 )
55+ pathToFile := fmt .Sprintf ("%s/%s/ %s" , pathToCurrent , dirName1 , fileName11 )
4856
4957 if _ , err := os .Stat (pathToFile ); os .IsNotExist (err ) {
5058 t .Fatalf ("file [%+v] was supposed to be created" , pathToFile )
5159 }
60+
61+ cleanup ()
62+ }
63+
64+ func TestDiskPersistence_SaveMaxAllowed (t * testing.T ) {
65+ diskPersistence , _ := NewDiskHandle (dataDir )
66+ bytesToTest := []byte {115 , 111 , 109 , 101 , 10 }
67+
68+ err := diskPersistence .Save (bytesToTest , maxAllowedName , maxAllowedName )
69+ if err != nil {
70+ t .Fatal (err )
71+ }
72+
73+ pathToFile := fmt .Sprintf ("%s/%s/%s" , pathToCurrent , maxAllowedName , maxAllowedName )
74+
75+ if _ , err := os .Stat (pathToFile ); os .IsNotExist (err ) {
76+ t .Fatalf ("file [%+v] was supposed to be created" , pathToFile )
77+ }
78+
79+ cleanup ()
80+ }
81+
82+ func TestDiskPersistence_RefuseSave (t * testing.T ) {
83+ diskPersistence , _ := NewDiskHandle (dataDir )
84+ bytesToTest := []byte {115 , 111 , 109 , 101 , 10 }
85+
86+ err := diskPersistence .Save (bytesToTest , notAllowedName , fileName11 )
87+ if err == nil {
88+ t .Fatalf ("expected error" )
89+ }
90+ if errDirectoryNameLength .Error () != err .Error () {
91+ t .Fatalf (
92+ "unexpected error returned\n expected: [%v]\n actual: [%v]" ,
93+ errDirectoryNameLength .Error (),
94+ err .Error (),
95+ )
96+ }
97+
98+ err = diskPersistence .Save (bytesToTest , dirName1 , notAllowedName )
99+ if err == nil {
100+ t .Fatalf ("expected error" )
101+ }
102+ if errFileNameLength .Error () != err .Error () {
103+ t .Fatalf (
104+ "unexpected error returned\n expected: [%v]\n actual: [%v]" ,
105+ errFileNameLength .Error (),
106+ err .Error (),
107+ )
108+ }
109+
110+ cleanup ()
52111}
53112
54113func TestDiskPersistence_StoragePermission (t * testing.T ) {
@@ -71,6 +130,8 @@ func TestDiskPersistence_StoragePermission(t *testing.T) {
71130 if err == nil || ! strings .Contains (err .Error (), errExpectedWrite .Error ()) {
72131 t .Fatalf ("error on write was supposed to be returned" )
73132 }
133+
134+ cleanup ()
74135}
75136
76137func TestDiskPersistence_ReadAll (t * testing.T ) {
@@ -134,6 +195,8 @@ func TestDiskPersistence_ReadAll(t *testing.T) {
134195 )
135196 }
136197 }
198+
199+ cleanup ()
137200}
138201
139202func TestDiskPersistence_Archive (t * testing.T ) {
@@ -171,6 +234,68 @@ func TestDiskPersistence_Archive(t *testing.T) {
171234 t .Fatalf ("Dir [%+v] was supposed to be created" , pathMoveTo )
172235 }
173236 }
237+
238+ cleanup ()
239+ }
240+
241+ func TestDiskPersistence_ArchiveMaxAllowed (t * testing.T ) {
242+ diskPersistence , _ := NewDiskHandle (dataDir )
243+
244+ pathMoveFrom := fmt .Sprintf ("%s/%s" , pathToCurrent , maxAllowedName )
245+ pathMoveTo := fmt .Sprintf ("%s/%s" , pathToArchive , maxAllowedName )
246+
247+ bytesToTest := []byte {115 , 111 , 109 , 101 , 10 }
248+
249+ diskPersistence .Save (bytesToTest , maxAllowedName , maxAllowedName )
250+
251+ if _ , err := os .Stat (pathMoveFrom ); os .IsNotExist (err ) {
252+ if err != nil {
253+ t .Fatalf ("Dir [%+v] was supposed to be created" , pathMoveFrom )
254+ }
255+ }
256+
257+ if _ , err := os .Stat (pathMoveTo ); ! os .IsNotExist (err ) {
258+ if err != nil {
259+ t .Fatalf ("Dir [%+v] was supposed to be empty" , pathMoveTo )
260+ }
261+ }
262+
263+ err := diskPersistence .Archive (maxAllowedName )
264+ if err != nil {
265+ t .Fatal (err )
266+ }
267+
268+ if _ , err := os .Stat (pathMoveFrom ); ! os .IsNotExist (err ) {
269+ if err != nil {
270+ t .Fatalf ("Dir [%+v] was supposed to be moved" , pathMoveFrom )
271+ }
272+ }
273+
274+ if _ , err := os .Stat (pathMoveTo ); os .IsNotExist (err ) {
275+ if err != nil {
276+ t .Fatalf ("Dir [%+v] was supposed to be created" , pathMoveTo )
277+ }
278+ }
279+
280+ cleanup ()
281+ }
282+
283+ func TestDiskPersistence_RefuseArchive (t * testing.T ) {
284+ diskPersistence , _ := NewDiskHandle (dataDir )
285+
286+ err := diskPersistence .Archive (notAllowedName )
287+ if err == nil {
288+ t .Fatalf ("expected error" )
289+ }
290+ if errDirectoryNameLength .Error () != err .Error () {
291+ t .Fatalf (
292+ "unexpected error returned\n expected: [%v]\n actual: [%v]" ,
293+ errDirectoryNameLength .Error (),
294+ err .Error (),
295+ )
296+ }
297+
298+ cleanup ()
174299}
175300
176301func TestDiskPersistence_AppendToArchive (t * testing.T ) {
@@ -198,4 +323,5 @@ func TestDiskPersistence_AppendToArchive(t *testing.T) {
198323 t .Fatalf ("Number of all files was supposed to be [%+v]" , 4 )
199324 }
200325
326+ cleanup ()
201327}
0 commit comments