Skip to content
This repository was archived by the owner on Mar 28, 2026. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

41 Commits

Repository files navigation

SCIM Tools

This repository/module contains various utility functions to make it easier to work with SCIM servers and clients.

! most packages are a wip

Fuzzer

Build on top of gofuzz.

varrefSchemaReferenceSchema// define the reference schema yourself or use unmarshal jsonresource:=New(refSchema).
// multi valued fields have one value.NumElements(1, 1).
// displayName and name.givenName can never be empty.NeverEmpty("displayName", "name.givenName").
// other fields are empty.EmptyChance(1).
// create fuzzed resource.Fuzz()
// OUTPUT: map[displayName:vWKdUsVprh name:map[givenName:ieVkQrrcKL] userName:RFlLpsMnBW]

Encoder

A simple encoder that converts structs to maps based on their tags.

Tags
  • multiValued (or mV)
    Makes the attribute multi valued.
typeNamestruct {
FirstNamestring`scim:"givenName"`LastNamestring`scim:"familyName"`
}
typeResourceStructstruct {
UserNamestringNameName
}
resourceStruct:=ResourceStruct{
UserName: "di-wu",
Name: Name{
FirstName: "Quint", LastName: "Daenen",
},
}
resource, _:=Marshal(resourceStruct)
// OUTPUT: map[name:map[familyName:Daenen givenName:Quint] userName:di-wu]

Decoder

A simple decoder that fills structs with maps.

! no pointers and tags supported

resourceMap:=map[string]interface{}{
"userName": "di-wu",
"name": map[string]interface{}{
"firstName": "Quint",
"lastName": "Daenen",
},
}
varresourceResourceStruct_=Unmarshal(resourceMap, &resource)
// OUTPUT: {di-wu {Quint Daenen}}

Struct Generator

Converts a schema to a structure representing the resource described in that schema.

g, _:=gen.NewStructGenerator(schema.ReferenceSchema{
Name: "User",
Attributes: []*schema.Attribute{
{
Name: "userName",
Required: true,
Uniqueness: schema.Server,
},
},
})
fmt.Print(g.Generate())
// Output:// type User struct {// ExternalId string// Id string// UserName string// }

About

Various Utility Modules to Use SCIM v2 Effortless

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages