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 <dan@danmolik.com>

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 <dan@danmolik.com>

Co-authored-by: Dan Molik <dan@danmolik.com>
Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/311
Reviewed-by: 6543 <6543@noreply.gitea.io>
Reviewed-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
Dan 2020-04-20 13:17:57 +00:00 committed by Andrew Thornton
parent 50efd911c8
commit 0cf676d9f9
2 changed files with 34 additions and 1 deletions

View file

@ -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) 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. // ListOauth2 all of your Oauth2 Applications.
func (c *Client) ListOauth2(opt ListOauth2Option) ([]*Oauth2, error) { func (c *Client) ListOauth2(opt ListOauth2Option) ([]*Oauth2, error) {
if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil { 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) 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 { func (c *Client) DeleteOauth2(oauth2id int64) error {
if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil { if e := c.CheckServerVersionConstraint(">=1.12.0"); e != nil {
return e return e

View file

@ -28,5 +28,16 @@ func TestOauth2(t *testing.T) {
assert.Len(t, a, 1) assert.Len(t, a, 1)
assert.EqualValues(t, newApp.Name, a[0].Name) 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)) assert.NoError(t, c.DeleteOauth2(newApp.ID))
} }