Skip to content

Commit 7c0a72d

Browse files
author
Thiago Uehara
committed
Added User and Team import tests
1 parent 1e8204f commit 7c0a72d

3 files changed

Lines changed: 82 additions & 5 deletions

File tree

ns1/resource_team_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,48 @@ func TestAccTeam_ManualDelete(t *testing.T) {
112112
})
113113
}
114114

115+
// Import user test
116+
func TestAccTeam_import_test(t *testing.T) {
117+
var team account.Team
118+
n := fmt.Sprintf("terraform test team %s", acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum))
119+
ignored_fields := []string{"dhcp_manage_dhcp", "dhcp_view_dhcp", "ipam_manage_ipam", "ipam_view_ipam", "dns_records"}
120+
121+
resource.Test(t, resource.TestCase{
122+
PreCheck: func() { testAccPreCheck(t) },
123+
Providers: testAccProviders,
124+
CheckDestroy: testAccCheckTeamDestroy,
125+
Steps: []resource.TestStep{
126+
{
127+
Config: fmt.Sprintf(testAccTeamBasic, n),
128+
Check: resource.ComposeTestCheckFunc(
129+
testAccCheckTeamExists("ns1_team.foobar", &team),
130+
testAccCheckTeamName(&team, n),
131+
testAccCheckTeamDNSPermission(&team, "view_zones", true),
132+
testAccCheckTeamDNSPermission(&team, "zones_allow_by_default", true),
133+
testAccCheckTeamDNSPermissionZones(&team, "zones_allow", []string{"mytest.zone"}),
134+
testAccCheckTeamDNSPermissionZones(&team, "zones_deny", []string{"myother.zone"}),
135+
testAccCheckTeamDNSPermissionRecords(&team, "dns_records_allow", []account.PermissionsRecord{
136+
{Domain: "my.ns1.com", Subdomains: false, Zone: "ns1.com", RecordType: "A"}}),
137+
testAccCheckTeamDNSPermissionRecords(&team, "dns_records_deny", []account.PermissionsRecord{
138+
{Domain: "my.test.com", Subdomains: true, Zone: "test.com", RecordType: "A"}}),
139+
testAccCheckTeamDataPermission(&team, "manage_datasources", true),
140+
testAccCheckTeamIPWhitelists(&team, []account.IPWhitelist{
141+
{Name: "whitelist-1", Values: []string{"1.1.1.1", "2.2.2.2"}},
142+
{Name: "whitelist-2", Values: []string{"3.3.3.3", "4.4.4.4"}},
143+
}),
144+
),
145+
},
146+
{
147+
ResourceName: "ns1_team.foobar",
148+
ImportState: true,
149+
ImportStateVerify: true,
150+
// Ignoring some fields because of how the dns_records work right now
151+
ImportStateVerifyIgnore: ignored_fields,
152+
},
153+
},
154+
})
155+
}
156+
115157
func testAccCheckTeamExists(n string, team *account.Team) resource.TestCheckFunc {
116158
return func(s *terraform.State) error {
117159
rs, ok := s.RootModule().Resources[n]

ns1/resource_user.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func userResource() *schema.Resource {
7373

7474
func userToResourceData(d *schema.ResourceData, u *account.User) error {
7575
d.SetId(u.Username)
76+
d.Set("username", u.Username)
7677
d.Set("name", u.Name)
7778
d.Set("email", u.Email)
7879
d.Set("teams", u.TeamIDs)

ns1/resource_user_test.go

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,45 @@ func TestAccUser_permissions_multiple_teams_start_no_team(t *testing.T) {
435435
})
436436
}
437437

438+
// Import user test
439+
func TestAccUser_import_test(t *testing.T) {
440+
var user account.User
441+
rString := acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum)
442+
name := fmt.Sprintf("terraform acc test user %s", rString)
443+
username := fmt.Sprintf("tf_acc_test_user_%s", rString)
444+
ignored_fields := []string{"dhcp_manage_dhcp", "dhcp_view_dhcp", "ipam_manage_ipam", "ipam_view_ipam"}
445+
446+
resource.Test(t, resource.TestCase{
447+
PreCheck: func() { testAccPreCheck(t) },
448+
Providers: testAccProviders,
449+
CheckDestroy: testAccCheckUserDestroy,
450+
Steps: []resource.TestStep{
451+
{
452+
Config: testAccUserBasic(rString),
453+
Check: resource.ComposeTestCheckFunc(
454+
testAccCheckUserExists("ns1_user.u", &user),
455+
resource.TestCheckResourceAttr("ns1_user.u", "email", "tf_acc_test_ns1@hashicorp.com"),
456+
resource.TestCheckResourceAttr("ns1_user.u", "name", name),
457+
resource.TestCheckResourceAttr("ns1_user.u", "teams.#", "1"),
458+
resource.TestCheckResourceAttr("ns1_user.u", "notify.%", "1"),
459+
resource.TestCheckResourceAttr("ns1_user.u", "notify.billing", "true"),
460+
resource.TestCheckResourceAttr("ns1_user.u", "username", username),
461+
testAccCheckUserIPWhitelists(&user, []string{"1.1.1.1", "2.2.2.2"}),
462+
resource.TestCheckResourceAttr("ns1_user.u", "ip_whitelist_strict", "true"),
463+
),
464+
},
465+
{
466+
ResourceName: "ns1_user.u",
467+
ImportState: true,
468+
ImportStateId: username,
469+
ImportStateVerify: true,
470+
// Ignoring some fields because of how the permissions work right now
471+
ImportStateVerifyIgnore: ignored_fields,
472+
},
473+
},
474+
})
475+
}
476+
438477
// Case when a user is on a team and that team updates it's permissions.
439478
// This test is currently failing, as this is not implemented yet - this doesn't
440479
// actually cause any issues because it's just Terraforms state that doesn't have the
@@ -516,11 +555,6 @@ func TestValidateUsername(t *testing.T) {
516555
"valid_us3r@example.com",
517556
0,
518557
},
519-
{
520-
"invalid - dash",
521-
"inv4lid-user",
522-
1,
523-
},
524558
{
525559
"invalid - punctuation",
526560
"inv@l!d_us3r",

0 commit comments

Comments
 (0)