Skip to content

Commit ecb59d6

Browse files
committed
update cli
1 parent ba9ee36 commit ecb59d6

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

coderd/templates_test.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,9 @@ func TestTemplatesByOrganization(t *testing.T) {
420420

421421
ctx := testutil.Context(t, testutil.WaitLong)
422422

423-
templates, err := client.TemplatesByOrganization(ctx, user.OrganizationID)
423+
templates, err := client.Templates(ctx, codersdk.TemplateFilter{
424+
OrganizationID: user.OrganizationID,
425+
})
424426
require.NoError(t, err)
425427
require.Len(t, templates, 1)
426428
})
@@ -440,7 +442,7 @@ func TestTemplatesByOrganization(t *testing.T) {
440442
require.Len(t, templates, 2)
441443

442444
// Listing all should match
443-
templates, err = client.Templates(ctx)
445+
templates, err = client.Templates(ctx, codersdk.TemplateFilter{})
444446
require.NoError(t, err)
445447
require.Len(t, templates, 2)
446448

@@ -473,12 +475,19 @@ func TestTemplatesByOrganization(t *testing.T) {
473475
ctx := testutil.Context(t, testutil.WaitLong)
474476

475477
// All 4 are viewable by the owner
476-
templates, err := client.Templates(ctx)
478+
templates, err := client.Templates(ctx, codersdk.TemplateFilter{})
477479
require.NoError(t, err)
478480
require.Len(t, templates, 4)
479481

482+
// View a single organization from the owner
483+
templates, err = client.Templates(ctx, codersdk.TemplateFilter{
484+
OrganizationID: owner.OrganizationID,
485+
})
486+
require.NoError(t, err)
487+
require.Len(t, templates, 2)
488+
480489
// Only 2 are viewable by the org user
481-
templates, err = user.Templates(ctx)
490+
templates, err = user.Templates(ctx, codersdk.TemplateFilter{})
482491
require.NoError(t, err)
483492
require.Len(t, templates, 2)
484493
for _, tmpl := range templates {

codersdk/organizations.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"net/http"
8+
"strings"
89
"time"
910

1011
"github.com/google/uuid"
@@ -362,11 +363,33 @@ func (c *Client) TemplatesByOrganization(ctx context.Context, organizationID uui
362363
return templates, json.NewDecoder(res.Body).Decode(&templates)
363364
}
364365

366+
type TemplateFilter struct {
367+
OrganizationID uuid.UUID
368+
}
369+
370+
// asRequestOption returns a function that can be used in (*Client).Request.
371+
// It modifies the request query parameters.
372+
func (f TemplateFilter) asRequestOption() RequestOption {
373+
return func(r *http.Request) {
374+
var params []string
375+
// Make sure all user input is quoted to ensure it's parsed as a single
376+
// string.
377+
if f.OrganizationID != uuid.Nil {
378+
params = append(params, fmt.Sprintf("organization:%q", f.OrganizationID.String()))
379+
}
380+
381+
q := r.URL.Query()
382+
q.Set("q", strings.Join(params, " "))
383+
r.URL.RawQuery = q.Encode()
384+
}
385+
}
386+
365387
// Templates lists all viewable templates
366-
func (c *Client) Templates(ctx context.Context) ([]Template, error) {
388+
func (c *Client) Templates(ctx context.Context, filter TemplateFilter) ([]Template, error) {
367389
res, err := c.Request(ctx, http.MethodGet,
368390
"/api/v2/templates",
369391
nil,
392+
filter.asRequestOption(),
370393
)
371394
if err != nil {
372395
return nil, xerrors.Errorf("execute request: %w", err)

0 commit comments

Comments
 (0)