mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-04 10:13:53 +08:00
113 lines
2.3 KiB
Go
113 lines
2.3 KiB
Go
package access
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"sort"
|
|
"strings"
|
|
"testing"
|
|
|
|
yaml "gopkg.in/yaml.v3"
|
|
|
|
"github.com/eolinker/go-common/access"
|
|
)
|
|
|
|
func TestPrintlnRoleAccess(t *testing.T) {
|
|
system, has := access.GetPermit("system")
|
|
if has {
|
|
keys := system.AccessKeys()
|
|
sort.Strings(keys)
|
|
for _, k := range keys {
|
|
fmt.Printf("- %s\n", k)
|
|
}
|
|
}
|
|
team, has := access.GetPermit("team")
|
|
if has {
|
|
keys := team.AccessKeys()
|
|
sort.Strings(keys)
|
|
for _, k := range keys {
|
|
fmt.Printf("- %s\n", k)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPrintlnAccessAPIs(t *testing.T) {
|
|
builder := &strings.Builder{}
|
|
printAccesses("system", builder)
|
|
printAccesses("team", builder)
|
|
os.WriteFile("permit.yaml", []byte(builder.String()), 0644)
|
|
}
|
|
|
|
func printAccesses(group string, builder *strings.Builder) {
|
|
handler, has := access.GetPermit(group)
|
|
if has {
|
|
keys := handler.AccessKeys()
|
|
sort.Strings(keys)
|
|
builder.WriteString(fmt.Sprintf("%s:\n", group))
|
|
for _, key := range keys {
|
|
apis, err := handler.GetPermits(key)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
builder.WriteString(fmt.Sprintf(" %s:\n", key))
|
|
for _, api := range apis {
|
|
builder.WriteString(fmt.Sprintf(" - %s\n", api))
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func TestPrintName(t *testing.T) {
|
|
result := make(map[string]string)
|
|
data, err := os.ReadFile("access.yaml")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
tmp := make(map[string]interface{})
|
|
err = yaml.Unmarshal(data, &tmp)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
recursionReadKey("name", tmp, result)
|
|
data, err = os.ReadFile("role.yaml")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
tmp = make(map[string]interface{})
|
|
err = yaml.Unmarshal(data, &tmp)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
recursionReadKey("name", tmp, result)
|
|
r, err := json.MarshalIndent(result, "", " ")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
fmt.Println(string(r))
|
|
|
|
}
|
|
|
|
// 递归读取文件中name字段
|
|
func recursionReadKey(key string, data map[string]interface{}, result map[string]string) {
|
|
for k, v := range data {
|
|
switch t := v.(type) {
|
|
case string:
|
|
if k == key {
|
|
result[strings.ToLower(t)] = ""
|
|
}
|
|
case map[string]interface{}:
|
|
recursionReadKey(key, t, result)
|
|
case []interface{}:
|
|
for _, n := range t {
|
|
switch tt := n.(type) {
|
|
case map[string]interface{}:
|
|
recursionReadKey(key, tt, result)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|