mirror of https://github.com/databricks/cli.git
94 lines
2.2 KiB
Go
94 lines
2.2 KiB
Go
|
package jsonloader
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/databricks/cli/libs/dyn/convert"
|
||
|
"github.com/databricks/cli/libs/dyn/dynassert"
|
||
|
"github.com/databricks/databricks-sdk-go/service/jobs"
|
||
|
)
|
||
|
|
||
|
const jsonData = `
|
||
|
{
|
||
|
"job_id": 123,
|
||
|
"new_settings": {
|
||
|
"name": "xxx",
|
||
|
"email_notifications": {
|
||
|
"on_start": [],
|
||
|
"on_success": [],
|
||
|
"on_failure": []
|
||
|
},
|
||
|
"webhook_notifications": {
|
||
|
"on_start": [],
|
||
|
"on_failure": []
|
||
|
},
|
||
|
"notification_settings": {
|
||
|
"no_alert_for_skipped_runs": true,
|
||
|
"no_alert_for_canceled_runs": true
|
||
|
},
|
||
|
"timeout_seconds": 0,
|
||
|
"max_concurrent_runs": 1,
|
||
|
"tasks": [
|
||
|
{
|
||
|
"task_key": "xxx",
|
||
|
"email_notifications": {},
|
||
|
"notification_settings": {},
|
||
|
"timeout_seconds": 0,
|
||
|
"max_retries": 0,
|
||
|
"min_retry_interval_millis": 0,
|
||
|
"retry_on_timeout": "true"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
`
|
||
|
|
||
|
func TestJsonLoader(t *testing.T) {
|
||
|
v, err := LoadJSON([]byte(jsonData), "(inline)")
|
||
|
dynassert.NoError(t, err)
|
||
|
|
||
|
var r jobs.ResetJob
|
||
|
err = convert.ToTyped(&r, v)
|
||
|
dynassert.NoError(t, err)
|
||
|
}
|
||
|
|
||
|
const malformedMap = `
|
||
|
{
|
||
|
"job_id": 123,
|
||
|
"new_settings": {
|
||
|
"name": "xxx",
|
||
|
"wrong",
|
||
|
}
|
||
|
}
|
||
|
`
|
||
|
|
||
|
func TestJsonLoaderMalformedMap(t *testing.T) {
|
||
|
_, err := LoadJSON([]byte(malformedMap), "(inline)")
|
||
|
dynassert.ErrorContains(t, err, "error decoding JSON at (inline):6:16: invalid character ',' after object key")
|
||
|
}
|
||
|
|
||
|
const malformedArray = `
|
||
|
{
|
||
|
"job_id": 123,
|
||
|
"new_settings": {
|
||
|
"name": "xxx",
|
||
|
"tasks": [1, "asd",]
|
||
|
}
|
||
|
}`
|
||
|
|
||
|
func TestJsonLoaderMalformedArray(t *testing.T) {
|
||
|
_, err := LoadJSON([]byte(malformedArray), "path/to/file.json")
|
||
|
dynassert.ErrorContains(t, err, "error decoding JSON at path/to/file.json:6:28: invalid character ']' looking for beginning of value")
|
||
|
}
|
||
|
|
||
|
const eofData = `
|
||
|
{
|
||
|
"job_id": 123,
|
||
|
"new_settings": {
|
||
|
"name": "xxx",`
|
||
|
|
||
|
func TestJsonLoaderEOF(t *testing.T) {
|
||
|
_, err := LoadJSON([]byte(eofData), "path/to/file.json")
|
||
|
dynassert.ErrorContains(t, err, "unexpected end of JSON input")
|
||
|
}
|