123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- package plugin_entities
- import (
- "testing"
- "time"
- "github.com/langgenius/dify-plugin-daemon/internal/utils/parser"
- "github.com/langgenius/dify-plugin-daemon/pkg/entities/constants"
- "github.com/langgenius/dify-plugin-daemon/pkg/entities/manifest_entities"
- )
- func preparePluginDeclaration() PluginDeclaration {
- return PluginDeclaration{
- PluginDeclarationWithoutAdvancedFields: PluginDeclarationWithoutAdvancedFields{
- Version: "0.0.1",
- Type: manifest_entities.PluginType,
- Description: I18nObject{
- EnUS: "test",
- },
- Name: "test",
- Icon: "test.svg",
- Label: I18nObject{
- EnUS: "test",
- },
- Author: "test",
- CreatedAt: time.Now(),
- Resource: PluginResourceRequirement{
- Memory: 1,
- Permission: &PluginPermissionRequirement{
- Tool: &PluginPermissionToolRequirement{
- Enabled: true,
- },
- Model: &PluginPermissionModelRequirement{
- Enabled: true,
- },
- Node: &PluginPermissionNodeRequirement{
- Enabled: true,
- },
- Storage: &PluginPermissionStorageRequirement{
- Enabled: true,
- Size: 1024,
- },
- },
- },
- Plugins: PluginExtensions{},
- Meta: PluginMeta{
- Version: "0.0.1",
- Arch: []constants.Arch{
- constants.AMD64,
- },
- Runner: PluginRunner{
- Language: constants.Python,
- Version: "3.12",
- Entrypoint: "main",
- },
- },
- },
- }
- }
- func TestPluginDeclarationFullTest(t *testing.T) {
- declaration := preparePluginDeclaration()
- declarationBytes := parser.MarshalJsonBytes(declaration)
- // unmarshal
- newDeclaration, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err != nil {
- t.Errorf("failed to unmarshal declaration: %s", err.Error())
- return
- }
- if newDeclaration.Version != declaration.Version {
- t.Errorf("version not equal")
- return
- }
- if newDeclaration.Type != declaration.Type {
- t.Errorf("type not equal")
- return
- }
- if newDeclaration.Name != declaration.Name {
- t.Errorf("name not equal")
- return
- }
- if newDeclaration.Author != declaration.Author {
- t.Errorf("author not equal")
- return
- }
- if newDeclaration.Resource.Memory != declaration.Resource.Memory {
- t.Errorf("memory not equal")
- return
- }
- if newDeclaration.Resource.Permission == nil {
- t.Errorf("permission is nil")
- return
- }
- if newDeclaration.Resource.Permission.Tool == nil {
- t.Errorf("tool permission is nil")
- return
- }
- if newDeclaration.Resource.Permission.Node == nil {
- t.Errorf("node permission is nil")
- return
- }
- if newDeclaration.Resource.Permission.Storage == nil {
- t.Errorf("storage permission is nil")
- return
- }
- }
- func TestPluginDeclarationIncorrectVersion(t *testing.T) {
- declaration := preparePluginDeclaration()
- declaration.Version = "1"
- declarationBytes := parser.MarshalJsonBytes(declaration)
- _, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate version")
- return
- }
- }
- func TestPluginUnsupportedLanguage(t *testing.T) {
- declaration := preparePluginDeclaration()
- declaration.Meta.Runner.Language = "test"
- declarationBytes := parser.MarshalJsonBytes(declaration)
- _, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate language")
- return
- }
- }
- func TestPluginUnsupportedArch(t *testing.T) {
- declaration := preparePluginDeclaration()
- declaration.Meta.Arch[0] = constants.Arch("test")
- declarationBytes := parser.MarshalJsonBytes(declaration)
- _, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate arch")
- return
- }
- }
- func TestPluginStorageSizeTooSmallOrTooLarge(t *testing.T) {
- declaration := preparePluginDeclaration()
- declaration.Resource.Permission.Storage.Size = 1023
- declarationBytes := parser.MarshalJsonBytes(declaration)
- _, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate storage size")
- return
- }
- declaration.Resource.Permission.Storage.Size = 1073741825
- declarationBytes = parser.MarshalJsonBytes(declaration)
- _, err = parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate storage size")
- return
- }
- }
- func TestPluginDeclarationIncorrectType(t *testing.T) {
- declaration := preparePluginDeclaration()
- declaration.Type = "test"
- declarationBytes := parser.MarshalJsonBytes(declaration)
- _, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate type")
- return
- }
- }
- func TestPluginDeclarationIncorrectName(t *testing.T) {
- declaration := preparePluginDeclaration()
- declaration.Name = ""
- declarationBytes := parser.MarshalJsonBytes(declaration)
- _, err := parser.UnmarshalJsonBytes[PluginDeclaration](declarationBytes)
- if err == nil {
- t.Errorf("failed to validate name")
- return
- }
- }
|