diff --git a/go.mod b/go.mod index 97156cae1..9e9c42336 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/PuerkitoBio/rehttp v1.4.0 github.com/atotto/clipboard v0.1.4 - github.com/auth0/go-auth0 v1.30.0 + github.com/auth0/go-auth0 v1.31.0 github.com/briandowns/spinner v1.23.2 github.com/charmbracelet/glamour v0.10.0 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e diff --git a/go.sum b/go.sum index 0baf1d0e0..e5cb573c6 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/auth0/go-auth0 v1.30.0 h1:LZUWkvhyvaqzRYjP+mywc3141cP7bI6EsjaUX0t+mcw= -github.com/auth0/go-auth0 v1.30.0/go.mod h1:32sQB1uAn+99fJo6N819EniKq8h785p0ag0lMWhiTaE= +github.com/auth0/go-auth0 v1.31.0 h1:F0OMq6yRus8vCsrd1VF6zhGAWEg+ZSjRQexKK1cxqUQ= +github.com/auth0/go-auth0 v1.31.0/go.mod h1:32sQB1uAn+99fJo6N819EniKq8h785p0ag0lMWhiTaE= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0 h1:0NmehRCgyk5rljDQLKUO+cRJCnduDyn11+zGZIc9Z48= github.com/aybabtme/iocontrol v0.0.0-20150809002002-ad15bcfc95a0/go.mod h1:6L7zgvqo0idzI7IO8de6ZC051AfXb5ipkIJ7bIA2tGA= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= diff --git a/internal/auth0/mock/organization_mock.go b/internal/auth0/mock/organization_mock.go index f937e3062..58b1df7a1 100644 --- a/internal/auth0/mock/organization_mock.go +++ b/internal/auth0/mock/organization_mock.go @@ -74,6 +74,25 @@ func (mr *MockOrganizationAPIMockRecorder) Create(ctx, o interface{}, opts ...in return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockOrganizationAPI)(nil).Create), varargs...) } +// CreateDiscoveryDomain mocks base method. +func (m *MockOrganizationAPI) CreateDiscoveryDomain(ctx context.Context, id string, d *management.OrganizationDiscoveryDomain, opts ...management.RequestOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, id, d} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CreateDiscoveryDomain", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// CreateDiscoveryDomain indicates an expected call of CreateDiscoveryDomain. +func (mr *MockOrganizationAPIMockRecorder) CreateDiscoveryDomain(ctx, id, d interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, id, d}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateDiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).CreateDiscoveryDomain), varargs...) +} + // Delete mocks base method. func (m *MockOrganizationAPI) Delete(ctx context.Context, id string, opts ...management.RequestOption) error { m.ctrl.T.Helper() @@ -93,6 +112,65 @@ func (mr *MockOrganizationAPIMockRecorder) Delete(ctx, id interface{}, opts ...i return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockOrganizationAPI)(nil).Delete), varargs...) } +// DeleteDiscoveryDomain mocks base method. +func (m *MockOrganizationAPI) DeleteDiscoveryDomain(ctx context.Context, id, domainID string, opts ...management.RequestOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, id, domainID} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteDiscoveryDomain", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// DeleteDiscoveryDomain indicates an expected call of DeleteDiscoveryDomain. +func (mr *MockOrganizationAPIMockRecorder) DeleteDiscoveryDomain(ctx, id, domainID interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, id, domainID}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteDiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).DeleteDiscoveryDomain), varargs...) +} + +// DiscoveryDomain mocks base method. +func (m *MockOrganizationAPI) DiscoveryDomain(ctx context.Context, id, domainID string, opts ...management.RequestOption) (*management.OrganizationDiscoveryDomain, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, id, domainID} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DiscoveryDomain", varargs...) + ret0, _ := ret[0].(*management.OrganizationDiscoveryDomain) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DiscoveryDomain indicates an expected call of DiscoveryDomain. +func (mr *MockOrganizationAPIMockRecorder) DiscoveryDomain(ctx, id, domainID interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, id, domainID}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).DiscoveryDomain), varargs...) +} + +// DiscoveryDomains mocks base method. +func (m *MockOrganizationAPI) DiscoveryDomains(ctx context.Context, id string, opts ...management.RequestOption) (*management.DiscoveryDomainList, error) { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, id} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DiscoveryDomains", varargs...) + ret0, _ := ret[0].(*management.DiscoveryDomainList) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DiscoveryDomains indicates an expected call of DiscoveryDomains. +func (mr *MockOrganizationAPIMockRecorder) DiscoveryDomains(ctx, id interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, id}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DiscoveryDomains", reflect.TypeOf((*MockOrganizationAPI)(nil).DiscoveryDomains), varargs...) +} + // List mocks base method. func (m *MockOrganizationAPI) List(ctx context.Context, opts ...management.RequestOption) (*management.OrganizationList, error) { m.ctrl.T.Helper() @@ -191,3 +269,22 @@ func (mr *MockOrganizationAPIMockRecorder) Update(ctx, id, o interface{}, opts . varargs := append([]interface{}{ctx, id, o}, opts...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockOrganizationAPI)(nil).Update), varargs...) } + +// UpdateDiscoveryDomain mocks base method. +func (m *MockOrganizationAPI) UpdateDiscoveryDomain(ctx context.Context, id, domainID string, d *management.OrganizationDiscoveryDomain, opts ...management.RequestOption) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx, id, domainID, d} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateDiscoveryDomain", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// UpdateDiscoveryDomain indicates an expected call of UpdateDiscoveryDomain. +func (mr *MockOrganizationAPIMockRecorder) UpdateDiscoveryDomain(ctx, id, domainID, d interface{}, opts ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx, id, domainID, d}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDiscoveryDomain", reflect.TypeOf((*MockOrganizationAPI)(nil).UpdateDiscoveryDomain), varargs...) +} diff --git a/internal/auth0/organization.go b/internal/auth0/organization.go index 4f634d8f7..9027c5ad2 100644 --- a/internal/auth0/organization.go +++ b/internal/auth0/organization.go @@ -48,4 +48,19 @@ type OrganizationAPI interface { // // See: https://auth0.com/docs/api/management/v2/#!/Organizations/get_enabled_connections Connections(ctx context.Context, id string, opts ...management.RequestOption) (c *management.OrganizationConnectionList, err error) + + // DiscoveryDomains retrieves the discovery domains for an organization. + DiscoveryDomains(ctx context.Context, id string, opts ...management.RequestOption) (d *management.DiscoveryDomainList, err error) + + // CreateDiscoveryDomain creates a discovery domain for an organization. + CreateDiscoveryDomain(ctx context.Context, id string, d *management.OrganizationDiscoveryDomain, opts ...management.RequestOption) (err error) + + // DiscoveryDomain retrieves a specific discovery domain for an organization. + DiscoveryDomain(ctx context.Context, id string, domainID string, opts ...management.RequestOption) (d *management.OrganizationDiscoveryDomain, err error) + + // DeleteDiscoveryDomain deletes a specific discovery domain from an organization. + DeleteDiscoveryDomain(ctx context.Context, id string, domainID string, opts ...management.RequestOption) (err error) + + // UpdateDiscoveryDomain updates a specific discovery domain for an organization. + UpdateDiscoveryDomain(ctx context.Context, id string, domainID string, d *management.OrganizationDiscoveryDomain, opts ...management.RequestOption) (err error) } diff --git a/internal/auth0/user.go b/internal/auth0/user.go index 78c7d2322..c7d0fe936 100644 --- a/internal/auth0/user.go +++ b/internal/auth0/user.go @@ -1,4 +1,4 @@ -//go:generate mockgen -source=user.go -destination=mock/user.go -package=mock +//go:generate mockgen -source=user.go -destination=mock/user_mock.go -package=mock package auth0 diff --git a/internal/cli/terraform.go b/internal/cli/terraform.go index c0f62e8b1..c6a769267 100644 --- a/internal/cli/terraform.go +++ b/internal/cli/terraform.go @@ -99,7 +99,7 @@ func (i *terraformInputs) parseResourceFetchers(api *auth0.API) ([]resourceDataF fetchers = append(fetchers, &guardianResourceFetcher{}) case "auth0_log_stream": fetchers = append(fetchers, &logStreamResourceFetcher{api}) - case "auth0_organization", "auth0_organization_connections": + case "auth0_organization", "auth0_organization_connections", "auth0_organization_discovery_domains": fetchers = append(fetchers, &organizationResourceFetcher{api}) case "auth0_network_acl": fetchers = append(fetchers, &networkACLResourceFetcher{api}) diff --git a/internal/cli/terraform_fetcher.go b/internal/cli/terraform_fetcher.go index cc84f601f..5dfc27524 100644 --- a/internal/cli/terraform_fetcher.go +++ b/internal/cli/terraform_fetcher.go @@ -476,6 +476,17 @@ func (f *organizationResourceFetcher) FetchData(ctx context.Context) (importData ImportID: organization.GetID(), }) } + + discoveryDomains, err := f.api.Organization.DiscoveryDomains(ctx, organization.GetID()) + if err != nil { + return data, err + } + if len(discoveryDomains.Domains) > 0 { + data = append(data, importDataItem{ + ResourceName: "auth0_organization_discovery_domains." + sanitizeResourceName(organization.GetName()), + ImportID: organization.GetID(), + }) + } } return data, nil diff --git a/internal/cli/terraform_fetcher_test.go b/internal/cli/terraform_fetcher_test.go index de38ca499..8e6e50f96 100644 --- a/internal/cli/terraform_fetcher_test.go +++ b/internal/cli/terraform_fetcher_test.go @@ -1477,6 +1477,19 @@ func TestOrganizationResourceFetcher_FetchData(t *testing.T) { nil, ) + orgAPI.EXPECT(). + DiscoveryDomains(gomock.Any(), gomock.Any()). + Return( + &management.DiscoveryDomainList{ + Domains: []*management.OrganizationDiscoveryDomain{ + { + Domain: auth0.String("example.com"), + }, + }, + }, + nil, + ).Times(4) + fetcher := organizationResourceFetcher{ api: &auth0.API{ Organization: orgAPI, @@ -1492,6 +1505,10 @@ func TestOrganizationResourceFetcher_FetchData(t *testing.T) { ResourceName: "auth0_organization_connections.organization_1", ImportID: "org_1", }, + { + ResourceName: "auth0_organization_discovery_domains.organization_1", + ImportID: "org_1", + }, { ResourceName: "auth0_organization.organization_2", ImportID: "org_2", @@ -1500,6 +1517,10 @@ func TestOrganizationResourceFetcher_FetchData(t *testing.T) { ResourceName: "auth0_organization_connections.organization_2", ImportID: "org_2", }, + { + ResourceName: "auth0_organization_discovery_domains.organization_2", + ImportID: "org_2", + }, { ResourceName: "auth0_organization.organization_3", ImportID: "org_3", @@ -1508,10 +1529,18 @@ func TestOrganizationResourceFetcher_FetchData(t *testing.T) { ResourceName: "auth0_organization_connections.organization_3", ImportID: "org_3", }, + { + ResourceName: "auth0_organization_discovery_domains.organization_3", + ImportID: "org_3", + }, { ResourceName: "auth0_organization.organization_4_no_connections", ImportID: "org_4", }, + { + ResourceName: "auth0_organization_discovery_domains.organization_4_no_connections", + ImportID: "org_4", + }, } data, err := fetcher.FetchData(context.Background())