add a QoL path.Build func (#2763)
Adds a path.Build() func that can arbitrarily build a path according to expected standards without first initializing a path.Builder{}.
---
#### Does this PR need a docs update or release note?
- [x] ⛔ No
#### Type of change
- [x] 🧹 Tech Debt/Cleanup
#### Test Plan
- [x] ⚡ Unit test
- [x] 💚 E2E
This commit is contained in:
parent
c0fc821976
commit
dc21f4ce07
@ -173,14 +173,13 @@ func buildCollections(
|
|||||||
collections := make([]data.RestoreCollection, 0, len(colls))
|
collections := make([]data.RestoreCollection, 0, len(colls))
|
||||||
|
|
||||||
for _, c := range colls {
|
for _, c := range colls {
|
||||||
pth, err := toDataLayerPath(
|
pth, err := path.Build(
|
||||||
service,
|
|
||||||
tenant,
|
tenant,
|
||||||
user,
|
user,
|
||||||
|
service,
|
||||||
c.category,
|
c.category,
|
||||||
c.pathElements,
|
|
||||||
false,
|
false,
|
||||||
)
|
c.pathElements...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -197,22 +196,3 @@ func buildCollections(
|
|||||||
|
|
||||||
return collections, nil
|
return collections, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func toDataLayerPath(
|
|
||||||
service path.ServiceType,
|
|
||||||
tenant, user string,
|
|
||||||
category path.CategoryType,
|
|
||||||
elements []string,
|
|
||||||
isItem bool,
|
|
||||||
) (path.Path, error) {
|
|
||||||
pb := path.Builder{}.Append(elements...)
|
|
||||||
|
|
||||||
switch service {
|
|
||||||
case path.ExchangeService:
|
|
||||||
return pb.ToDataLayerExchangePathForCategory(tenant, user, category, isItem)
|
|
||||||
case path.OneDriveService:
|
|
||||||
return pb.ToDataLayerOneDrivePath(tenant, user, isItem)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, errors.Errorf("unknown service %s", service.String())
|
|
||||||
}
|
|
||||||
|
|||||||
@ -570,27 +570,25 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
name: "Mail Cache Test",
|
name: "Mail Cache Test",
|
||||||
category: path.EmailCategory,
|
category: path.EmailCategory,
|
||||||
pathFunc1: func(t *testing.T) path.Path {
|
pathFunc1: func(t *testing.T) path.Path {
|
||||||
pth, err := path.Builder{}.
|
pth, err := path.Build(
|
||||||
Append("Griffindor").
|
suite.credentials.AzureTenantID,
|
||||||
Append("Croix").
|
user,
|
||||||
ToDataLayerExchangePathForCategory(
|
path.ExchangeService,
|
||||||
suite.credentials.AzureTenantID,
|
path.EmailCategory,
|
||||||
user,
|
false,
|
||||||
path.EmailCategory,
|
"Griffindor", "Croix")
|
||||||
false)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return pth
|
return pth
|
||||||
},
|
},
|
||||||
pathFunc2: func(t *testing.T) path.Path {
|
pathFunc2: func(t *testing.T) path.Path {
|
||||||
pth, err := path.Builder{}.
|
pth, err := path.Build(
|
||||||
Append("Griffindor").
|
suite.credentials.AzureTenantID,
|
||||||
Append("Felicius").
|
user,
|
||||||
ToDataLayerExchangePathForCategory(
|
path.ExchangeService,
|
||||||
suite.credentials.AzureTenantID,
|
path.EmailCategory,
|
||||||
user,
|
false,
|
||||||
path.EmailCategory,
|
"Griffindor", "Felicius")
|
||||||
false)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return pth
|
return pth
|
||||||
@ -600,28 +598,28 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
name: "Contact Cache Test",
|
name: "Contact Cache Test",
|
||||||
category: path.ContactsCategory,
|
category: path.ContactsCategory,
|
||||||
pathFunc1: func(t *testing.T) path.Path {
|
pathFunc1: func(t *testing.T) path.Path {
|
||||||
aPath, err := path.Builder{}.
|
pth, err := path.Build(
|
||||||
Append("HufflePuff").
|
suite.credentials.AzureTenantID,
|
||||||
ToDataLayerExchangePathForCategory(
|
user,
|
||||||
suite.credentials.AzureTenantID,
|
path.ExchangeService,
|
||||||
user,
|
path.ContactsCategory,
|
||||||
path.ContactsCategory,
|
false,
|
||||||
false)
|
"HufflePuff")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return aPath
|
return pth
|
||||||
},
|
},
|
||||||
pathFunc2: func(t *testing.T) path.Path {
|
pathFunc2: func(t *testing.T) path.Path {
|
||||||
aPath, err := path.Builder{}.
|
pth, err := path.Build(
|
||||||
Append("Ravenclaw").
|
suite.credentials.AzureTenantID,
|
||||||
ToDataLayerExchangePathForCategory(
|
user,
|
||||||
suite.credentials.AzureTenantID,
|
path.ExchangeService,
|
||||||
user,
|
path.ContactsCategory,
|
||||||
path.ContactsCategory,
|
false,
|
||||||
false)
|
"Ravenclaw")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return aPath
|
return pth
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -629,28 +627,28 @@ func (suite *FolderCacheIntegrationSuite) TestCreateContainerDestination() {
|
|||||||
category: path.EventsCategory,
|
category: path.EventsCategory,
|
||||||
useIDForPath: true,
|
useIDForPath: true,
|
||||||
pathFunc1: func(t *testing.T) path.Path {
|
pathFunc1: func(t *testing.T) path.Path {
|
||||||
aPath, err := path.Builder{}.
|
pth, err := path.Build(
|
||||||
Append("Durmstrang").
|
suite.credentials.AzureTenantID,
|
||||||
ToDataLayerExchangePathForCategory(
|
user,
|
||||||
suite.credentials.AzureTenantID,
|
path.ExchangeService,
|
||||||
user,
|
path.EventsCategory,
|
||||||
path.EventsCategory,
|
false,
|
||||||
false)
|
"Durmstrang")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return aPath
|
return pth
|
||||||
},
|
},
|
||||||
pathFunc2: func(t *testing.T) path.Path {
|
pathFunc2: func(t *testing.T) path.Path {
|
||||||
aPath, err := path.Builder{}.
|
pth, err := path.Build(
|
||||||
Append("Beauxbatons").
|
suite.credentials.AzureTenantID,
|
||||||
ToDataLayerExchangePathForCategory(
|
user,
|
||||||
suite.credentials.AzureTenantID,
|
path.ExchangeService,
|
||||||
user,
|
path.EventsCategory,
|
||||||
path.EventsCategory,
|
false,
|
||||||
false)
|
"Beauxbatons")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return aPath
|
return pth
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,12 +86,13 @@ func (suite *ExchangeDataCollectionSuite) TestExchangeData_FullPath() {
|
|||||||
user := "a-user"
|
user := "a-user"
|
||||||
folder := "a-folder"
|
folder := "a-folder"
|
||||||
|
|
||||||
fullPath, err := path.Builder{}.Append(folder).ToDataLayerExchangePathForCategory(
|
fullPath, err := path.Build(
|
||||||
tenant,
|
tenant,
|
||||||
user,
|
user,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
folder)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
edc := Collection{
|
edc := Collection{
|
||||||
@ -104,18 +105,18 @@ func (suite *ExchangeDataCollectionSuite) TestExchangeData_FullPath() {
|
|||||||
|
|
||||||
func (suite *ExchangeDataCollectionSuite) TestExchangeDataCollection_NewExchangeDataCollection() {
|
func (suite *ExchangeDataCollectionSuite) TestExchangeDataCollection_NewExchangeDataCollection() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
tenant := "a-tenant"
|
tenant := "a-tenant"
|
||||||
user := "a-user"
|
user := "a-user"
|
||||||
folder := "a-folder"
|
folder := "a-folder"
|
||||||
name := "User"
|
name := "User"
|
||||||
|
|
||||||
fullPath, err := path.Builder{}.Append(folder).ToDataLayerExchangePathForCategory(
|
fullPath, err := path.Build(
|
||||||
tenant,
|
tenant,
|
||||||
user,
|
user,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
folder)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
edc := Collection{
|
edc := Collection{
|
||||||
@ -127,17 +128,11 @@ func (suite *ExchangeDataCollectionSuite) TestExchangeDataCollection_NewExchange
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ExchangeDataCollectionSuite) TestNewCollection_state() {
|
func (suite *ExchangeDataCollectionSuite) TestNewCollection_state() {
|
||||||
fooP, err := path.Builder{}.
|
fooP, err := path.Build("t", "u", path.ExchangeService, path.EmailCategory, false, "foo")
|
||||||
Append("foo").
|
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
barP, err := path.Builder{}.
|
barP, err := path.Build("t", "u", path.ExchangeService, path.EmailCategory, false, "bar")
|
||||||
Append("bar").
|
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
locP, err := path.Builder{}.
|
locP, err := path.Build("t", "u", path.ExchangeService, path.EmailCategory, false, "human-readable")
|
||||||
Append("human-readable").
|
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
|
|||||||
@ -534,9 +534,7 @@ func (suite *ServiceIteratorsSuite) TestFilterContainersAndFillCollections_incre
|
|||||||
)
|
)
|
||||||
|
|
||||||
prevPath := func(t *testing.T, at ...string) path.Path {
|
prevPath := func(t *testing.T, at ...string) path.Path {
|
||||||
p, err := path.Builder{}.
|
p, err := path.Build(tenantID, userID, path.ExchangeService, cat, false, at...)
|
||||||
Append(at...).
|
|
||||||
ToDataLayerExchangePathForCategory(tenantID, userID, cat, false)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
|
|||||||
@ -89,15 +89,13 @@ func (suite *MetadataUnitSuite) TestIsMetadataFile_Files_MetaSuffixes() {
|
|||||||
suite.Run(fmt.Sprintf("%s %s %s", test.service, test.category, ext), func() {
|
suite.Run(fmt.Sprintf("%s %s %s", test.service, test.category, ext), func() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
p, err := path.Builder{}.
|
p, err := path.Build(
|
||||||
Append("file"+ext).
|
tenant,
|
||||||
ToDataLayerPath(
|
user,
|
||||||
tenant,
|
test.service,
|
||||||
user,
|
test.category,
|
||||||
test.service,
|
true,
|
||||||
test.category,
|
"file"+ext)
|
||||||
true,
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
test.expected(t, metadata.IsMetadataFile(p), "extension %s", ext)
|
test.expected(t, metadata.IsMetadataFile(p), "extension %s", ext)
|
||||||
@ -112,15 +110,13 @@ func (suite *MetadataUnitSuite) TestIsMetadataFile_Files_NotMetaSuffixes() {
|
|||||||
suite.Run(fmt.Sprintf("%s %s %s", test.service, test.category, ext), func() {
|
suite.Run(fmt.Sprintf("%s %s %s", test.service, test.category, ext), func() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
p, err := path.Builder{}.
|
p, err := path.Build(
|
||||||
Append("file"+ext).
|
tenant,
|
||||||
ToDataLayerPath(
|
user,
|
||||||
tenant,
|
test.service,
|
||||||
user,
|
test.category,
|
||||||
test.service,
|
true,
|
||||||
test.category,
|
"file"+ext)
|
||||||
true,
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Falsef(t, metadata.IsMetadataFile(p), "extension %s", ext)
|
assert.Falsef(t, metadata.IsMetadataFile(p), "extension %s", ext)
|
||||||
@ -137,15 +133,13 @@ func (suite *MetadataUnitSuite) TestIsMetadataFile_Directories() {
|
|||||||
suite.Run(fmt.Sprintf("%s %s %s", test.service, test.category, ext), func() {
|
suite.Run(fmt.Sprintf("%s %s %s", test.service, test.category, ext), func() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
p, err := path.Builder{}.
|
p, err := path.Build(
|
||||||
Append("file"+ext).
|
tenant,
|
||||||
ToDataLayerPath(
|
user,
|
||||||
tenant,
|
test.service,
|
||||||
user,
|
test.category,
|
||||||
test.service,
|
false,
|
||||||
test.category,
|
"file"+ext)
|
||||||
false,
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Falsef(t, metadata.IsMetadataFile(p), "extension %s", ext)
|
assert.Falsef(t, metadata.IsMetadataFile(p), "extension %s", ext)
|
||||||
|
|||||||
@ -27,14 +27,13 @@ func TestMetadataCollectionUnitSuite(t *testing.T) {
|
|||||||
func (suite *MetadataCollectionUnitSuite) TestFullPath() {
|
func (suite *MetadataCollectionUnitSuite) TestFullPath() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
p, err := path.Builder{}.
|
p, err := path.Build(
|
||||||
Append("foo").
|
"a-tenant",
|
||||||
ToDataLayerExchangePathForCategory(
|
"a-user",
|
||||||
"a-tenant",
|
path.ExchangeService,
|
||||||
"a-user",
|
path.EmailCategory,
|
||||||
path.EmailCategory,
|
false,
|
||||||
false,
|
"foo")
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
c := NewMetadataCollection(p, nil, nil)
|
c := NewMetadataCollection(p, nil, nil)
|
||||||
@ -70,14 +69,13 @@ func (suite *MetadataCollectionUnitSuite) TestItems() {
|
|||||||
items = append(items, NewMetadataItem(itemNames[i], itemData[i]))
|
items = append(items, NewMetadataItem(itemNames[i], itemData[i]))
|
||||||
}
|
}
|
||||||
|
|
||||||
p, err := path.Builder{}.
|
p, err := path.Build(
|
||||||
Append("foo").
|
"a-tenant",
|
||||||
ToDataLayerExchangePathForCategory(
|
"a-user",
|
||||||
"a-tenant",
|
path.ExchangeService,
|
||||||
"a-user",
|
path.EmailCategory,
|
||||||
path.EmailCategory,
|
false,
|
||||||
false,
|
"foo")
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
c := NewMetadataCollection(
|
c := NewMetadataCollection(
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
"github.com/microsoftgraph/msgraph-sdk-go/models"
|
||||||
"github.com/pkg/errors"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"golang.org/x/exp/maps"
|
"golang.org/x/exp/maps"
|
||||||
@ -37,27 +36,7 @@ func mustToDataLayerPath(
|
|||||||
elements []string,
|
elements []string,
|
||||||
isItem bool,
|
isItem bool,
|
||||||
) path.Path {
|
) path.Path {
|
||||||
var (
|
res, err := path.Build(tenant, resourceOwner, service, category, isItem, elements...)
|
||||||
err error
|
|
||||||
res path.Path
|
|
||||||
)
|
|
||||||
|
|
||||||
pb := path.Builder{}.Append(elements...)
|
|
||||||
|
|
||||||
switch service {
|
|
||||||
case path.ExchangeService:
|
|
||||||
res, err = pb.ToDataLayerExchangePathForCategory(tenant, resourceOwner, category, isItem)
|
|
||||||
case path.OneDriveService:
|
|
||||||
require.Equal(t, path.FilesCategory, category)
|
|
||||||
|
|
||||||
res, err = pb.ToDataLayerOneDrivePath(tenant, resourceOwner, isItem)
|
|
||||||
case path.SharePointService:
|
|
||||||
res, err = pb.ToDataLayerSharePointPath(tenant, resourceOwner, category, isItem)
|
|
||||||
|
|
||||||
default:
|
|
||||||
err = errors.Errorf("bad service type %s", service.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|||||||
@ -83,12 +83,13 @@ func (suite *SharePointCollectionSuite) TestCollection_Items() {
|
|||||||
itemName: "MockListing",
|
itemName: "MockListing",
|
||||||
category: List,
|
category: List,
|
||||||
getDir: func(t *testing.T) path.Path {
|
getDir: func(t *testing.T) path.Path {
|
||||||
dir, err := path.Builder{}.Append(dirRoot).
|
dir, err := path.Build(
|
||||||
ToDataLayerSharePointPath(
|
tenant,
|
||||||
tenant,
|
user,
|
||||||
user,
|
path.SharePointService,
|
||||||
path.ListsCategory,
|
path.ListsCategory,
|
||||||
false)
|
false,
|
||||||
|
dirRoot)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return dir
|
return dir
|
||||||
@ -118,12 +119,13 @@ func (suite *SharePointCollectionSuite) TestCollection_Items() {
|
|||||||
itemName: "MockPages",
|
itemName: "MockPages",
|
||||||
category: Pages,
|
category: Pages,
|
||||||
getDir: func(t *testing.T) path.Path {
|
getDir: func(t *testing.T) path.Path {
|
||||||
dir, err := path.Builder{}.Append(dirRoot).
|
dir, err := path.Build(
|
||||||
ToDataLayerSharePointPath(
|
tenant,
|
||||||
tenant,
|
user,
|
||||||
user,
|
path.SharePointService,
|
||||||
path.PagesCategory,
|
path.PagesCategory,
|
||||||
false)
|
false,
|
||||||
|
dirRoot)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return dir
|
return dir
|
||||||
|
|||||||
@ -141,12 +141,13 @@ func collectLists(
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
dir, err := path.Builder{}.Append(tuple.name).
|
dir, err := path.Build(
|
||||||
ToDataLayerSharePointPath(
|
tenantID,
|
||||||
tenantID,
|
siteID,
|
||||||
siteID,
|
path.SharePointService,
|
||||||
path.ListsCategory,
|
path.ListsCategory,
|
||||||
false)
|
false,
|
||||||
|
tuple.name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
el.AddRecoverable(clues.Wrap(err, "creating list collection path").WithClues(ctx))
|
el.AddRecoverable(clues.Wrap(err, "creating list collection path").WithClues(ctx))
|
||||||
}
|
}
|
||||||
@ -234,12 +235,13 @@ func collectPages(
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
dir, err := path.Builder{}.Append(tuple.Name).
|
dir, err := path.Build(
|
||||||
ToDataLayerSharePointPath(
|
creds.AzureTenantID,
|
||||||
creds.AzureTenantID,
|
siteID,
|
||||||
siteID,
|
path.SharePointService,
|
||||||
path.PagesCategory,
|
path.PagesCategory,
|
||||||
false)
|
false,
|
||||||
|
tuple.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
el.AddRecoverable(clues.Wrap(err, "creating page collection path").WithClues(ctx))
|
el.AddRecoverable(clues.Wrap(err, "creating page collection path").WithClues(ctx))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,13 +20,9 @@ func TestDataCollectionSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *DataCollectionSuite) TestStateOf() {
|
func (suite *DataCollectionSuite) TestStateOf() {
|
||||||
fooP, err := path.Builder{}.
|
fooP, err := path.Build("t", "u", path.ExchangeService, path.EmailCategory, false, "foo")
|
||||||
Append("foo").
|
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
barP, err := path.Builder{}.
|
barP, err := path.Build("t", "u", path.ExchangeService, path.EmailCategory, false, "bar")
|
||||||
Append("bar").
|
|
||||||
ToDataLayerExchangePathForCategory("t", "u", path.EmailCategory, false)
|
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
|
|||||||
@ -34,13 +34,13 @@ func TestKopiaDataCollectionUnitSuite(t *testing.T) {
|
|||||||
func (suite *KopiaDataCollectionUnitSuite) TestReturnsPath() {
|
func (suite *KopiaDataCollectionUnitSuite) TestReturnsPath() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
b := path.Builder{}.Append("some", "path", "for", "data")
|
pth, err := path.Build(
|
||||||
pth, err := b.ToDataLayerExchangePathForCategory(
|
|
||||||
"a-tenant",
|
"a-tenant",
|
||||||
"a-user",
|
"a-user",
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
"some", "path", "for", "data")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
c := kopiaDataCollection{
|
c := kopiaDataCollection{
|
||||||
@ -210,13 +210,13 @@ func (suite *KopiaDataCollectionUnitSuite) TestFetch() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
b := path.Builder{}.Append(folder1, folder2)
|
pth, err := path.Build(
|
||||||
pth, err := b.ToDataLayerExchangePathForCategory(
|
|
||||||
tenant,
|
tenant,
|
||||||
user,
|
user,
|
||||||
|
path.ExchangeService,
|
||||||
category,
|
category,
|
||||||
false,
|
false,
|
||||||
)
|
folder1, folder2)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
|
|||||||
@ -352,15 +352,13 @@ func TestCorsoProgressUnitSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *CorsoProgressUnitSuite) SetupSuite() {
|
func (suite *CorsoProgressUnitSuite) SetupSuite() {
|
||||||
p, err := path.Builder{}.Append(
|
p, err := path.Build(
|
||||||
testInboxDir,
|
|
||||||
"testFile",
|
|
||||||
).ToDataLayerExchangePathForCategory(
|
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
true,
|
true,
|
||||||
)
|
testInboxDir, "testFile")
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
suite.targetFilePath = p
|
suite.targetFilePath = p
|
||||||
|
|||||||
@ -165,21 +165,25 @@ func TestKopiaIntegrationSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaIntegrationSuite) SetupSuite() {
|
func (suite *KopiaIntegrationSuite) SetupSuite() {
|
||||||
tmp, err := path.Builder{}.Append(testInboxDir).ToDataLayerExchangePathForCategory(
|
tmp, err := path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false)
|
false,
|
||||||
|
testInboxDir)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
suite.storePath1 = tmp
|
suite.storePath1 = tmp
|
||||||
suite.locPath1 = tmp
|
suite.locPath1 = tmp
|
||||||
|
|
||||||
tmp, err = path.Builder{}.Append(testArchiveDir).ToDataLayerExchangePathForCategory(
|
tmp, err = path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false)
|
false,
|
||||||
|
testArchiveDir)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
suite.storePath2 = tmp
|
suite.storePath2 = tmp
|
||||||
@ -326,12 +330,13 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaIntegrationSuite) TestBackupCollections_NoDetailsForMeta() {
|
func (suite *KopiaIntegrationSuite) TestBackupCollections_NoDetailsForMeta() {
|
||||||
tmp, err := path.Builder{}.Append(testInboxDir).ToDataLayerPath(
|
tmp, err := path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
path.OneDriveService,
|
path.OneDriveService,
|
||||||
path.FilesCategory,
|
path.FilesCategory,
|
||||||
false)
|
false,
|
||||||
|
testInboxDir)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
storePath := tmp
|
storePath := tmp
|
||||||
@ -741,22 +746,24 @@ func TestKopiaSimpleRepoIntegrationSuite(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaSimpleRepoIntegrationSuite) SetupSuite() {
|
func (suite *KopiaSimpleRepoIntegrationSuite) SetupSuite() {
|
||||||
tmp, err := path.Builder{}.Append(testInboxDir).ToDataLayerExchangePathForCategory(
|
tmp, err := path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
testInboxDir)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
suite.testPath1 = tmp
|
suite.testPath1 = tmp
|
||||||
|
|
||||||
tmp, err = path.Builder{}.Append(testArchiveDir).ToDataLayerExchangePathForCategory(
|
tmp, err = path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
testArchiveDir)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
suite.testPath2 = tmp
|
suite.testPath2 = tmp
|
||||||
@ -897,12 +904,13 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
Category: path.EmailCategory,
|
Category: path.EmailCategory,
|
||||||
}
|
}
|
||||||
|
|
||||||
subtreePathTmp, err := path.Builder{}.Append("tmp").ToDataLayerExchangePathForCategory(
|
subtreePathTmp, err := path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
false,
|
false,
|
||||||
)
|
"tmp")
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
subtreePath := subtreePathTmp.ToBuilder().Dir()
|
subtreePath := subtreePathTmp.ToBuilder().Dir()
|
||||||
@ -1048,12 +1056,13 @@ func (suite *KopiaSimpleRepoIntegrationSuite) TestBackupExcludeItem() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
func (suite *KopiaSimpleRepoIntegrationSuite) TestRestoreMultipleItems() {
|
||||||
doesntExist, err := path.Builder{}.Append("subdir", "foo").ToDataLayerExchangePathForCategory(
|
doesntExist, err := path.Build(
|
||||||
testTenant,
|
testTenant,
|
||||||
testUser,
|
testUser,
|
||||||
|
path.ExchangeService,
|
||||||
path.EmailCategory,
|
path.EmailCategory,
|
||||||
true,
|
true,
|
||||||
)
|
"subdir", "foo")
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
// Expected items is generated during the test by looking up paths in the
|
// Expected items is generated during the test by looking up paths in the
|
||||||
|
|||||||
@ -369,13 +369,13 @@ func builderFromReason(ctx context.Context, tenant string, r kopia.Reason) (*pat
|
|||||||
// This is hacky, but we want the path package to format the path the right
|
// This is hacky, but we want the path package to format the path the right
|
||||||
// way (e.x. proper order for service, category, etc), but we don't care about
|
// way (e.x. proper order for service, category, etc), but we don't care about
|
||||||
// the folders after the prefix.
|
// the folders after the prefix.
|
||||||
p, err := path.Builder{}.Append("tmp").ToDataLayerPath(
|
p, err := path.Build(
|
||||||
tenant,
|
tenant,
|
||||||
r.ResourceOwner,
|
r.ResourceOwner,
|
||||||
r.Service,
|
r.Service,
|
||||||
r.Category,
|
r.Category,
|
||||||
false,
|
false,
|
||||||
)
|
"tmp")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, clues.Wrap(err, "building path").WithClues(ctx)
|
return nil, clues.Wrap(err, "building path").WithClues(ctx)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -662,14 +662,13 @@ func makeItemPath(
|
|||||||
) path.Path {
|
) path.Path {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
p, err := path.Builder{}.Append(elems...).
|
p, err := path.Build(
|
||||||
ToDataLayerPath(
|
tenant,
|
||||||
tenant,
|
resourceOwner,
|
||||||
resourceOwner,
|
service,
|
||||||
service,
|
category,
|
||||||
category,
|
true,
|
||||||
true,
|
elems...)
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
|
|||||||
@ -48,7 +48,7 @@ func (suite *OneDrivePathSuite) Test_ToOneDrivePath() {
|
|||||||
suite.Run(tt.name, func() {
|
suite.Run(tt.name, func() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
p, err := path.Builder{}.Append(tt.pathElements...).ToDataLayerOneDrivePath("tenant", "user", false)
|
p, err := path.Build("tenant", "user", path.OneDriveService, path.FilesCategory, false, tt.pathElements...)
|
||||||
require.NoError(suite.T(), err)
|
require.NoError(suite.T(), err)
|
||||||
|
|
||||||
got, err := path.ToOneDrivePath(p)
|
got, err := path.ToOneDrivePath(p)
|
||||||
|
|||||||
@ -376,6 +376,21 @@ func (pb Builder) ToServiceCategoryMetadataPath(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Build(
|
||||||
|
tenant, resourceOwner string,
|
||||||
|
service ServiceType,
|
||||||
|
category CategoryType,
|
||||||
|
hasItem bool,
|
||||||
|
elements ...string,
|
||||||
|
) (Path, error) {
|
||||||
|
b := Builder{}.Append(elements...)
|
||||||
|
|
||||||
|
return b.ToDataLayerPath(
|
||||||
|
tenant, resourceOwner,
|
||||||
|
service, category,
|
||||||
|
hasItem)
|
||||||
|
}
|
||||||
|
|
||||||
func (pb Builder) ToDataLayerPath(
|
func (pb Builder) ToDataLayerPath(
|
||||||
tenant, user string,
|
tenant, user string,
|
||||||
service ServiceType,
|
service ServiceType,
|
||||||
|
|||||||
@ -184,9 +184,7 @@ func scopeMustHave[T scopeT](t *testing.T, sc T, m map[categorizer]string) {
|
|||||||
// stubPath ensures test path production matches that of fullPath design,
|
// stubPath ensures test path production matches that of fullPath design,
|
||||||
// stubbing out static values where necessary.
|
// stubbing out static values where necessary.
|
||||||
func stubPath(t *testing.T, user string, s []string, cat path.CategoryType) path.Path {
|
func stubPath(t *testing.T, user string, s []string, cat path.CategoryType) path.Path {
|
||||||
pth, err := path.Builder{}.
|
pth, err := path.Build("tid", user, path.ExchangeService, cat, true, s...)
|
||||||
Append(s...).
|
|
||||||
ToDataLayerExchangePathForCategory("tid", user, cat, true)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
return pth
|
return pth
|
||||||
|
|||||||
@ -257,8 +257,8 @@ func (suite *OneDriveSelectorSuite) TestOneDriveRestore_Reduce() {
|
|||||||
func (suite *OneDriveSelectorSuite) TestOneDriveCategory_PathValues() {
|
func (suite *OneDriveSelectorSuite) TestOneDriveCategory_PathValues() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
pathBuilder := path.Builder{}.Append("drive", "driveID", "root:", "dir1", "dir2", "file")
|
elems := []string{"drive", "driveID", "root:", "dir1", "dir2", "file"}
|
||||||
filePath, err := pathBuilder.ToDataLayerOneDrivePath("tenant", "user", true)
|
filePath, err := path.Build("tenant", "user", path.OneDriveService, path.FilesCategory, true, elems...)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
expected := map[categorizer][]string{
|
expected := map[categorizer][]string{
|
||||||
|
|||||||
@ -321,8 +321,6 @@ func (suite *SharePointSelectorSuite) TestSharePointRestore_Reduce() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *SharePointSelectorSuite) TestSharePointCategory_PathValues() {
|
func (suite *SharePointSelectorSuite) TestSharePointCategory_PathValues() {
|
||||||
pathBuilder := path.Builder{}.Append("dir1", "dir2", "item")
|
|
||||||
|
|
||||||
table := []struct {
|
table := []struct {
|
||||||
name string
|
name string
|
||||||
sc sharePointCategory
|
sc sharePointCategory
|
||||||
@ -350,11 +348,13 @@ func (suite *SharePointSelectorSuite) TestSharePointCategory_PathValues() {
|
|||||||
suite.Run(test.name, func() {
|
suite.Run(test.name, func() {
|
||||||
t := suite.T()
|
t := suite.T()
|
||||||
|
|
||||||
itemPath, err := pathBuilder.ToDataLayerSharePointPath(
|
itemPath, err := path.Build(
|
||||||
"tenant",
|
"tenant",
|
||||||
"site",
|
"site",
|
||||||
|
path.SharePointService,
|
||||||
test.sc.PathType(),
|
test.sc.PathType(),
|
||||||
true)
|
true,
|
||||||
|
"dir1", "dir2", "item")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
ent := details.DetailsEntry{
|
ent := details.DetailsEntry{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user