package architecture import ( "go/parser" "go/token" "io/fs" "path/filepath" "strconv" "strings" "testing" ) // SXCHNGE-owned gRPC and NATS are allowed. Provider access is HTTP only. Local Mongo repositories belong to SXCHNGE. func TestNoSendicoRuntimeOrPrivateTransportImports(t *testing.T) { err := filepath.WalkDir("../..", func(path string, d fs.DirEntry, err error) error { if err != nil { return err } if d.IsDir() || filepath.Ext(path) != ".go" { return nil } f, err := parser.ParseFile(token.NewFileSet(), path, nil, parser.ImportsOnly) if err != nil { return err } for _, im := range f.Imports { name, err := strconv.Unquote(im.Path.Value) if err != nil { return err } if strings.HasPrefix(filepath.ToSlash(path), "../../shared/") && strings.HasPrefix(name, "git.sendico.io/tech/sxchnge/") && !strings.HasPrefix(name, "git.sendico.io/tech/sxchnge/shared/") { t.Errorf("shared library imports an executable module: %s in %s", name, path) } for _, blocked := range []string{"github.com/tech/sendico/", "/pkg/discovery", "/pkg/proto/", "github.com/casbin/", "/pkg/auth", "/storage/organization", "/mongo/policiesdb", "/mongo/rolesdb", "/mongo/invitationdb"} { if strings.Contains(name, blocked) { t.Errorf("%s imports private provider transport or shared runtime: %s", path, name) } } } return nil }) if err != nil { t.Fatal(err) } }