@@ -34,12 +34,85 @@ func TestVault_GetEntries(t *testing.T) {
34
34
t .Errorf ("opening vault failed: %+v" , err )
35
35
}
36
36
37
- entries , err := vault .GetEntries ("password" , nil )
37
+ Assert_GetEntries (t , vault , nil , 1 )
38
+ }
39
+
40
+ func TestVault_GetEntries_Filter_OR (t * testing.T ) {
41
+ vault , err := NewVault (vaultPath , logrus .ErrorLevel )
38
42
if err != nil {
39
- t .Errorf ("vault get entries failed: %+v" , err )
43
+ t .Errorf ("vault initialization failed: %+v" , err )
40
44
}
45
+ defer vault .Close ()
46
+ credentials := & VaultCredentials {Password : testPassword }
47
+ if err := vault .Open (credentials ); err != nil {
48
+ t .Errorf ("opening vault failed: %+v" , err )
49
+ }
50
+
51
+ vault .FilterAnd = false
41
52
42
- if len (entries ) != 1 {
53
+ Assert_GetEntries (t , vault , []string {"mylogin" }, 1 ) // matches title
54
+ Assert_GetEntries (t , vault , []string {"myusername" }, 1 ) // matches subtitle
55
+ Assert_GetEntries (t , vault , []string {"inexistent" }, 0 ) // matches nothing
56
+ Assert_GetEntries (t , vault , []string {"mylogin" , "myusername" }, 1 )
57
+ Assert_GetEntries (t , vault , []string {"mylogin" , "inexistent" }, 1 )
58
+ Assert_GetEntries (t , vault , []string {"inexistent" , "alsoinexistent" }, 0 )
59
+ }
60
+
61
+ func TestVault_GetEntries_Filter_AND (t * testing.T ) {
62
+ vault , err := NewVault (vaultPath , logrus .ErrorLevel )
63
+ if err != nil {
64
+ t .Errorf ("vault initialization failed: %+v" , err )
65
+ }
66
+ defer vault .Close ()
67
+ credentials := & VaultCredentials {Password : testPassword }
68
+ if err := vault .Open (credentials ); err != nil {
69
+ t .Errorf ("opening vault failed: %+v" , err )
70
+ }
71
+
72
+ vault .FilterAnd = true
73
+
74
+ Assert_GetEntries (t , vault , []string {"mylogin" }, 1 ) // matches title
75
+ Assert_GetEntries (t , vault , []string {"myusername" }, 1 ) // matches subtitle
76
+ Assert_GetEntries (t , vault , []string {"inexistent" }, 0 ) // matches nothing
77
+ Assert_GetEntries (t , vault , []string {"mylogin" , "myusername" }, 1 )
78
+ Assert_GetEntries (t , vault , []string {"mylogin" , "inexistent" }, 0 )
79
+ Assert_GetEntries (t , vault , []string {"inexistent" , "alsoinexistent" }, 0 )
80
+ }
81
+
82
+ func TestVault_GetEntries_Filter_Fields (t * testing.T ) {
83
+ vault , err := NewVault (vaultPath , logrus .ErrorLevel )
84
+ if err != nil {
85
+ t .Errorf ("vault initialization failed: %+v" , err )
86
+ }
87
+ defer vault .Close ()
88
+ credentials := & VaultCredentials {Password : testPassword }
89
+ if err := vault .Open (credentials ); err != nil {
90
+ t .Errorf ("opening vault failed: %+v" , err )
91
+ }
92
+
93
+ vault .FilterAnd = false
94
+
95
+ vault .FilterFields = []string {"title" }
96
+ Assert_GetEntries (t , vault , []string {"mylogin" }, 1 ) // matches title
97
+ Assert_GetEntries (t , vault , []string {"myusername" }, 0 ) // matches subtitle
98
+ Assert_GetEntries (t , vault , []string {"mylogin" , "myusername" }, 1 )
99
+
100
+ vault .FilterFields = []string {"subtitle" }
101
+ Assert_GetEntries (t , vault , []string {"mylogin" }, 0 ) // matches title
102
+ Assert_GetEntries (t , vault , []string {"myusername" }, 1 ) // matches subtitle
103
+ Assert_GetEntries (t , vault , []string {"mylogin" , "myusername" }, 1 )
104
+
105
+ vault .FilterFields = []string {"title" , "subtitle" }
106
+ Assert_GetEntries (t , vault , []string {"mylogin" }, 1 ) // matches title
107
+ Assert_GetEntries (t , vault , []string {"myusername" }, 1 ) // matches subtitle
108
+ Assert_GetEntries (t , vault , []string {"mylogin" , "myusername" }, 1 )
109
+ }
110
+
111
+ func Assert_GetEntries (t * testing.T , vault * Vault , filters []string , expectedCount int ) {
112
+ entries , err := vault .GetEntries ("password" , filters )
113
+ if err != nil {
114
+ t .Errorf ("vault get entries failed: %+v" , err )
115
+ } else if len (entries ) != expectedCount {
43
116
t .Error ("wrong number of entries returned" )
44
117
}
45
118
}
0 commit comments