From 4952c52d4969835ae29b6ea1b4af40a46d75d5df Mon Sep 17 00:00:00 2001 From: Nick Ethier Date: Mon, 16 Apr 2018 19:17:58 -0400 Subject: [PATCH] api: add test for canonicalized jobs/parse --- api/jobs.go | 16 ++++++++++------ api/jobs_test.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/api/jobs.go b/api/jobs.go index 5633ea6a2..c710842f1 100644 --- a/api/jobs.go +++ b/api/jobs.go @@ -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) { diff --git a/api/jobs_test.go b/api/jobs_test.go index 66f157c54..ceef8242d 100644 --- a/api/jobs_test.go +++ b/api/jobs_test.go @@ -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)