Skip to content

Commit

Permalink
Add support for schema extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
MarkDordoy authored and manicminer committed Jun 24, 2021
1 parent 262ea8b commit ecd7e6f
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 7 deletions.
12 changes: 5 additions & 7 deletions msgraph/schema_extensions.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import (
"fmt"
"io/ioutil"
"net/http"
"net/url"

"github.com/manicminer/hamilton/odata"
)

// SchemaExtensionsClient performs operations on Schema Extensions.
Expand All @@ -22,16 +23,13 @@ func NewSchemaExtensionsClient(tenantId string) *SchemaExtensionsClient {
}

// List returns a list of Schema Extensions, optionally filtered using OData.
func (c *SchemaExtensionsClient) List(ctx context.Context, filter string) (*[]SchemaExtension, int, error) {
params := url.Values{}
if filter != "" {
params.Add("$filter", filter)
}
func (c *SchemaExtensionsClient) List(ctx context.Context, query odata.Query) (*[]SchemaExtension, int, error) {
resp, status, _, err := c.BaseClient.Get(ctx, GetHttpRequestInput{
DisablePaging: query.Top > 0,
ValidStatusCodes: []int{http.StatusOK},
Uri: Uri{
Entity: "/schemaExtensions",
Params: params,
Params: query.Values(),
HasTenantId: true,
},
})
Expand Down
106 changes: 106 additions & 0 deletions msgraph/schema_extensions_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package msgraph_test

import (
"fmt"
"testing"

"github.com/manicminer/hamilton/auth"
"github.com/manicminer/hamilton/internal/test"
"github.com/manicminer/hamilton/internal/utils"
"github.com/manicminer/hamilton/msgraph"
)

type SchemaExtensionsClientTest struct {
connection *test.Connection
client *msgraph.SchemaExtensionsClient
randomstring string
}

func TestSchemaExtensionsClient(t *testing.T) {
c := SchemaExtensionsClientTest{
connection: test.NewConnection(auth.MsGraph, auth.TokenVersion2),
randomstring: test.RandomString(),
}

property1 := msgraph.ExtensionSchemaProperty{
Name: utils.StringPtr("property1"),
Type: msgraph.ExtensionSchemaPropertyDataString,
}

property2 := msgraph.ExtensionSchemaProperty{
Name: utils.StringPtr("property2"),
Type: msgraph.ExtensionSchemaPropertyDataBoolean,
}

targetTypes := []msgraph.ExtensionSchemaTargetType{msgraph.ExtensionSchemaTargetTypeUser}
schemaExtension := msgraph.SchemaExtension{
Description: utils.StringPtr("This is a description"),
ID: utils.StringPtr(fmt.Sprintf("schemaid%s", c.randomstring)),
TargetTypes: &targetTypes,
Properties: &[]msgraph.ExtensionSchemaProperty{property1},
}

c.client = msgraph.NewSchemaExtensionsClient(c.connection.AuthConfig.TenantID)
c.client.BaseClient.Authorizer = c.connection.Authorizer
schema := testSchemaExtensionsClient_Create(t, c, schemaExtension)
testSchemaExtensionsClient_Get(t, c, *schema.ID)

updateExtension := msgraph.SchemaExtension{
Properties: &[]msgraph.ExtensionSchemaProperty{property1, property2},
ID: schema.ID,
}

testSchemaExtensionsClient_Update(t, c, updateExtension)
testSchemaExtensionsClient_Delete(t, c, *schema.ID)
}

func testSchemaExtensionsClient_Create(t *testing.T, c SchemaExtensionsClientTest, s msgraph.SchemaExtension) (schema *msgraph.SchemaExtension) {
schema, status, err := c.client.Create(c.connection.Context, s)
if err != nil {
t.Fatalf("ApplicationsClient.Create(): %v", err)
}
if status < 200 || status >= 300 {
t.Fatalf("SchemaExtensionsClient.Create(): invalid status: %d", status)
}
if schema == nil {
t.Fatal("SchemaExtensionsClient.Create(): schema was nil")
}
if schema.ID == nil {
t.Fatal("SchemaExtensionsClient.Create(): schema.ID was nil")
}
return
}

func testSchemaExtensionsClient_Get(t *testing.T, c SchemaExtensionsClientTest, id string) (schema *msgraph.SchemaExtension) {
schema, status, err := c.client.Get(c.connection.Context, id)
if err != nil {
t.Fatalf("SchemaExtensionsClient.Get(): %v", err)
}
if status < 200 || status >= 300 {
t.Fatalf("SchemaExtensionsClient.Get(): invalid status: %d", status)
}
if schema == nil {
t.Fatal("SchemaExtensionsClient.Get(): schema was nil")
}
return
}

func testSchemaExtensionsClient_Update(t *testing.T, c SchemaExtensionsClientTest, s msgraph.SchemaExtension) {
status, err := c.client.Update(c.connection.Context, s)
if err != nil {
t.Fatalf("SchemaExtensionsClient.Update(): %v", err)
}
if status < 200 || status >= 300 {
t.Fatalf("SchemaExtensionsClient.Update(): invalid status: %d", status)
}
}

func testSchemaExtensionsClient_Delete(t *testing.T, c SchemaExtensionsClientTest, id string) {
status, err := c.client.Delete(c.connection.Context, id)
if err != nil {
t.Fatalf("SchemaExtensionsClient.Delete(): %v", err)
}
if status < 200 || status >= 300 {
t.Fatalf("SchemaExtensionsClient.Delete(): invalid status: %d", status)
}
}

0 comments on commit ecd7e6f

Please sign in to comment.