Skip to content

Commit 13a8ee8

Browse files
author
Nicholas M. Iodice
authored
Added data source for project (#284)
* Added data source for project * Simplified
1 parent 468b6c1 commit 13a8ee8

File tree

302 files changed

+32141
-87314
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

302 files changed

+32141
-87314
lines changed

azuredevops/data_project.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package azuredevops
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
5+
)
6+
7+
func dataProject() *schema.Resource {
8+
baseSchema := resourceProject()
9+
return &schema.Resource{
10+
Read: baseSchema.Read,
11+
Schema: baseSchema.Schema,
12+
}
13+
}

azuredevops/data_project_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// +build all core resource_project
2+
3+
package azuredevops
4+
5+
// The tests in this file use the mock clients in mock_client.go to mock out
6+
// the Azure DevOps client operations.
7+
8+
import (
9+
"fmt"
10+
"testing"
11+
12+
"github.com/hashicorp/terraform-plugin-sdk/helper/acctest"
13+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
14+
"github.com/microsoft/terraform-provider-azuredevops/azuredevops/utils/testhelper"
15+
)
16+
17+
/**
18+
* Begin acceptance tests
19+
*/
20+
21+
// Verifies that the following sequence of events occurrs without error:
22+
// (1) TF can create a project
23+
// (2) A data source is added to the configuration, and that data source can find the created project
24+
func TestAccAzureDevOpsProject_DataSource(t *testing.T) {
25+
projectName := testhelper.TestAccResourcePrefix + acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum)
26+
tfConfigStep1 := testhelper.TestAccProjectResource(projectName)
27+
tfConfigStep2 := fmt.Sprintf("%s\n%s", tfConfigStep1, testhelper.TestAccProjectDataSource(projectName))
28+
29+
tfNode := "data.azuredevops_project.project"
30+
resource.Test(t, resource.TestCase{
31+
PreCheck: func() { testhelper.TestAccPreCheck(t, nil) },
32+
Providers: testAccProviders,
33+
Steps: []resource.TestStep{
34+
{
35+
Config: tfConfigStep1,
36+
}, {
37+
Config: tfConfigStep2,
38+
Check: resource.ComposeTestCheckFunc(
39+
resource.TestCheckResourceAttrSet(tfNode, "process_template_id"),
40+
resource.TestCheckResourceAttr(tfNode, "project_name", projectName),
41+
resource.TestCheckResourceAttr(tfNode, "version_control", "Git"),
42+
resource.TestCheckResourceAttr(tfNode, "visibility", "private"),
43+
resource.TestCheckResourceAttr(tfNode, "work_item_template", "Agile"),
44+
),
45+
},
46+
},
47+
})
48+
}
49+
50+
func init() {
51+
InitProvider()
52+
}

azuredevops/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ func Provider() *schema.Provider {
2424
},
2525
DataSourcesMap: map[string]*schema.Resource{
2626
"azuredevops_group": dataGroup(),
27+
"azuredevops_project": dataProject(),
2728
"azuredevops_projects": dataProjects(),
2829
"azuredevops_git_repositories": dataGitRepositories(),
2930
"azuredevops_users": dataUsers(),

azuredevops/provider_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ func TestAzureDevOpsProvider_HasChildResources(t *testing.T) {
4141
func TestAzureDevOpsProvider_HasChildDataSources(t *testing.T) {
4242
expectedDataSources := []string{
4343
"azuredevops_group",
44+
"azuredevops_project",
4445
"azuredevops_projects",
4546
"azuredevops_git_repositories",
4647
"azuredevops_users",

azuredevops/utils/testhelper/hcl.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ resource "azuredevops_project" "project" {
6363
}`, projectName, projectName)
6464
}
6565

66+
// TestAccProjectDataSource HCL describing a data source for an AzDO project
67+
func TestAccProjectDataSource(projectName string) string {
68+
return fmt.Sprintf(`
69+
data "azuredevops_project" "project" {
70+
project_name = "%s"
71+
}`, projectName)
72+
}
73+
6674
// TestAccUserEntitlementResource HCL describing an AzDO UserEntitlement
6775
func TestAccUserEntitlementResource(principalName string) string {
6876
return fmt.Sprintf(`

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ require (
1212
github.com/microsoft/azure-devops-go-api/azuredevops v0.0.0-20200327121006-543de4815ec2
1313
github.com/stretchr/testify v1.3.0
1414
github.com/yuin/goldmark v1.1.30 // indirect
15-
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904
15+
golang.org/x/crypto v0.0.0-20200427165652-729f1e841bcc
1616
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
17-
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect
17+
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 // indirect
1818
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a // indirect
19-
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 // indirect
20-
golang.org/x/tools v0.0.0-20200416193827-92fa1ff4b140 // indirect
19+
golang.org/x/sys v0.0.0-20200428200454-593003d681fa // indirect
20+
golang.org/x/tools v0.0.0-20200428211048-dbf5ce1eac26 // indirect
2121
)

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq
371371
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
372372
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904 h1:bXoxMPcSLOq08zI3/c5dEBT6lE4eh+jOh886GHrn6V8=
373373
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
374+
golang.org/x/crypto v0.0.0-20200427165652-729f1e841bcc h1:ZGI/fILM2+ueot/UixBSoj9188jCAxVHEZEGhqq67I4=
375+
golang.org/x/crypto v0.0.0-20200427165652-729f1e841bcc/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
374376
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
375377
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
376378
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
@@ -405,6 +407,8 @@ golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLL
405407
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
406408
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
407409
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
410+
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U=
411+
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
408412
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
409413
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
410414
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
@@ -438,6 +442,8 @@ golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7w
438442
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
439443
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 h1:opSr2sbRXk5X5/givKrrKj9HXxFpW2sdCiP8MJSKLQY=
440444
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
445+
golang.org/x/sys v0.0.0-20200428200454-593003d681fa h1:yMbJOvnfYkO1dSAviTu/ZguZWLBTXx4xE3LYrxUCCiA=
446+
golang.org/x/sys v0.0.0-20200428200454-593003d681fa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
441447
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
442448
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
443449
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -461,6 +467,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
461467
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
462468
golang.org/x/tools v0.0.0-20200416193827-92fa1ff4b140 h1:buvF8x7tyUENNZrajuLdp3tKwtHybdAys6PO9aHp34k=
463469
golang.org/x/tools v0.0.0-20200416193827-92fa1ff4b140/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
470+
golang.org/x/tools v0.0.0-20200428211048-dbf5ce1eac26 h1:PXH5G+EZUe1fzHTPVU+cIk0aOIa4WZWwLenElj1Ysu0=
471+
golang.org/x/tools v0.0.0-20200428211048-dbf5ce1eac26/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
464472
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
465473
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
466474
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

0 commit comments

Comments
 (0)