@@ -17,7 +17,6 @@ describe('commandEditSecret', () => {
17
17
let editorFail : string ;
18
18
let editorView : string ;
19
19
let polykeyAgent : PolykeyAgent ;
20
- let command : Array < string > ;
21
20
22
21
beforeEach ( async ( ) => {
23
22
dataDir = await fs . promises . mkdtemp (
@@ -59,6 +58,7 @@ describe('commandEditSecret', () => {
59
58
logger : logger ,
60
59
} ) ;
61
60
} ) ;
61
+
62
62
afterEach ( async ( ) => {
63
63
await polykeyAgent . stop ( ) ;
64
64
await fs . promises . rm ( dataDir , {
@@ -68,108 +68,125 @@ describe('commandEditSecret', () => {
68
68
} ) ;
69
69
70
70
test ( 'should edit secret' , async ( ) => {
71
- const vaultName = 'Vault10 ' as VaultName ;
71
+ const vaultName = 'vault ' as VaultName ;
72
72
const vaultId = await polykeyAgent . vaultManager . createVault ( vaultName ) ;
73
73
const secretName = 'secret' ;
74
-
75
74
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
76
75
await vaultOps . addSecret ( vault , secretName , 'original secret' ) ;
77
76
} ) ;
78
-
79
- command = [ 'secrets' , 'edit' , '-np' , dataDir , `${ vaultName } :${ secretName } ` ] ;
80
-
81
- const result = await testUtils . pkStdio ( [ ...command ] , {
77
+ const command = [
78
+ 'secrets' ,
79
+ 'edit' ,
80
+ '-np' ,
81
+ dataDir ,
82
+ `${ vaultName } :${ secretName } ` ,
83
+ ] ;
84
+ const result = await testUtils . pkStdio ( command , {
82
85
env : { PK_PASSWORD : password , EDITOR : editorEdit } ,
83
86
cwd : dataDir ,
84
87
} ) ;
85
88
expect ( result . exitCode ) . toBe ( 0 ) ;
86
-
87
89
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
88
90
const contents = await vaultOps . getSecret ( vault , secretName ) ;
89
91
expect ( contents . toString ( ) ) . toStrictEqual ( `${ editedContent } \n` ) ;
90
92
} ) ;
91
93
} ) ;
92
-
94
+ test ( 'should fail to edit without a secret path specified' , async ( ) => {
95
+ const vaultName = 'vault' as VaultName ;
96
+ const command = [ 'secrets' , 'edit' , '-np' , dataDir , vaultName ] ;
97
+ const result = await testUtils . pkStdio ( command , {
98
+ env : { PK_PASSWORD : password , EDITOR : editorEdit } ,
99
+ cwd : dataDir ,
100
+ } ) ;
101
+ expect ( result . exitCode ) . not . toBe ( 0 ) ;
102
+ } ) ;
93
103
test ( 'should create secret if it does not exist' , async ( ) => {
94
- const vaultName = 'Vault10 ' as VaultName ;
104
+ const vaultName = 'vault ' as VaultName ;
95
105
const vaultId = await polykeyAgent . vaultManager . createVault ( vaultName ) ;
96
106
const secretName = 'secret' ;
97
-
98
- command = [ 'secrets' , 'edit' , '-np' , dataDir , `${ vaultName } :${ secretName } ` ] ;
99
-
100
- const result = await testUtils . pkStdio ( [ ...command ] , {
107
+ const command = [
108
+ 'secrets' ,
109
+ 'edit' ,
110
+ '-np' ,
111
+ dataDir ,
112
+ `${ vaultName } :${ secretName } ` ,
113
+ ] ;
114
+ const result = await testUtils . pkStdio ( command , {
101
115
env : { PK_PASSWORD : password , EDITOR : editorEdit } ,
102
116
cwd : dataDir ,
103
117
} ) ;
104
118
expect ( result . exitCode ) . toBe ( 0 ) ;
105
-
106
119
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
107
120
const contents = await vaultOps . getSecret ( vault , secretName ) ;
108
121
expect ( contents . toString ( ) ) . toStrictEqual ( `${ editedContent } \n` ) ;
109
122
} ) ;
110
123
} ) ;
111
-
112
124
test ( 'should not create secret if editor crashes' , async ( ) => {
113
- const vaultName = 'Vault10 ' as VaultName ;
125
+ const vaultName = 'vault ' as VaultName ;
114
126
const vaultId = await polykeyAgent . vaultManager . createVault ( vaultName ) ;
115
127
const secretName = 'secret' ;
116
-
117
- command = [ 'secrets' , 'edit' , '-np' , dataDir , `${ vaultName } :${ secretName } ` ] ;
118
-
119
- const result = await testUtils . pkStdio ( [ ...command ] , {
128
+ const command = [
129
+ 'secrets' ,
130
+ 'edit' ,
131
+ '-np' ,
132
+ dataDir ,
133
+ `${ vaultName } :${ secretName } ` ,
134
+ ] ;
135
+ const result = await testUtils . pkStdio ( command , {
120
136
env : { PK_PASSWORD : password , EDITOR : editorFail } ,
121
137
cwd : dataDir ,
122
138
} ) ;
123
139
expect ( result . exitCode ) . not . toBe ( 0 ) ;
124
-
125
140
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
126
141
const list = await vaultOps . listSecrets ( vault ) ;
127
142
expect ( list . sort ( ) ) . toStrictEqual ( [ ] ) ;
128
143
} ) ;
129
144
} ) ;
130
-
131
145
test ( 'should not create secret if editor does not write to file' , async ( ) => {
132
- const vaultName = 'Vault10 ' as VaultName ;
146
+ const vaultName = 'vault ' as VaultName ;
133
147
const vaultId = await polykeyAgent . vaultManager . createVault ( vaultName ) ;
134
148
const secretName = 'secret' ;
135
-
136
- command = [ 'secrets' , 'edit' , '-np' , dataDir , `${ vaultName } :${ secretName } ` ] ;
137
-
138
- const result = await testUtils . pkStdio ( [ ...command ] , {
149
+ const command = [
150
+ 'secrets' ,
151
+ 'edit' ,
152
+ '-np' ,
153
+ dataDir ,
154
+ `${ vaultName } :${ secretName } ` ,
155
+ ] ;
156
+ const result = await testUtils . pkStdio ( command , {
139
157
env : { PK_PASSWORD : password , EDITOR : editorExit } ,
140
158
cwd : dataDir ,
141
159
} ) ;
142
160
expect ( result . exitCode ) . toBe ( 0 ) ;
143
-
144
161
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
145
162
const list = await vaultOps . listSecrets ( vault ) ;
146
163
expect ( list . sort ( ) ) . toStrictEqual ( [ ] ) ;
147
164
} ) ;
148
165
} ) ;
149
-
150
166
test ( 'file contents should be fetched correctly' , async ( ) => {
151
- const vaultName = 'Vault10 ' as VaultName ;
167
+ const vaultName = 'vault ' as VaultName ;
152
168
const vaultId = await polykeyAgent . vaultManager . createVault ( vaultName ) ;
153
169
const secretName = 'secret' ;
154
170
const secretContent = 'original secret' ;
155
-
156
171
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
157
172
await vaultOps . addSecret ( vault , secretName , secretContent ) ;
158
173
} ) ;
159
-
160
- command = [ 'secrets' , 'edit' , '-np' , dataDir , `${ vaultName } :${ secretName } ` ] ;
161
-
162
- const result = await testUtils . pkStdio ( [ ...command ] , {
174
+ const command = [
175
+ 'secrets' ,
176
+ 'edit' ,
177
+ '-np' ,
178
+ dataDir ,
179
+ `${ vaultName } :${ secretName } ` ,
180
+ ] ;
181
+ const result = await testUtils . pkStdio ( command , {
163
182
env : { PK_PASSWORD : password , EDITOR : editorView } ,
164
183
cwd : dataDir ,
165
184
} ) ;
166
185
expect ( result . exitCode ) . toBe ( 0 ) ;
167
-
168
186
const fetchedSecret = await fs . promises . readFile (
169
187
path . join ( dataDir , 'secret' ) ,
170
188
) ;
171
189
expect ( fetchedSecret . toString ( ) ) . toEqual ( secretContent ) ;
172
-
173
190
await polykeyAgent . vaultManager . withVaults ( [ vaultId ] , async ( vault ) => {
174
191
const contents = await vaultOps . getSecret ( vault , secretName ) ;
175
192
expect ( contents . toString ( ) ) . toStrictEqual ( `${ editedContent } \n` ) ;
0 commit comments