@@ -31,6 +31,7 @@ func TestProjectVariablesService_ListVariables(t *testing.T) {
3131 VariableType : "env_var" ,
3232 Protected : false ,
3333 Masked : false ,
34+ Hidden : false ,
3435 EnvironmentScope : "" ,
3536 Description : "test variable 1" ,
3637 }}
@@ -69,6 +70,7 @@ func TestProjectVariablesService_GetVariable(t *testing.T) {
6970 "value": "TEST_1",
7071 "protected": false,
7172 "masked": true,
73+ "hidden": true,
7274 "description": "test variable 1"
7375 }
7476 ` )
@@ -80,6 +82,7 @@ func TestProjectVariablesService_GetVariable(t *testing.T) {
8082 VariableType : "env_var" ,
8183 Protected : false ,
8284 Masked : true ,
85+ Hidden : true ,
8386 EnvironmentScope : "" ,
8487 Description : "test variable 1" ,
8588 }
@@ -118,6 +121,7 @@ func TestProjectVariablesService_CreateVariable(t *testing.T) {
118121 "protected": false,
119122 "variable_type": "env_var",
120123 "masked": false,
124+ "masked_and_hidden": false,
121125 "environment_scope": "*",
122126 "description": "new variable"
123127 }
@@ -130,6 +134,57 @@ func TestProjectVariablesService_CreateVariable(t *testing.T) {
130134 VariableType : "env_var" ,
131135 Protected : false ,
132136 Masked : false ,
137+ Hidden : false ,
138+ EnvironmentScope : "*" ,
139+ Description : "new variable" ,
140+ }
141+
142+ pv , resp , err := client .ProjectVariables .CreateVariable (1 , & CreateProjectVariableOptions {Description : Ptr ("new variable" )}, nil )
143+ require .NoError (t , err )
144+ require .NotNil (t , resp )
145+ require .Equal (t , want , pv )
146+
147+ pv , resp , err = client .ProjectVariables .CreateVariable (1.01 , nil , nil )
148+ require .EqualError (t , err , "invalid ID type 1.01, the ID must be an int or a string" )
149+ require .Nil (t , resp )
150+ require .Nil (t , pv )
151+
152+ pv , resp , err = client .ProjectVariables .CreateVariable (1 , nil , nil , errorOption )
153+ require .EqualError (t , err , "RequestOptionFunc returns an error" )
154+ require .Nil (t , resp )
155+ require .Nil (t , pv )
156+
157+ pv , resp , err = client .ProjectVariables .CreateVariable (2 , nil , nil )
158+ require .Error (t , err )
159+ require .Nil (t , pv )
160+ require .Equal (t , http .StatusNotFound , resp .StatusCode )
161+ }
162+
163+ func TestProjectVariablesService_CreateVariable_MaskedAndHidden (t * testing.T ) {
164+ mux , client := setup (t )
165+
166+ mux .HandleFunc ("/api/v4/projects/1/variables" , func (w http.ResponseWriter , r * http.Request ) {
167+ testMethod (t , r , http .MethodPost )
168+ testBody (t , r , `{"description":"new variable"}` )
169+ fmt .Fprintf (w , `
170+ {
171+ "key": "NEW_VARIABLE",
172+ "protected": false,
173+ "variable_type": "env_var",
174+ "masked": true,
175+ "hidden": true,
176+ "environment_scope": "*",
177+ "description": "new variable"
178+ }
179+ ` )
180+ })
181+
182+ want := & ProjectVariable {
183+ Key : "NEW_VARIABLE" ,
184+ VariableType : "env_var" ,
185+ Protected : false ,
186+ Masked : true ,
187+ Hidden : true ,
133188 EnvironmentScope : "*" ,
134189 Description : "new variable" ,
135190 }
@@ -180,6 +235,61 @@ func TestProjectVariablesService_UpdateVariable(t *testing.T) {
180235 VariableType : "env_var" ,
181236 Protected : false ,
182237 Masked : false ,
238+ Hidden : false ,
239+ EnvironmentScope : "*" ,
240+ Description : "updated description" ,
241+ }
242+
243+ pv , resp , err := client .ProjectVariables .UpdateVariable (1 , "NEW_VARIABLE" , & UpdateProjectVariableOptions {
244+ Filter : & VariableFilter {EnvironmentScope : "prod" },
245+ Description : Ptr ("updated description" ),
246+ }, nil )
247+ require .NoError (t , err )
248+ require .NotNil (t , resp )
249+ require .Equal (t , want , pv )
250+
251+ pv , resp , err = client .ProjectVariables .UpdateVariable (1.01 , "NEW_VARIABLE" , nil , nil )
252+ require .EqualError (t , err , "invalid ID type 1.01, the ID must be an int or a string" )
253+ require .Nil (t , resp )
254+ require .Nil (t , pv )
255+
256+ pv , resp , err = client .ProjectVariables .UpdateVariable (1 , "NEW_VARIABLE" , nil , nil , errorOption )
257+ require .EqualError (t , err , "RequestOptionFunc returns an error" )
258+ require .Nil (t , resp )
259+ require .Nil (t , pv )
260+
261+ pv , resp , err = client .ProjectVariables .UpdateVariable (2 , "NEW_VARIABLE" , nil , nil )
262+ require .Error (t , err )
263+ require .Nil (t , pv )
264+ require .Equal (t , http .StatusNotFound , resp .StatusCode )
265+ }
266+
267+ func TestProjectVariablesService_UpdateVariable_MaskedAndHidden (t * testing.T ) {
268+ mux , client := setup (t )
269+
270+ mux .HandleFunc ("/api/v4/projects/1/variables/NEW_VARIABLE" , func (w http.ResponseWriter , r * http.Request ) {
271+ testMethod (t , r , http .MethodPut )
272+ testBody (t , r , `{"description":"updated description","filter":{"environment_scope":"prod"}}` )
273+ fmt .Fprintf (w , `
274+ {
275+ "key": "NEW_VARIABLE",
276+ "value": null,
277+ "protected": false,
278+ "variable_type": "env_var",
279+ "masked": true,
280+ "hidden": true,
281+ "environment_scope": "*",
282+ "description": "updated description"
283+ }
284+ ` )
285+ })
286+
287+ want := & ProjectVariable {
288+ Key : "NEW_VARIABLE" ,
289+ VariableType : "env_var" ,
290+ Protected : false ,
291+ Masked : true ,
292+ Hidden : true ,
183293 EnvironmentScope : "*" ,
184294 Description : "updated description" ,
185295 }
0 commit comments