Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EntitlementManagement - Add Types, move catalogs and packages to 1.0 Stable #133

Merged
merged 11 commits into from
Jan 17, 2022
8 changes: 7 additions & 1 deletion msgraph/accesspackage.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type AccessPackageClient struct {

func NewAccessPackageClient(tenantId string) *AccessPackageClient {
return &AccessPackageClient{
BaseClient: NewClient(VersionBeta, tenantId),
BaseClient: NewClient(Version10, tenantId),
}
}

Expand Down Expand Up @@ -83,6 +83,12 @@ func (c *AccessPackageClient) Create(ctx context.Context, accessPackage AccessPa
return nil, status, fmt.Errorf("json.Unmarshal(): %v", err)
}

if c.BaseClient.ApiVersion == Version10 {
newAccessPackage.Catalog = &AccessPackageCatalog{
ID: accessPackage.Catalog.ID,
} //Stable API doesn't return this
}

return &newAccessPackage, status, nil
}

Expand Down
13 changes: 7 additions & 6 deletions msgraph/accesspackage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ func TestAccessPackageClient(t *testing.T) {

// Create AP
accessPackage := testAccessPackageClient_Create(t, c, msgraph.AccessPackage{
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
CatalogId: accessPackageCatalog.ID,
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
IsRoleScopesVisible: utils.BoolPtr(false),
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
Catalog: &msgraph.AccessPackageCatalog{
ID: accessPackageCatalog.ID,
},
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
})

// Update test
Expand Down Expand Up @@ -111,7 +112,7 @@ func testapCatalog_Create(t *testing.T, c *test.Test) (accessPackageCatalog *msg
accessPackageCatalog, _, err := c.AccessPackageCatalogClient.Create(c.Context, msgraph.AccessPackageCatalog{
DisplayName: utils.StringPtr(fmt.Sprintf("test-catalog-%s", c.RandomString)),
CatalogType: msgraph.AccessPackageCatalogTypeUserManaged,
CatalogStatus: msgraph.AccessPackageCatalogStatusPublished,
State: msgraph.AccessPackageCatalogStatePublished,
Description: utils.StringPtr("Test Access Catalog"),
IsExternallyVisible: utils.BoolPtr(false),
})
Expand Down
114 changes: 105 additions & 9 deletions msgraph/accesspackageassignmentpolicy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package msgraph_test
import (
"fmt"
"testing"
"time"

"github.com/manicminer/hamilton/internal/test"
"github.com/manicminer/hamilton/internal/utils"
Expand All @@ -20,16 +21,48 @@ func TestAccessPackageAssignmentPolicyClient(t *testing.T) {
// Create AP
accessPackage := testAccessPackage_Create(t, c, accessPackageCatalog)

currentTimePlusDay := time.Now().AddDate(0, 0, 1)

// Create Assignment Policy
accessPackageAssignmentPolicy := testAccessPackageAssignmentPolicyClient_Create(t, c, msgraph.AccessPackageAssignmentPolicy{
AccessPackageId: accessPackage.ID,
DisplayName: utils.StringPtr(fmt.Sprintf("Test-AP-Policy-Assignment-%s", c.RandomString)),
Description: utils.StringPtr("Test AP Policy Assignment Description"),
AccessReviewSettings: &msgraph.AssignmentReviewSettings{
AccessReviewTimeoutBehavior: msgraph.AccessReviewTimeoutBehaviorTypeRemoveAccess,
IsEnabled: utils.BoolPtr(true),
StartDateTime: &currentTimePlusDay,
DurationInDays: utils.Int32Ptr(5),
RecurrenceType: msgraph.AccessReviewRecurranceTypeMonthly,
ReviewerType: msgraph.AccessReviewReviewerTypeSelf,
IsAccessRecommendationEnabled: utils.BoolPtr(true),
IsApprovalJustificationRequired: utils.BoolPtr(true),
// Reviewers: &[]msgraph.UserSet{
// {
// ODataType: utils.StringPtr(odata.TypeRequestorManager),
// IsBackup: utils.BoolPtr(false),
// ManagerLevel: utils.Int32Ptr(1),
// },
// {
// ODataType: utils.StringPtr(odata.TypeSingleUser),
// IsBackup: utils.BoolPtr(true),
// ID: utils.StringPtr(""),
// },
// },
},
DisplayName: utils.StringPtr(fmt.Sprintf("Test-AP-Policy-Assignment-%s", c.RandomString)),
Description: utils.StringPtr("Test AP Policy Assignment Description"),
//AccessReviewSettings: utils.BoolPtr()
RequestorSettings: &msgraph.RequestorSettings{
//ScopeType: msgraph.RequestorSettingsScopeTypeSpecificDirectorySubjects,
ScopeType: msgraph.RequestorSettingsScopeTypeNoSubjects,
AcceptRequests: utils.BoolPtr(true),
//AllowedRequestors: &msgraph.UserSet{}
// AllowedRequestors: &[]msgraph.UserSet{
// {
// ODataType: utils.StringPtr(odata.TypeGroupMembers),
// IsBackup: utils.BoolPtr(false),
// ID: utils.StringPtr("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
// Description: utils.StringPtr("Sample users group"),
// },
// },
},
RequestApprovalSettings: &msgraph.ApprovalSettings{
IsApprovalRequired: utils.BoolPtr(false),
Expand All @@ -38,6 +71,68 @@ func TestAccessPackageAssignmentPolicyClient(t *testing.T) {
ApprovalMode: msgraph.ApprovalModeNoApproval,
//ApprovalStages: &msgraph.ApprovalStages{},
},
Questions: &[]msgraph.AccessPackageQuestion{
{
ODataType: utils.StringPtr(odata.TypeAccessPackageTextInputQuestion),
IsRequired: utils.BoolPtr(false),
Sequence: utils.Int32Ptr(1),
Text: &msgraph.AccessPackageLocalizedContent{
DefaultText: utils.StringPtr("Test"),
LocalizedTexts: &[]msgraph.AccessPackageLocalizedTexts{
{
Text: utils.StringPtr("abc"),
LanguageCode: utils.StringPtr("en"),
},
},
},
},
{
ODataType: utils.StringPtr(odata.TypeAccessPackageMultipleChoiceQuestion),
IsRequired: utils.BoolPtr(false),
Sequence: utils.Int32Ptr(2),
Text: &msgraph.AccessPackageLocalizedContent{
DefaultText: utils.StringPtr("Test"),
LocalizedTexts: &[]msgraph.AccessPackageLocalizedTexts{
{
Text: utils.StringPtr("abc 2"),
LanguageCode: utils.StringPtr("gb"),
},
},
},
Choices: &[]msgraph.AccessPackageMultipleChoiceQuestions{
// Choice 1 containing a list of languages
{
ActualValue: utils.StringPtr("CHOICE1"),
DisplayValue: &msgraph.AccessPackageLocalizedContent{
DefaultText: utils.StringPtr("One"),
LocalizedTexts: &[]msgraph.AccessPackageLocalizedTexts{
{
Text: utils.StringPtr("Choice 1"),
LanguageCode: utils.StringPtr("gb"),
},
},
},
},
// Choice 2 containing a list of languages, etc.
{
ActualValue: utils.StringPtr("CHOICE2"),
DisplayValue: &msgraph.AccessPackageLocalizedContent{
DefaultText: utils.StringPtr("Two"),
LocalizedTexts: &[]msgraph.AccessPackageLocalizedTexts{
{
Text: utils.StringPtr("Choice 2"),
LanguageCode: utils.StringPtr("gb"),
},
{
Text: utils.StringPtr("Zwei"),
LanguageCode: utils.StringPtr("de"),
},
},
},
},
},
},
},
})

testAccessPackageAssignmentPolicyClient_Get(t, c, *accessPackageAssignmentPolicy.ID)
Expand Down Expand Up @@ -128,11 +223,12 @@ func testAccessPackageAssignmentPolicyClient_Delete(t *testing.T, c *test.Test,

func testAccessPackage_Create(t *testing.T, c *test.Test, accessPackageCatalog *msgraph.AccessPackageCatalog) (accessPackage *msgraph.AccessPackage) {
accessPackage, _, err := c.AccessPackageClient.Create(c.Context, msgraph.AccessPackage{
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
CatalogId: accessPackageCatalog.ID,
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
IsRoleScopesVisible: utils.BoolPtr(false),
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
Catalog: &msgraph.AccessPackageCatalog{
ID: accessPackageCatalog.ID,
},
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
})

if err != nil {
Expand All @@ -154,7 +250,7 @@ func testAccessPackageCatalog_Create(t *testing.T, c *test.Test) (accessPackageC
accessPackageCatalog, _, err := c.AccessPackageCatalogClient.Create(c.Context, msgraph.AccessPackageCatalog{
DisplayName: utils.StringPtr(fmt.Sprintf("test-catalog-%s", c.RandomString)),
CatalogType: msgraph.AccessPackageCatalogTypeUserManaged,
CatalogStatus: msgraph.AccessPackageCatalogStatusPublished,
State: msgraph.AccessPackageCatalogStatePublished,
Description: utils.StringPtr("Test Access Catalog"),
IsExternallyVisible: utils.BoolPtr(false),
})
Expand Down
12 changes: 6 additions & 6 deletions msgraph/accesspackagecatalog.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type AccessPackageCatalogClient struct {

func NewAccessPackageCatalogClient(tenantId string) *AccessPackageCatalogClient {
return &AccessPackageCatalogClient{
BaseClient: NewClient(VersionBeta, tenantId),
BaseClient: NewClient(Version10, tenantId),
}
}

Expand All @@ -28,7 +28,7 @@ func (c *AccessPackageCatalogClient) List(ctx context.Context, query odata.Query
OData: query,
ValidStatusCodes: []int{http.StatusOK},
Uri: Uri{
Entity: "/identityGovernance/entitlementManagement/accessPackageCatalogs",
Entity: "/identityGovernance/entitlementManagement/catalogs",
HasTenantId: true,
},
})
Expand Down Expand Up @@ -64,7 +64,7 @@ func (c *AccessPackageCatalogClient) Create(ctx context.Context, accessPackageCa
Body: body,
ValidStatusCodes: []int{http.StatusCreated},
Uri: Uri{
Entity: "/identityGovernance/entitlementManagement/accessPackageCatalogs",
Entity: "/identityGovernance/entitlementManagement/catalogs",
HasTenantId: true,
},
})
Expand Down Expand Up @@ -93,7 +93,7 @@ func (c *AccessPackageCatalogClient) Get(ctx context.Context, id string, query o
OData: query,
ValidStatusCodes: []int{http.StatusOK},
Uri: Uri{
Entity: fmt.Sprintf("/identityGovernance/entitlementManagement/accessPackageCatalogs/%s", id),
Entity: fmt.Sprintf("/identityGovernance/entitlementManagement/catalogs/%s", id),
HasTenantId: true,
},
})
Expand Down Expand Up @@ -133,7 +133,7 @@ func (c *AccessPackageCatalogClient) Update(ctx context.Context, accessPackageCa
ConsistencyFailureFunc: RetryOn404ConsistencyFailureFunc,
ValidStatusCodes: []int{http.StatusNoContent},
Uri: Uri{
Entity: fmt.Sprintf("/identityGovernance/entitlementManagement/accessPackageCatalogs/%s", *accessPackageCatalog.ID),
Entity: fmt.Sprintf("/identityGovernance/entitlementManagement/catalogs/%s", *accessPackageCatalog.ID),
HasTenantId: true,
},
})
Expand All @@ -150,7 +150,7 @@ func (c *AccessPackageCatalogClient) Delete(ctx context.Context, id string) (int
ConsistencyFailureFunc: RetryOn404ConsistencyFailureFunc,
ValidStatusCodes: []int{http.StatusNoContent},
Uri: Uri{
Entity: fmt.Sprintf("/identityGovernance/entitlementManagement/accessPackageCatalogs/%s", id),
Entity: fmt.Sprintf("/identityGovernance/entitlementManagement/catalogs/%s", id),
HasTenantId: true,
},
})
Expand Down
2 changes: 1 addition & 1 deletion msgraph/accesspackagecatalog_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestAccessPackageCatalogClient(t *testing.T) {
accessPackageCatalog := testAccessPackageCatalogClient_Create(t, c, msgraph.AccessPackageCatalog{
DisplayName: utils.StringPtr(fmt.Sprintf("test-catalog-%s", c.RandomString)),
CatalogType: msgraph.AccessPackageCatalogTypeUserManaged,
CatalogStatus: msgraph.AccessPackageCatalogStatusPublished,
State: msgraph.AccessPackageCatalogStatePublished,
Description: utils.StringPtr("Test Access Catalog"),
IsExternallyVisible: utils.BoolPtr(false),
})
Expand Down
15 changes: 8 additions & 7 deletions msgraph/accesspackageresourcerequest_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,17 @@ func TestAccessPackageResourceRequestClient(t *testing.T) {

// Create access package
accessPackage := testAccessPackageResourceRequestAP_Create(t, c, msgraph.AccessPackage{
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
CatalogId: accessPackageCatalog.ID,
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
IsRoleScopesVisible: utils.BoolPtr(false),
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
Catalog: &msgraph.AccessPackageCatalog{
ID: accessPackageCatalog.ID,
},
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
})

// Create resource request and poll for ID
accessPackageResourceRequest := testAccessPackageResourceRequestClient_Create(t, c, msgraph.AccessPackageResourceRequest{
CatalogId: accessPackage.CatalogId,
CatalogId: accessPackage.Catalog.ID,
RequestType: utils.StringPtr("AdminAdd"),
AccessPackageResource: &msgraph.AccessPackageResource{
OriginId: aadGroup.ID,
Expand Down Expand Up @@ -145,7 +146,7 @@ func testAccessPackageResourceRequestCatalog_Create(t *testing.T, c *test.Test)
accessPackageCatalog, _, err := c.AccessPackageCatalogClient.Create(c.Context, msgraph.AccessPackageCatalog{
DisplayName: utils.StringPtr(fmt.Sprintf("test-catalog-%s", c.RandomString)),
CatalogType: msgraph.AccessPackageCatalogTypeUserManaged,
CatalogStatus: msgraph.AccessPackageCatalogStatusPublished,
State: msgraph.AccessPackageCatalogStatePublished,
Description: utils.StringPtr("Test Access Catalog"),
IsExternallyVisible: utils.BoolPtr(false),
})
Expand Down
15 changes: 8 additions & 7 deletions msgraph/accesspackageresourcerolescope_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,17 @@ func TestAccessPackageResourceRoleScopeClient(t *testing.T) {

// Create access package
accessPackage := testAccessPackageResourceRoleScopeAP_Create(t, c, msgraph.AccessPackage{
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
CatalogId: accessPackageCatalog.ID,
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
IsRoleScopesVisible: utils.BoolPtr(false),
DisplayName: utils.StringPtr(fmt.Sprintf("test-accesspackage-%s", c.RandomString)),
Catalog: &msgraph.AccessPackageCatalog{
ID: accessPackageCatalog.ID,
},
Description: utils.StringPtr("Test Access Package"),
IsHidden: utils.BoolPtr(false),
})

// Create Resource Request and poll for ID
accessPackageResourceRequest := testAccessPackageResourceRoleScopeResourceRequest_Create(t, c, msgraph.AccessPackageResourceRequest{
CatalogId: accessPackage.CatalogId,
CatalogId: accessPackage.Catalog.ID,
RequestType: utils.StringPtr("AdminAdd"),
AccessPackageResource: &msgraph.AccessPackageResource{
OriginId: aadGroup.ID,
Expand Down Expand Up @@ -210,7 +211,7 @@ func testAccessPackageResourceRoleScopeCatalog_Create(t *testing.T, c *test.Test
accessPackageCatalog, _, err := c.AccessPackageCatalogClient.Create(c.Context, msgraph.AccessPackageCatalog{
DisplayName: utils.StringPtr(fmt.Sprintf("test-catalog-%s", c.RandomString)),
CatalogType: msgraph.AccessPackageCatalogTypeUserManaged,
CatalogStatus: msgraph.AccessPackageCatalogStatusPublished,
State: msgraph.AccessPackageCatalogStatePublished,
Description: utils.StringPtr("Test Access Catalog"),
IsExternallyVisible: utils.BoolPtr(false),
})
Expand Down
Loading