Skip to content

Commit

Permalink
Merge pull request #155 from sailpoint-oss/devrel-1737
Browse files Browse the repository at this point in the history
Check for nulls on nullable fields when downloading rules
  • Loading branch information
tyler-mairose-sp authored Sep 4, 2024
2 parents 5a46fc6 + 1a75f31 commit cae1901
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 19 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/prb_linux.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: PRB_Linux
env:
SAIL_CLIENT_ID: ${{secrets.CLI_TEST_TENANT_CLIENT_ID}}
SAIL_CLIENT_SECRET: ${{secrets.CLI_TEST_TENANT_CLIENT_SECRET}}
SAIL_BASE_URL: https://css-255.api.identitynow.com
SAIL_CLIENT_ID: ${{ secrets.SDK_TEST_TENANT_CLIENT_ID }}
SAIL_CLIENT_SECRET: ${{ secrets.SDK_TEST_TENANT_CLIENT_SECRET }}
SAIL_BASE_URL: ${{ secrets.SDK_TEST_TENANT_BASE_URL }}

on:
push:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/prb_macos.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: PRB_Macos
env:
SAIL_CLIENT_ID: ${{secrets.CLI_TEST_TENANT_CLIENT_ID}}
SAIL_CLIENT_SECRET: ${{secrets.CLI_TEST_TENANT_CLIENT_SECRET}}
SAIL_BASE_URL: https://css-255.api.identitynow.com
SAIL_CLIENT_ID: ${{ secrets.SDK_TEST_TENANT_CLIENT_ID }}
SAIL_CLIENT_SECRET: ${{ secrets.SDK_TEST_TENANT_CLIENT_SECRET }}
SAIL_BASE_URL: ${{ secrets.SDK_TEST_TENANT_BASE_URL }}

on:
push:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/prb_windows.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: PRB_Windows
env:
SAIL_CLIENT_ID: ${{secrets.CLI_TEST_TENANT_CLIENT_ID}}
SAIL_CLIENT_SECRET: ${{secrets.CLI_TEST_TENANT_CLIENT_SECRET}}
SAIL_BASE_URL: https://css-255.api.identitynow.com
SAIL_CLIENT_ID: ${{ secrets.SDK_TEST_TENANT_CLIENT_ID }}
SAIL_CLIENT_SECRET: ${{ secrets.SDK_TEST_TENANT_CLIENT_SECRET }}
SAIL_BASE_URL: ${{ secrets.SDK_TEST_TENANT_BASE_URL }}

