Skip to content

Commit

Permalink
feat(mgmt): delete project
Browse files Browse the repository at this point in the history
  • Loading branch information
omercnet committed Dec 14, 2023
1 parent f9ab68e commit 3e0c501
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 0 deletions.
6 changes: 6 additions & 0 deletions descope/api/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ var (
projectImport: "mgmt/project/import",
projectUpdateName: "mgmt/project/update/name",
projectClone: "mgmt/project/clone",
projectDelete: "mgmt/project/delete",
auditSearch: "mgmt/audit/search",
authzSchemaSave: "mgmt/authz/schema/save",
authzSchemaDelete: "mgmt/authz/schema/delete",
Expand Down Expand Up @@ -291,6 +292,7 @@ type mgmtEndpoints struct {
projectImport string
projectUpdateName string
projectClone string
projectDelete string

auditSearch string

Expand Down Expand Up @@ -709,6 +711,10 @@ func (e *endpoints) ManagementProjectClone() string {
return path.Join(e.version, e.mgmt.projectClone)
}

func (e *endpoints) ManagementProjectDelete() string {
return path.Join(e.version, e.mgmt.projectDelete)
}

func (e *endpoints) ManagementAuditSearch() string {
return path.Join(e.version, e.mgmt.auditSearch)
}
Expand Down
4 changes: 4 additions & 0 deletions descope/internal/mgmt/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ func (p *project) Clone(name string, tag descope.ProjectTag) (*descope.NewProjec
return unmarshalNewProjectResponseResponse(res)
}

func (u *project) Delete() error {

Check warning on line 60 in descope/internal/mgmt/project.go

View workflow job for this annotation

GitHub Actions / Lint and more checks

receiver-naming: receiver name u should be consistent with previous receiver name p for project (revive)
_, err := u.client.DoPostRequest(api.Routes.ManagementProjectDelete(), nil, nil, u.conf.ManagementKey)
return err
}
func unmarshalNewProjectResponseResponse(res *api.HTTPResponse) (*descope.NewProjectResponse, error) {
var newProjectRes *descope.NewProjectResponse
err := utils.Unmarshal([]byte(res.BodyStr), &newProjectRes)
Expand Down
14 changes: 14 additions & 0 deletions descope/internal/mgmt/project_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,17 @@ func TestProjectCloneError(t *testing.T) {
_, err := mgmt.Project().Clone("foo", "")
require.Error(t, err)
}

func TestProjectDeleteSuccess(t *testing.T) {
m := newTestMgmt(nil, helpers.DoOk(func(r *http.Request) {
require.Equal(t, r.Header.Get("Authorization"), "Bearer a:key")
}))
err := m.Project().Delete()
require.NoError(t, err)
}

func TestProjectDeleteError(t *testing.T) {
mgmt := newTestMgmt(nil, helpers.DoBadRequest(nil))
err := mgmt.Project().Delete()
require.Error(t, err)
}
3 changes: 3 additions & 0 deletions descope/sdk/mgmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,9 @@ type Project interface {
// - Users, tenants and access keys are not cloned.
// Returns The new project details (name, id, tag, and settings).
Clone(name string, tag descope.ProjectTag) (*descope.NewProjectResponse, error)

// Delete the current project.
Delete() error
}

// Provides search project audit trail
Expand Down
4 changes: 4 additions & 0 deletions descope/tests/mocks/mgmt/managementmock.go
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,10 @@ func (m *MockProject) Clone(name string, tag descope.ProjectTag) (*descope.NewPr
return m.CloneResponse, m.CloneError
}

func (m *MockProject) Delete() error {
return nil
}

// Mock Audit
type MockAudit struct {
SearchAssert func(*descope.AuditSearchOptions)
Expand Down
3 changes: 3 additions & 0 deletions descope/tests/mocks/mgmt/managementmock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,7 @@ func TestMockManagement(t *testing.T) {
u, err := descopeClient.Management.User().Load(expectedLoginID)
require.NoError(t, err)
assert.EqualValues(t, expectedLoginID, u.UserID)

err = descopeClient.Management.Project().Delete()
require.NoError(t, err)
}

0 comments on commit 3e0c501

Please sign in to comment.