Skip to content

Commit c33a0b7

Browse files
CORE-656/Add manage_ip_whitelist permission to account section (#148)
* Add manage_ip_whitelist permission to account section * Update go sdk version * Add UTs coverage * Format code
1 parent 294c5ce commit c33a0b7

29 files changed

Lines changed: 1090 additions & 40 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.9.3 (March 4, 2021)
2+
BUG FIXES:
3+
* Adds missing `account_manage_ip_whitelist` permission [#148](https://github.com/ns1-terraform/terraform-provider-ns1/pull/148).
4+
15
## 1.9.2 (February 26, 2021)
26
BUG FIXES:
37
* Values for `tls_skip_verify` are coerced correctly [#146](https://github.com/ns1-terraform/terraform-provider-ns1/pull/146). Thanks @zahiar!

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/stretchr/objx v0.2.0 // indirect
77
github.com/stretchr/testify v1.4.0
88
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
9-
gopkg.in/ns1/ns1-go.v2 v2.4.2
9+
gopkg.in/ns1/ns1-go.v2 v2.4.4
1010
gopkg.in/yaml.v2 v2.2.7 // indirect
1111
)
1212

go.sum

Lines changed: 4 additions & 33 deletions
Large diffs are not rendered by default.

ns1/permissions.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ func addPermsSchema(s map[string]*schema.Schema) map[string]*schema.Schema {
101101
Default: false,
102102
DiffSuppressFunc: suppressPermissionDiff,
103103
}
104+
s["account_manage_ip_whitelist"] = &schema.Schema{
105+
Type: schema.TypeBool,
106+
Optional: true,
107+
Default: false,
108+
DiffSuppressFunc: suppressPermissionDiff,
109+
}
104110
s["monitoring_manage_lists"] = &schema.Schema{
105111
Type: schema.TypeBool,
106112
Optional: true,
@@ -209,6 +215,7 @@ func permissionsToResourceData(d *schema.ResourceData, permissions account.Permi
209215
d.Set("account_manage_account_settings", permissions.Account.ManageAccountSettings)
210216
d.Set("account_view_activity_log", permissions.Account.ViewActivityLog)
211217
d.Set("account_view_invoices", permissions.Account.ViewInvoices)
218+
d.Set("account_manage_ip_whitelist", permissions.Account.ManageIPWhitelist)
212219
d.Set("monitoring_manage_lists", permissions.Monitoring.ManageLists)
213220
d.Set("monitoring_manage_jobs", permissions.Monitoring.ManageJobs)
214221
d.Set("monitoring_view_jobs", permissions.Monitoring.ViewJobs)
@@ -288,6 +295,9 @@ func resourceDataToPermissions(d *schema.ResourceData) account.PermissionsMap {
288295
if v, ok := d.GetOk("account_view_invoices"); ok {
289296
p.Account.ViewInvoices = v.(bool)
290297
}
298+
if v, ok := d.GetOk("account_manage_ip_whitelist"); ok {
299+
p.Account.ManageIPWhitelist = v.(bool)
300+
}
291301
if v, ok := d.GetOk("monitoring_manage_lists"); ok {
292302
p.Monitoring.ManageLists = v.(bool)
293303
}

ns1/permissions_migrations.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ func addPermsSchemaV0(s map[string]*schema.Schema) map[string]*schema.Schema {
108108
Default: false,
109109
DiffSuppressFunc: suppressPermissionDiff,
110110
}
111+
s["account_manage_ip_whitelist"] = &schema.Schema{
112+
Type: schema.TypeBool,
113+
Optional: true,
114+
Default: false,
115+
DiffSuppressFunc: suppressPermissionDiff,
116+
}
111117
s["monitoring_manage_lists"] = &schema.Schema{
112118
Type: schema.TypeBool,
113119
Optional: true,

ns1/resource_apikey_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ func TestAccAPIKey_permissions(t *testing.T) {
127127
testAccCheckAPIKeyName(&apiKey, name),
128128
// The key should still have this permission, it would have inherited it from the team.
129129
resource.TestCheckResourceAttr("ns1_apikey.it", "account_manage_account_settings", "true"),
130+
resource.TestCheckResourceAttr("ns1_apikey.it", "account_manage_ip_whitelist", "true"),
130131
),
131132
ExpectNonEmptyPlan: true,
132133
},
@@ -137,6 +138,7 @@ func TestAccAPIKey_permissions(t *testing.T) {
137138
testAccCheckAPIKeyName(&apiKey, name),
138139
// But if an apply is ran again, the permission will be removed.
139140
resource.TestCheckResourceAttr("ns1_apikey.it", "account_manage_account_settings", "false"),
141+
resource.TestCheckResourceAttr("ns1_apikey.it", "account_manage_ip_whitelist", "false"),
140142
),
141143
},
142144
},
@@ -246,6 +248,7 @@ func testAccAPIKeyPermissionsOnTeam(rString string) string {
246248
return fmt.Sprintf(`resource "ns1_team" "t" {
247249
name = "terraform acc test team %s"
248250
account_manage_account_settings = true
251+
account_manage_ip_whitelist = true
249252
}
250253
251254
resource "ns1_apikey" "it" {
@@ -261,6 +264,7 @@ func testAccAPIKeyPermissionsNoTeam(rString string) string {
261264
return fmt.Sprintf(`resource "ns1_team" "t" {
262265
name = "terraform acc test team %s"
263266
account_manage_account_settings = true
267+
account_manage_ip_whitelist = true
264268
}
265269
266270
resource "ns1_apikey" "it" {

ns1/resource_user_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ func TestAccUser_permissions(t *testing.T) {
108108
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
109109
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
110110
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
111+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
111112
),
112113
},
113114
{
@@ -118,6 +119,7 @@ func TestAccUser_permissions(t *testing.T) {
118119
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
119120
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
120121
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
122+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
121123
),
122124
},
123125
{
@@ -129,6 +131,7 @@ func TestAccUser_permissions(t *testing.T) {
129131
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
130132
// The user should still have this permission, it would have inherited it from the team.
131133
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
134+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
132135
),
133136
ExpectNonEmptyPlan: true,
134137
},
@@ -141,6 +144,7 @@ func TestAccUser_permissions(t *testing.T) {
141144
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
142145
// But if an apply is ran again, the permission will be removed.
143146
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
147+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
144148
),
145149
},
146150
},
@@ -166,6 +170,7 @@ func TestAccUser_permissions_empty_team(t *testing.T) {
166170
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
167171
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
168172
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
173+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
169174
),
170175
},
171176
// Strange Terraform behavior causes explicitly settings a users team to []
@@ -178,6 +183,7 @@ func TestAccUser_permissions_empty_team(t *testing.T) {
178183
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
179184
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
180185
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
186+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
181187
),
182188
ExpectNonEmptyPlan: true,
183189
},
@@ -190,6 +196,7 @@ func TestAccUser_permissions_empty_team(t *testing.T) {
190196
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
191197
// But if an apply is ran again, the permission will be removed.
192198
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
199+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
193200
),
194201
},
195202
},
@@ -216,6 +223,7 @@ func TestAccUser_permissions_start_no_team(t *testing.T) {
216223
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
217224
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
218225
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
226+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
219227
),
220228
},
221229
{
@@ -226,6 +234,7 @@ func TestAccUser_permissions_start_no_team(t *testing.T) {
226234
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
227235
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
228236
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
237+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
229238
),
230239
},
231240
{
@@ -237,6 +246,7 @@ func TestAccUser_permissions_start_no_team(t *testing.T) {
237246
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
238247
// The user should still have this permission, it would have inherited it from the team.
239248
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
249+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
240250
),
241251
ExpectNonEmptyPlan: true,
242252
},
@@ -249,6 +259,7 @@ func TestAccUser_permissions_start_no_team(t *testing.T) {
249259
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
250260
// But if an apply is ran again, the permission will be removed.
251261
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
262+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
252263
),
253264
},
254265
},
@@ -275,6 +286,7 @@ func TestAccUser_permissions_multiple_teams(t *testing.T) {
275286
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
276287
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
277288
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
289+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
278290
),
279291
},
280292
{
@@ -286,6 +298,7 @@ func TestAccUser_permissions_multiple_teams(t *testing.T) {
286298
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
287299
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
288300
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "true"),
301+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
289302
),
290303
},
291304
{
@@ -297,6 +310,7 @@ func TestAccUser_permissions_multiple_teams(t *testing.T) {
297310
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
298311
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
299312
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "false"),
313+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
300314
),
301315
},
302316
{
@@ -309,6 +323,7 @@ func TestAccUser_permissions_multiple_teams(t *testing.T) {
309323
// The user should still have this permission, it would have inherited it from the team.
310324
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
311325
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "false"),
326+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
312327
),
313328
ExpectNonEmptyPlan: true,
314329
},
@@ -322,6 +337,7 @@ func TestAccUser_permissions_multiple_teams(t *testing.T) {
322337
// But if an apply is ran again, the permission will be removed.
323338
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
324339
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "false"),
340+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
325341
),
326342
},
327343
},
@@ -348,6 +364,7 @@ func TestAccUser_permissions_multiple_teams_start_no_team(t *testing.T) {
348364
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
349365
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
350366
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
367+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
351368
),
352369
},
353370
{
@@ -359,6 +376,7 @@ func TestAccUser_permissions_multiple_teams_start_no_team(t *testing.T) {
359376
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
360377
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
361378
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "true"),
379+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
362380
),
363381
},
364382
{
@@ -370,6 +388,7 @@ func TestAccUser_permissions_multiple_teams_start_no_team(t *testing.T) {
370388
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
371389
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
372390
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "false"),
391+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
373392
),
374393
},
375394
{
@@ -382,6 +401,7 @@ func TestAccUser_permissions_multiple_teams_start_no_team(t *testing.T) {
382401
// The user should still have this permission, it would have inherited it from the team.
383402
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "true"),
384403
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "false"),
404+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "false"),
385405
),
386406
ExpectNonEmptyPlan: true,
387407
},
@@ -395,6 +415,7 @@ func TestAccUser_permissions_multiple_teams_start_no_team(t *testing.T) {
395415
// But if an apply is ran again, the permission will be removed.
396416
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_account_settings", "false"),
397417
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_apikeys", "false"),
418+
resource.TestCheckResourceAttr("ns1_user.u", "account_manage_ip_whitelist", "true"),
398419
),
399420
},
400421
},
@@ -613,6 +634,7 @@ func testAccUserPermissionsOnTeam(rString string) string {
613634
return fmt.Sprintf(`resource "ns1_team" "t" {
614635
name = "terraform acc test team %s"
615636
account_manage_account_settings = true
637+
account_manage_ip_whitelist = false
616638
}
617639
618640
resource "ns1_user" "u" {
@@ -643,6 +665,8 @@ resource "ns1_user" "u" {
643665
notify = {
644666
billing = false
645667
}
668+
669+
account_manage_ip_whitelist = true
646670
}
647671
`, rString, rString, rString)
648672
}
@@ -677,6 +701,7 @@ func testAccUserPermissionsOnTwoTeam(rString string) string {
677701
resource "ns1_team" "t2" {
678702
name = "terraform acc test team %s-2"
679703
account_manage_apikeys = true
704+
account_manage_ip_whitelist = true
680705
}
681706
682707
resource "ns1_user" "u" {
@@ -689,6 +714,8 @@ resource "ns1_user" "u" {
689714
notify = {
690715
billing = false
691716
}
717+
718+
account_manage_ip_whitelist = true
692719
}
693720
`, rString, rString, rString, rString)
694721
}

vendor/gopkg.in/ns1/ns1-go.v2/rest/client.go

Lines changed: 11 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)