mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-18 19:12:35 -05:00
103 lines
2.6 KiB
Go
103 lines
2.6 KiB
Go
package test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
)
|
|
|
|
// User is a user.
|
|
type User struct {
|
|
ID, UserName, Email string
|
|
UID int
|
|
}
|
|
|
|
// Pet is a pet.
|
|
type Pet struct {
|
|
ID, Kind, Color, Name string
|
|
UID int
|
|
}
|
|
|
|
// Account mocks an ocis account.
|
|
type Account struct {
|
|
ID string
|
|
OnPremisesSamAccountName string
|
|
Mail string
|
|
}
|
|
|
|
// Data mock data.
|
|
var Data = map[string][]interface{}{
|
|
"users": {
|
|
User{ID: "abcdefg-123", UserName: "mikey", Email: "mikey@example.com"},
|
|
User{ID: "hijklmn-456", UserName: "frank", Email: "frank@example.com"},
|
|
User{ID: "ewf4ofk-555", UserName: "jacky", Email: "jacky@example.com"},
|
|
User{ID: "rulan54-777", UserName: "jones", Email: "jones@example.com"},
|
|
},
|
|
"pets": {
|
|
Pet{ID: "rebef-123", Kind: "Dog", Color: "Brown", Name: "Waldo"},
|
|
Pet{ID: "wefwe-456", Kind: "Cat", Color: "White", Name: "Snowy"},
|
|
Pet{ID: "goefe-789", Kind: "Hog", Color: "Green", Name: "Dicky"},
|
|
Pet{ID: "xadaf-189", Kind: "Hog", Color: "Green", Name: "Ricky"},
|
|
},
|
|
"accounts": {
|
|
Account{ID: "ba5b6e54-e29d-4b2b-8cc4-0a0b958140d2", Mail: "spooky@skeletons.org", OnPremisesSamAccountName: "MrDootDoot"},
|
|
},
|
|
}
|
|
|
|
// WriteIndexTestData writes mock data to disk.
|
|
func WriteIndexTestData(m map[string][]interface{}, privateKey, dir string) (string, error) {
|
|
rootDir, err := getRootDir(dir)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
err = writeData(m, privateKey, rootDir)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return rootDir, nil
|
|
}
|
|
|
|
// getRootDir allows for some minimal behavior on destination on disk. Testing the cs3 api behavior locally means
|
|
// keeping track of where the cs3 data lives on disk, this function allows for multiplexing whether or not to use a
|
|
// temporary folder or an already defined one.
|
|
func getRootDir(dir string) (string, error) {
|
|
var rootDir string
|
|
var err error
|
|
|
|
if dir != "" {
|
|
rootDir = dir
|
|
} else {
|
|
rootDir, err = CreateTmpDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
}
|
|
return rootDir, nil
|
|
}
|
|
|
|
// writeData writes test data to disk on rootDir location Marshaled as json.
|
|
func writeData(m map[string][]interface{}, privateKey string, rootDir string) error {
|
|
for dirName := range m {
|
|
fileTypePath := path.Join(rootDir, dirName)
|
|
|
|
if err := os.MkdirAll(fileTypePath, 0755); err != nil {
|
|
return err
|
|
}
|
|
for _, u := range m[dirName] {
|
|
data, err := json.Marshal(u)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pkVal := ValueOf(u, privateKey)
|
|
if err := ioutil.WriteFile(path.Join(fileTypePath, pkVal), data, 0600); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|