mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-08 00:22:14 +01:00
196 lines
4.8 KiB
Go
196 lines
4.8 KiB
Go
package gotenberg
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewContext(t *testing.T) {
|
|
if NewContext(ParsedFlags{}, nil) == nil {
|
|
t.Error("expected a non-nil value")
|
|
}
|
|
}
|
|
|
|
func TestContext_ParsedFlags(t *testing.T) {
|
|
ctx := NewContext(ParsedFlags{}, nil)
|
|
|
|
actual := ctx.ParsedFlags()
|
|
expect := ParsedFlags{}
|
|
|
|
if actual != expect {
|
|
t.Errorf("expected %v but got %v", expect, actual)
|
|
}
|
|
}
|
|
|
|
func TestContext_Module(t *testing.T) {
|
|
for i, tc := range []struct {
|
|
mods []ModuleDescriptor
|
|
kind interface{}
|
|
expectErr bool
|
|
}{
|
|
{
|
|
mods: func() []ModuleDescriptor {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return errors.New("foo") }
|
|
|
|
return []ModuleDescriptor{mod.Descriptor()}
|
|
}(),
|
|
kind: new(Provisioner),
|
|
expectErr: true,
|
|
},
|
|
{
|
|
mods: func() []ModuleDescriptor {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return nil }
|
|
|
|
return []ModuleDescriptor{mod.Descriptor(), mod.Descriptor()}
|
|
}(),
|
|
kind: new(Provisioner),
|
|
expectErr: true,
|
|
},
|
|
{
|
|
mods: func() []ModuleDescriptor {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return nil }
|
|
|
|
return []ModuleDescriptor{mod.Descriptor()}
|
|
}(),
|
|
kind: new(Provisioner),
|
|
},
|
|
} {
|
|
|
|
ctx := NewContext(ParsedFlags{}, tc.mods)
|
|
_, err := ctx.Module(tc.kind)
|
|
|
|
if tc.expectErr && err == nil {
|
|
t.Errorf("test %d: expected error but got: %v", i, err)
|
|
}
|
|
|
|
if !tc.expectErr && err != nil {
|
|
t.Errorf("test %d: expected no error but got: %v", i, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestContext_Modules(t *testing.T) {
|
|
for i, tc := range []struct {
|
|
mods []ModuleDescriptor
|
|
kind interface{}
|
|
expectErr bool
|
|
}{
|
|
{
|
|
mods: func() []ModuleDescriptor {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return errors.New("foo") }
|
|
|
|
return []ModuleDescriptor{mod.Descriptor()}
|
|
}(),
|
|
kind: new(Provisioner),
|
|
expectErr: true,
|
|
},
|
|
{
|
|
mods: func() []ModuleDescriptor {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return nil }
|
|
|
|
return []ModuleDescriptor{mod.Descriptor(), mod.Descriptor()}
|
|
}(),
|
|
kind: new(Provisioner),
|
|
},
|
|
{
|
|
mods: func() []ModuleDescriptor {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return nil }
|
|
|
|
return []ModuleDescriptor{mod.Descriptor()}
|
|
}(),
|
|
kind: new(Provisioner),
|
|
},
|
|
} {
|
|
|
|
ctx := NewContext(ParsedFlags{}, tc.mods)
|
|
_, err := ctx.Modules(tc.kind)
|
|
|
|
if tc.expectErr && err == nil {
|
|
t.Errorf("test %d: expected error but got: %v", i, err)
|
|
}
|
|
|
|
if !tc.expectErr && err != nil {
|
|
t.Errorf("test %d: expected no error but got: %v", i, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestContext_loadModule(t *testing.T) {
|
|
for i, tc := range []struct {
|
|
instance interface{}
|
|
expectErr bool
|
|
}{
|
|
{
|
|
instance: func() interface{} {
|
|
mod := struct{ ProtoProvisioner }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.provision = func(ctx *Context) error { return errors.New("foo") }
|
|
|
|
return mod
|
|
}(),
|
|
expectErr: true,
|
|
},
|
|
{
|
|
instance: func() interface{} {
|
|
mod := struct{ ProtoValidator }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.validate = func() error { return errors.New("foo") }
|
|
|
|
return mod
|
|
}(),
|
|
expectErr: true,
|
|
},
|
|
{
|
|
instance: func() interface{} {
|
|
mod := struct{ ProtoValidator }{}
|
|
mod.descriptor = func() ModuleDescriptor {
|
|
return ModuleDescriptor{ID: "foo", New: func() Module { return mod }}
|
|
}
|
|
mod.validate = func() error { return nil }
|
|
|
|
return mod
|
|
}(),
|
|
},
|
|
} {
|
|
|
|
ctx := NewContext(ParsedFlags{}, nil)
|
|
err := ctx.loadModule("foo", tc.instance)
|
|
|
|
if tc.expectErr && err == nil {
|
|
t.Errorf("test %d: expected error but got: %v", i, err)
|
|
}
|
|
|
|
if !tc.expectErr && err != nil {
|
|
t.Errorf("test %d: expected no error but got: %v", i, err)
|
|
}
|
|
}
|
|
}
|