on:
push:
Expand Down
4 changes: 2 additions & 2 deletions cmd/connector/static/connector/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
},
"devDependencies": {
"@types/jest": "^27.0.1",
"@vercel/ncc": "^0.34.0",
"@vercel/ncc": "^0.38.1",
"jest": "^27.0.6",
"prettier": "^2.3.2",
"shx": "^0.3.3",
"ts-jest": "^27.0.5",
"typescript": "4.3.5",
"typescript": "4.9.3",
"cross-env": "7.0.3"
},
"jest": {
Expand Down
4 changes: 2 additions & 2 deletions cmd/connector/static/customizer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
},
"devDependencies": {
"@types/jest": "^27.0.1",
"@vercel/ncc": "^0.34.0",
"@vercel/ncc": "^0.38.1",
"jest": "^27.0.6",
"prettier": "^2.3.2",
"shx": "^0.3.3",
"ts-jest": "^27.0.5",
"typescript": "4.3.5",
"typescript": "4.9.3",
"cross-env": "7.0.3"
},
"jest": {
Expand Down
69 changes: 63 additions & 6 deletions cmd/rule/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type Rule struct {
XMLName xml.Name `xml:"Rule"`
Name string `xml:"name,attr"`
Type string `xml:"type,attr"`
Description string `xml:"Description"`
Description string `xml:"Description,omitempty"`
Signature *Signature
Source string `xml:"Source"`
}
Expand All @@ -53,7 +53,7 @@ type Argument struct {
XMLName xml.Name `xml:"Argument"`
Name string `xml:"name,attr"`
Type string `xml:"type,attr,omitempty"`
Description string `xml:"Description"`
Description string `xml:"Description,omitempty"`
}

var cloudRuleTypes = []string{"AttributeGenerator", "AttributeGeneratorFromTemplate", "BeforeProvisioning", "BuildMap", "Correlation", "IdentityAttribute", "ManagerCorrelation"}
Expand Down Expand Up @@ -145,7 +145,17 @@ func saveCloudXMLRules(apiClient *sailpoint.APIClient, description string, inclu
}

//Make Rule XML Object
rule := &Rule{Name: v.Object["name"].(string), Type: RuleType, Description: v.Object["description"].(string), Source: "<![CDATA[\n" + v.Object["sourceCode"].(map[string]interface{})["script"].(string) + "\n]]>"}
rule := &Rule{}
rule.Name = v.Object["name"].(string)
rule.Type = RuleType

if v.Object["description"] != nil {
rule.Description = v.Object["description"].(string)
} else {
rule.Description = ""
}

rule.Source = "<![CDATA[\n" + v.Object["sourceCode"].(map[string]interface{})["script"].(string) + "\n]]>"

var ruleSignature = &Signature{}

Expand All @@ -154,7 +164,22 @@ func saveCloudXMLRules(apiClient *sailpoint.APIClient, description string, inclu

ruleSignature.Inputs = &Inputs{Argument: []Argument{}}
for _, v := range v.Object["signature"].(map[string]interface{})["input"].([]interface{}) {
argument := Argument{Name: v.(map[string]interface{})["name"].(string), Type: v.(map[string]interface{})["type"].(string), Description: v.(map[string]interface{})["description"].(string)}
argument := Argument{}

argument.Name = v.(map[string]interface{})["name"].(string)

if v.(map[string]interface{})["type"] != nil {
argument.Type = v.(map[string]interface{})["type"].(string)
} else {
argument.Type = ""
}

if v.(map[string]interface{})["description"] != nil {
argument.Description = v.(map[string]interface{})["description"].(string)
} else {
argument.Description = ""
}

ruleSignature.Inputs.Argument = append(ruleSignature.Inputs.Argument, argument)
}

Expand All @@ -166,13 +191,45 @@ func saveCloudXMLRules(apiClient *sailpoint.APIClient, description string, inclu

if _, ok := v.Object["signature"].(map[string]interface{})["output"].([]interface{}); ok {
for _, v := range v.Object["signature"].(map[string]interface{})["output"].([]interface{}) {
argument := Argument{Name: v.(map[string]interface{})["name"].(string), Type: v.(map[string]interface{})["type"].(string), Description: v.(map[string]interface{})["description"].(string)}

argument := Argument{}

argument.Name = v.(map[string]interface{})["name"].(string)

if v.(map[string]interface{})["type"] != nil {
argument.Type = v.(map[string]interface{})["type"].(string)
} else {
argument.Type = ""
}

if v.(map[string]interface{})["description"] != nil {
argument.Description = v.(map[string]interface{})["description"].(string)
} else {
argument.Description = ""
}

ruleSignature.Returns.Argument = append(ruleSignature.Returns.Argument, argument)
}

} else {
output := v.Object["signature"].(map[string]interface{})["output"].(map[string]interface{})
argument := Argument{Name: output["name"].(string), Type: output["type"].(string), Description: output["description"].(string)}

argument := Argument{}

argument.Name = output["name"].(string)

if output["type"] != nil {
argument.Type = output["type"].(string)
} else {
argument.Type = ""
}

if output["description"] != nil {
argument.Description = output["description"].(string)
} else {
argument.Description = ""
}

ruleSignature.Returns.Argument = append(ruleSignature.Returns.Argument, argument)
}
}
Expand Down

0 comments on commit cae1901

Please sign in to comment.