api: add test for canonicalized jobs/parse

This commit is contained in:
Nick Ethier
2018-04-16 19:17:58 -04:00
parent c5945204a6
commit 4952c52d49
2 changed files with 47 additions and 6 deletions

View File

@@ -40,6 +40,7 @@ type Jobs struct {
type JobsParseRequest struct {
//JobHCL is an hcl jobspec
JobHCL string
//Canonicalize is a flag as to if the server should return default values
//for unset fields
Canonicalize bool
@@ -50,13 +51,16 @@ func (c *Client) Jobs() *Jobs {
return &Jobs{client: c}
}
// Parse is used to convert the HCL repesentation of a Job to JSON server side
// Parse is used to convert the HCL repesentation of a Job to JSON server side.
// To parse the HCL client side see package github.com/hashicorp/nomad/jobspec
func (j *Jobs) Parse(jobHCL string) (*Job, error) {
var job *Job
req := &JobsParseRequest{JobHCL: jobHCL}
_, err := j.client.write("/v1/jobs/parse", req, job, nil)
return job, err
func (j *Jobs) Parse(jobHCL string, canonicalize bool) (*Job, error) {
var job Job
req := &JobsParseRequest{
JobHCL: jobHCL,
Canonicalize: canonicalize,
}
_, err := j.client.write("/v1/jobs/parse", req, &job, nil)
return &job, err
}
func (j *Jobs) Validate(job *Job, q *WriteOptions) (*JobValidateResponse, *WriteMeta, error) {

View File

@@ -47,6 +47,43 @@ func TestJobs_Register(t *testing.T) {
}
}
func TestJobs_Parse(t *testing.T) {
t.Parallel()
c, s := makeClient(t, nil, nil)
defer s.Stop()
jobs := c.Jobs()
checkJob := func(job *Job, expected string) {
if job == nil {
t.Fatal("job should not be nil")
}
region := job.Region
if region == nil {
if expected != "" {
t.Fatalf("expected job region to be '%s' but was unset", expected)
}
} else {
if expected != *region {
t.Fatalf("expected job region '%s', but got '%s'", expected, *region)
}
}
}
job, err := jobs.Parse(mock.HCL(), true)
if err != nil {
t.Fatalf("err: %s", err)
}
checkJob(job, "global")
job, err = jobs.Parse(mock.HCL(), false)
if err != nil {
t.Fatalf("err: %s", err)
}
checkJob(job, "")
}
func TestJobs_Validate(t *testing.T) {
t.Parallel()
c, s := makeClient(t, nil, nil)