mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
lua: Add getter/setter tests for bound objects (#326)
Signed-off-by: James Hillyerd <james@hillyerd.com>
This commit is contained in:
54
pkg/extension/luahost/bind_address_test.go
Normal file
54
pkg/extension/luahost/bind_address_test.go
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package luahost
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/mail"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
lua "github.com/yuin/gopher-lua"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMailAddressGetters(t *testing.T) {
|
||||||
|
want := &mail.Address{
|
||||||
|
Name: "Roberto I",
|
||||||
|
Address: "ri@example.com",
|
||||||
|
}
|
||||||
|
script := `
|
||||||
|
assert(addr, "addr should not be nil")
|
||||||
|
|
||||||
|
want = "Roberto I"
|
||||||
|
got = addr.name
|
||||||
|
assert(got == want, string.format("got name %q, want %q", got, want))
|
||||||
|
|
||||||
|
want = "ri@example.com"
|
||||||
|
got = addr.address
|
||||||
|
assert(got == want, string.format("got address %q, want %q", got, want))
|
||||||
|
`
|
||||||
|
|
||||||
|
ls := lua.NewState()
|
||||||
|
registerMailAddressType(ls)
|
||||||
|
ls.SetGlobal("addr", wrapMailAddress(ls, want))
|
||||||
|
require.NoError(t, ls.DoString(script))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMailAddressSetters(t *testing.T) {
|
||||||
|
want := &mail.Address{
|
||||||
|
Name: "Roberto I",
|
||||||
|
Address: "ri@example.com",
|
||||||
|
}
|
||||||
|
script := `
|
||||||
|
assert(addr, "addr should not be nil")
|
||||||
|
|
||||||
|
addr.name = "Roberto I"
|
||||||
|
addr.address = "ri@example.com"
|
||||||
|
`
|
||||||
|
|
||||||
|
got := &mail.Address{}
|
||||||
|
ls := lua.NewState()
|
||||||
|
registerMailAddressType(ls)
|
||||||
|
ls.SetGlobal("addr", wrapMailAddress(ls, got))
|
||||||
|
require.NoError(t, ls.DoString(script))
|
||||||
|
|
||||||
|
assert.Equal(t, want, got)
|
||||||
|
}
|
||||||
91
pkg/extension/luahost/bind_message_test.go
Normal file
91
pkg/extension/luahost/bind_message_test.go
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
package luahost
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/mail"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/inbucket/inbucket/pkg/extension/event"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
lua "github.com/yuin/gopher-lua"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMessageMetadataGetters(t *testing.T) {
|
||||||
|
want := &event.MessageMetadata{
|
||||||
|
Mailbox: "mb1",
|
||||||
|
ID: "id1",
|
||||||
|
From: &mail.Address{Name: "name1", Address: "addr1"},
|
||||||
|
To: []*mail.Address{{Name: "name2", Address: "addr2"}},
|
||||||
|
Date: time.Date(2001, time.February, 3, 4, 5, 6, 0, time.UTC),
|
||||||
|
Subject: "subj1",
|
||||||
|
Size: 42,
|
||||||
|
}
|
||||||
|
script := `
|
||||||
|
assert(msg, "msg should not be nil")
|
||||||
|
|
||||||
|
function assert_eq(got, want)
|
||||||
|
assert(got == want, string.format("got name %q, wanted %q", got, want))
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_eq(msg.mailbox, "mb1")
|
||||||
|
assert_eq(msg.id, "id1")
|
||||||
|
assert_eq(msg.subject, "subj1")
|
||||||
|
assert_eq(msg.size, 42)
|
||||||
|
|
||||||
|
assert_eq(msg.from.name, "name1")
|
||||||
|
assert_eq(msg.from.address, "addr1")
|
||||||
|
|
||||||
|
assert_eq(table.getn(msg.to), 1)
|
||||||
|
assert_eq(msg.to[1].name, "name2")
|
||||||
|
assert_eq(msg.to[1].address, "addr2")
|
||||||
|
|
||||||
|
assert_eq(msg.date, 981173106)
|
||||||
|
`
|
||||||
|
|
||||||
|
ls := lua.NewState()
|
||||||
|
registerMessageMetadataType(ls)
|
||||||
|
registerMailAddressType(ls)
|
||||||
|
ls.SetGlobal("msg", wrapMessageMetadata(ls, want))
|
||||||
|
require.NoError(t, ls.DoString(script))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMessageMetadataSetters(t *testing.T) {
|
||||||
|
want := &event.MessageMetadata{
|
||||||
|
Mailbox: "mb1",
|
||||||
|
ID: "id1",
|
||||||
|
From: &mail.Address{Name: "name1", Address: "addr1"},
|
||||||
|
To: []*mail.Address{{Name: "name2", Address: "addr2"}},
|
||||||
|
Date: time.Date(2001, time.February, 3, 4, 5, 6, 0, time.UTC),
|
||||||
|
Subject: "subj1",
|
||||||
|
Size: 42,
|
||||||
|
}
|
||||||
|
script := `
|
||||||
|
assert(msg, "msg should not be nil")
|
||||||
|
|
||||||
|
msg.mailbox = "mb1"
|
||||||
|
msg.id = "id1"
|
||||||
|
msg.subject = "subj1"
|
||||||
|
msg.size = 42
|
||||||
|
|
||||||
|
msg.from = address.new("name1", "addr1")
|
||||||
|
msg.to = { address.new("name2", "addr2") }
|
||||||
|
|
||||||
|
msg.date = 981173106
|
||||||
|
`
|
||||||
|
|
||||||
|
got := &event.MessageMetadata{}
|
||||||
|
ls := lua.NewState()
|
||||||
|
registerMessageMetadataType(ls)
|
||||||
|
registerMailAddressType(ls)
|
||||||
|
ls.SetGlobal("msg", wrapMessageMetadata(ls, got))
|
||||||
|
require.NoError(t, ls.DoString(script))
|
||||||
|
|
||||||
|
// Timezones will cause a naive comparison to fail.
|
||||||
|
assert.Equal(t, want.Date.Unix(), got.Date.Unix())
|
||||||
|
now := time.Now()
|
||||||
|
want.Date = now
|
||||||
|
got.Date = now
|
||||||
|
|
||||||
|
assert.Equal(t, want, got)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user