From 0cf676d9f90332e442a6b172993e2f02f5368bb5 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 20 Apr 2020 13:17:57 +0000 Subject: [PATCH] Add Get/Update for oauth2 apps (#311) Update Documentation for Oauth2 Application delete also fix variable names to be similar to existing functions Signed-off-by: Dan Molik Add Get/Update for oauth2 apps Add a get by id function for oauth applications, and add an update function, also ensuring the oauth2 update regenerates the client secret. Signed-off-by: Dan Molik Co-authored-by: Dan Molik Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/311 Reviewed-by: 6543 <6543@noreply.gitea.io> Reviewed-by: Andrew Thornton --- gitea/oauth2.go | 24 +++++++++++++++++++++++- gitea/oauth2_test.go | 11 +++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/gitea/oauth2.go b/gitea/oauth2.go index 4f0e712..527535d 100644 --- a/gitea/oauth2.go +++ b/gitea/oauth2.go @@ -45,6 +45,28 @@ func (c *Client) CreateOauth2(opt CreateOauth2Option) (*Oauth2, error) { return oauth, c.getParsedResponse("POST", "/user/applications/oauth2", jsonHeader, bytes.NewReader(body), oauth) } +// UpdateOauth2 a specific Oauth2 Application by ID and return a completed Oauth2 object. +func (c *Client) UpdateOauth2(oauth2id int64, opt CreateOauth2Option) (*Oauth2, error) { + if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil { + return nil, e + } + body, err := json.Marshal(&opt) + if err != nil { + return nil, err + } + oauth := new(Oauth2) + return oauth, c.getParsedResponse("PATCH", fmt.Sprintf("/user/applications/oauth2/%d", oauth2id), jsonHeader, bytes.NewReader(body), oauth) +} + +// GetOauth2 a specific Oauth2 Application by ID. +func (c *Client) GetOauth2(oauth2id int64) (*Oauth2, error) { + if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil { + return nil, e + } + oauth2s := &Oauth2{} + return oauth2s, c.getParsedResponse("GET", fmt.Sprintf("/user/applications/oauth2/%d", oauth2id), nil, nil, &oauth2s) +} + // ListOauth2 all of your Oauth2 Applications. func (c *Client) ListOauth2(opt ListOauth2Option) ([]*Oauth2, error) { if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil { @@ -55,7 +77,7 @@ func (c *Client) ListOauth2(opt ListOauth2Option) ([]*Oauth2, error) { return oauth2s, c.getParsedResponse("GET", fmt.Sprintf("/user/applications/oauth2?%s", opt.getURLQuery().Encode()), nil, nil, &oauth2s) } -// DeleteOauth2 delete an Oauth2 application by name +// DeleteOauth2 delete an Oauth2 application by ID func (c *Client) DeleteOauth2(oauth2id int64) error { if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil { return e diff --git a/gitea/oauth2_test.go b/gitea/oauth2_test.go index 3b4ae0e..b57ce24 100644 --- a/gitea/oauth2_test.go +++ b/gitea/oauth2_test.go @@ -28,5 +28,16 @@ func TestOauth2(t *testing.T) { assert.Len(t, a, 1) assert.EqualValues(t, newApp.Name, a[0].Name) + b, err := c.GetOauth2(newApp.ID) + assert.NoError(t, err) + assert.EqualValues(t, newApp.Name, b.Name) + + b, err = c.UpdateOauth2(newApp.ID, CreateOauth2Option{Name: newApp.Name, RedirectURIs: []string{"https://test/login"}}) + assert.NoError(t, err) + assert.EqualValues(t, newApp.Name, b.Name) + assert.EqualValues(t, "https://test/login", b.RedirectURIs[0]) + assert.EqualValues(t, newApp.ID, b.ID) + assert.NotEqual(t, newApp.ClientSecret, b.ClientSecret) + assert.NoError(t, c.DeleteOauth2(newApp.ID)) }