Skip to content

Commit

Permalink
start testing ocdav delete
Browse files Browse the repository at this point in the history
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
  • Loading branch information
butonic committed Nov 9, 2022
1 parent ed6f03a commit 4e5722e
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 95 deletions.
6 changes: 6 additions & 0 deletions changelog/unreleased/dav-unit-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Enhancement: Cover ocdav with more unit tests

We added unit tests to cover more ocdav handlers:
- delete

https://github.com/cs3org/reva/pull/3441
22 changes: 15 additions & 7 deletions internal/http/services/owncloud/ocdav/ocdav.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"time"

gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
gatewayv1beta1 "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
userpb "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
rpc "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1"
provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
Expand Down Expand Up @@ -156,6 +155,7 @@ type svc struct {
davHandler *DavHandler
favoritesManager favorite.Manager
client *http.Client
gwClient gateway.GatewayAPIClient
// LockSystem is the lock management system.
LockSystem LockSystem
userIdentifierCache *ttlcache.Cache
Expand Down Expand Up @@ -199,11 +199,11 @@ func New(m map[string]interface{}, log *zerolog.Logger) (global.Service, error)
return nil, err
}

return NewWith(conf, fm, ls, log, rtrace.DefaultProvider())
return NewWith(conf, fm, ls, log, rtrace.DefaultProvider(), nil)
}

// NewWith returns a new ocdav service
func NewWith(conf *Config, fm favorite.Manager, ls LockSystem, _ *zerolog.Logger, tp trace.TracerProvider) (global.Service, error) {
func NewWith(conf *Config, fm favorite.Manager, ls LockSystem, _ *zerolog.Logger, tp trace.TracerProvider, gwc gateway.GatewayAPIClient) (global.Service, error) {
s := &svc{
c: conf,
webDavHandler: new(WebDavHandler),
Expand All @@ -212,6 +212,7 @@ func NewWith(conf *Config, fm favorite.Manager, ls LockSystem, _ *zerolog.Logger
rhttp.Timeout(time.Duration(conf.Timeout*int64(time.Second))),
rhttp.Insecure(conf.Insecure),
),
gwClient: gwc,
favoritesManager: fm,
LockSystem: ls,
userIdentifierCache: ttlcache.NewCache(),
Expand All @@ -226,6 +227,13 @@ func NewWith(conf *Config, fm favorite.Manager, ls LockSystem, _ *zerolog.Logger
if err := s.davHandler.init(conf); err != nil {
return nil, err
}
if gwc == nil {
var err error
s.gwClient, err = pool.GetGatewayServiceClient(s.c.GatewaySvc)
if err != nil {
return nil, err
}
}
return s, nil
}

Expand Down Expand Up @@ -315,7 +323,7 @@ func (s *svc) Handler() http.Handler {
}

func (s *svc) getClient() (gateway.GatewayAPIClient, error) {
return pool.GetGatewayServiceClient(s.c.GatewaySvc)
return s.gwClient, nil
}

func (s *svc) ApplyLayout(ctx context.Context, ns string, useLoggedInUserNS bool, requestPath string) (string, string, error) {
Expand Down Expand Up @@ -393,7 +401,7 @@ func addAccessHeaders(w http.ResponseWriter, r *http.Request) {
}
}

func authContextForUser(client gatewayv1beta1.GatewayAPIClient, userID *userpb.UserId, machineAuthAPIKey string) (context.Context, error) {
func authContextForUser(client gateway.GatewayAPIClient, userID *userpb.UserId, machineAuthAPIKey string) (context.Context, error) {
if machineAuthAPIKey == "" {
return nil, errtypes.NotSupported("machine auth not configured")
}
Expand All @@ -415,7 +423,7 @@ func authContextForUser(client gatewayv1beta1.GatewayAPIClient, userID *userpb.U
return granteeCtx, nil
}

func (s *svc) sspReferenceIsChildOf(ctx context.Context, client gatewayv1beta1.GatewayAPIClient, child, parent *provider.Reference) (bool, error) {
func (s *svc) sspReferenceIsChildOf(ctx context.Context, client gateway.GatewayAPIClient, child, parent *provider.Reference) (bool, error) {
parentStatRes, err := client.Stat(ctx, &provider.StatRequest{Ref: parent})
if err != nil {
return false, err
Expand Down Expand Up @@ -457,7 +465,7 @@ func (s *svc) sspReferenceIsChildOf(ctx context.Context, client gatewayv1beta1.G
return strings.HasPrefix(cp, pp), nil
}

func (s *svc) referenceIsChildOf(ctx context.Context, client gatewayv1beta1.GatewayAPIClient, child, parent *provider.Reference) (bool, error) {
func (s *svc) referenceIsChildOf(ctx context.Context, client gateway.GatewayAPIClient, child, parent *provider.Reference) (bool, error) {
if child.ResourceId.SpaceId != parent.ResourceId.SpaceId {
return false, nil // Not on the same storage -> not a child
}
Expand Down
87 changes: 0 additions & 87 deletions internal/http/services/owncloud/ocdav/ocdav_test.go

This file was deleted.

9 changes: 9 additions & 0 deletions pkg/micro/ocdav/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"context"
"crypto/tls"

gateway "github.com/cs3org/go-cs3apis/cs3/gateway/v1beta1"
"github.com/cs3org/reva/v2/internal/http/services/owncloud/ocdav"
"github.com/cs3org/reva/v2/pkg/storage/favorite"
"github.com/rs/zerolog"
Expand All @@ -44,6 +45,7 @@ type Options struct {
JWTSecret string

FavoriteManager favorite.Manager
GatewayClient gateway.GatewayAPIClient

TracingEnabled bool
TracingCollector string
Expand Down Expand Up @@ -188,6 +190,13 @@ func FavoriteManager(val favorite.Manager) Option {
}
}

// GatewayClient provides a function to set the GatewayClient option.
func GatewayClient(val gateway.GatewayAPIClient) Option {
return func(o *Options) {
o.GatewayClient = val
}
}

// LockSystem provides a function to set the LockSystem option.
func LockSystem(val ocdav.LockSystem) Option {
return func(o *Options) {
Expand Down
2 changes: 1 addition & 1 deletion pkg/micro/ocdav/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func Service(opts ...Option) (micro.Service, error) {
)

tp := rtrace.GetTracerProvider(sopts.TracingEnabled, sopts.TracingCollector, sopts.TracingEndpoint, sopts.Name)
revaService, err := ocdav.NewWith(&sopts.config, sopts.FavoriteManager, sopts.lockSystem, &sopts.Logger, tp)
revaService, err := ocdav.NewWith(&sopts.config, sopts.FavoriteManager, sopts.lockSystem, &sopts.Logger, tp, sopts.GatewayClient)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 4e5722e

Please sign in to comment.