mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
Fix pushrule tests. Fixes #8
This commit is contained in:
parent
70272a0e19
commit
676a8e21d9
5 changed files with 64 additions and 59 deletions
|
|
@ -25,7 +25,7 @@ import (
|
|||
)
|
||||
|
||||
func TestPushCondition_Match_DisplayName(t *testing.T) {
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgText,
|
||||
Body: "tulir: test mention",
|
||||
})
|
||||
|
|
@ -34,7 +34,7 @@ func TestPushCondition_Match_DisplayName(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPushCondition_Match_DisplayName_Fail(t *testing.T) {
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgText,
|
||||
Body: "not a mention",
|
||||
})
|
||||
|
|
@ -44,7 +44,7 @@ func TestPushCondition_Match_DisplayName_Fail(t *testing.T) {
|
|||
|
||||
func TestPushCondition_Match_DisplayName_FailsOnEmptyRoom(t *testing.T) {
|
||||
emptyRoom := newFakeRoom(0)
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgText,
|
||||
Body: "tulir: this room doesn't have the owner Member available, so it fails.",
|
||||
})
|
||||
|
|
|
|||
|
|
@ -26,11 +26,9 @@ import (
|
|||
|
||||
func TestPushCondition_Match_KindEvent_MsgType(t *testing.T) {
|
||||
condition := newMatchPushCondition("content.msgtype", "m.emote")
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
Raw: map[string]interface{}{
|
||||
"msgtype": "m.emote",
|
||||
"body": "tests gomuks pushconditions",
|
||||
},
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "tests gomuks pushconditions",
|
||||
})
|
||||
assert.True(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
|
@ -38,60 +36,58 @@ func TestPushCondition_Match_KindEvent_MsgType(t *testing.T) {
|
|||
func TestPushCondition_Match_KindEvent_MsgType_Fail(t *testing.T) {
|
||||
condition := newMatchPushCondition("content.msgtype", "m.emote")
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
Raw: map[string]interface{}{
|
||||
"msgtype": "m.text",
|
||||
"body": "I'm testing gomuks pushconditions",
|
||||
},
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgText,
|
||||
Body: "I'm testing gomuks pushconditions",
|
||||
})
|
||||
assert.False(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_EventType(t *testing.T) {
|
||||
condition := newMatchPushCondition("type", "m.room.foo")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), &struct{}{})
|
||||
assert.True(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_EventType_IllegalGlob(t *testing.T) {
|
||||
condition := newMatchPushCondition("type", "m.room.invalid_glo[b")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.invalid_glob"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.invalid_glob"), &struct{}{})
|
||||
assert.False(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_Sender_Fail(t *testing.T) {
|
||||
condition := newMatchPushCondition("sender", "@foo:maunium.net")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), &struct{}{})
|
||||
assert.False(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_RoomID(t *testing.T) {
|
||||
condition := newMatchPushCondition("room_id", "!fakeroom:maunium.net")
|
||||
evt := newFakeEvent(event.NewEventType(""), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType(""), &struct{}{})
|
||||
assert.True(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_BlankStateKey(t *testing.T) {
|
||||
condition := newMatchPushCondition("state_key", "")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), &struct{}{})
|
||||
assert.True(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_BlankStateKey_Fail(t *testing.T) {
|
||||
condition := newMatchPushCondition("state_key", "not blank")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), &struct{}{})
|
||||
assert.False(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_NonBlankStateKey(t *testing.T) {
|
||||
condition := newMatchPushCondition("state_key", "*:maunium.net")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), &struct{}{})
|
||||
evt.StateKey = (*string)(&evt.Sender)
|
||||
assert.True(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
func TestPushCondition_Match_KindEvent_UnknownKey(t *testing.T) {
|
||||
condition := newMatchPushCondition("non-existent key", "doesn't affect anything")
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), event.Content{})
|
||||
evt := newFakeEvent(event.NewEventType("m.room.foo"), &struct{}{})
|
||||
assert.False(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package pushrules_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
|
|
@ -45,8 +46,14 @@ func init() {
|
|||
ID: "$123:maunium.net",
|
||||
RoomID: "!fakeroom:maunium.net",
|
||||
Content: event.Content{
|
||||
MsgType: event.MsgText,
|
||||
Body: "test",
|
||||
Raw: map[string]interface{}{
|
||||
"msgtype": "m.text",
|
||||
"body": "test",
|
||||
},
|
||||
Parsed: &event.MessageEventContent{
|
||||
MsgType: event.MsgText,
|
||||
Body: "test",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +63,21 @@ func init() {
|
|||
}
|
||||
}
|
||||
|
||||
func newFakeEvent(evtType event.Type, content event.Content) *event.Event {
|
||||
func newFakeEvent(evtType event.Type, parsed interface{}) *event.Event {
|
||||
data, err := json.Marshal(parsed)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var raw map[string]interface{}
|
||||
err = json.Unmarshal(data, &raw)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
content := event.Content{
|
||||
VeryRaw: data,
|
||||
Raw: raw,
|
||||
Parsed: parsed,
|
||||
}
|
||||
return &event.Event{
|
||||
Sender: "@tulir:maunium.net",
|
||||
Type: evtType,
|
||||
|
|
@ -86,23 +107,23 @@ func TestPushCondition_Match_InvalidKind(t *testing.T) {
|
|||
condition := &pushrules.PushCondition{
|
||||
Kind: pushrules.PushCondKind("invalid"),
|
||||
}
|
||||
evt := newFakeEvent(event.Type{Type: "m.room.foobar"}, event.Content{})
|
||||
evt := newFakeEvent(event.Type{Type: "m.room.foobar"}, &struct{}{})
|
||||
assert.False(t, condition.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
type FakeRoom struct {
|
||||
members map[string]*event.Member
|
||||
members map[string]*event.MemberEventContent
|
||||
owner string
|
||||
}
|
||||
|
||||
func newFakeRoom(memberCount int) *FakeRoom {
|
||||
room := &FakeRoom{
|
||||
owner: "@tulir:maunium.net",
|
||||
members: make(map[string]*event.Member),
|
||||
members: make(map[string]*event.MemberEventContent),
|
||||
}
|
||||
|
||||
if memberCount >= 1 {
|
||||
room.members["@tulir:maunium.net"] = &event.Member{
|
||||
room.members["@tulir:maunium.net"] = &event.MemberEventContent{
|
||||
Membership: event.MembershipJoin,
|
||||
Displayname: "tulir",
|
||||
}
|
||||
|
|
@ -110,7 +131,7 @@ func newFakeRoom(memberCount int) *FakeRoom {
|
|||
|
||||
for i := 0; i < memberCount-1; i++ {
|
||||
mxid := fmt.Sprintf("@extrauser_%d:matrix.org", i)
|
||||
room.members[mxid] = &event.Member{
|
||||
room.members[mxid] = &event.MemberEventContent{
|
||||
Membership: event.MembershipJoin,
|
||||
Displayname: fmt.Sprintf("Extra User %d", i),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,11 +64,11 @@ func TestPushRuleArray_GetActions_FirstMatchReturns(t *testing.T) {
|
|||
|
||||
rules := pushrules.PushRuleArray{rule1, rule2, rule3}
|
||||
|
||||
event := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
assert.Equal(t, rules.GetActions(blankTestRoom, event), actions2)
|
||||
assert.Equal(t, rules.GetActions(blankTestRoom, evt), actions2)
|
||||
}
|
||||
|
||||
func TestPushRuleArray_GetActions_NoMatchesIsNil(t *testing.T) {
|
||||
|
|
@ -110,7 +110,7 @@ func TestPushRuleArray_GetActions_NoMatchesIsNil(t *testing.T) {
|
|||
|
||||
rules := pushrules.PushRuleArray{rule1, rule2, rule3}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
@ -159,7 +159,7 @@ func TestPushRuleMap_GetActions_RoomRuleExists(t *testing.T) {
|
|||
Type: pushrules.RoomRule,
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
@ -197,7 +197,7 @@ func TestPushRuleMap_GetActions_RoomRuleDoesntExist(t *testing.T) {
|
|||
Type: pushrules.RoomRule,
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
@ -246,7 +246,7 @@ func TestPushRuleMap_GetActions_SenderRuleExists(t *testing.T) {
|
|||
Type: pushrules.SenderRule,
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
|
|||
|
|
@ -34,11 +34,7 @@ func TestPushRule_Match_Conditions(t *testing.T) {
|
|||
Conditions: []*pushrules.PushCondition{cond1, cond2},
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
Raw: map[string]interface{}{
|
||||
"msgtype": "m.emote",
|
||||
"body": "is testing pushrules",
|
||||
},
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
@ -54,11 +50,7 @@ func TestPushRule_Match_Conditions_Disabled(t *testing.T) {
|
|||
Conditions: []*pushrules.PushCondition{cond1, cond2},
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
Raw: map[string]interface{}{
|
||||
"msgtype": "m.emote",
|
||||
"body": "is testing pushrules",
|
||||
},
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
@ -74,11 +66,7 @@ func TestPushRule_Match_Conditions_FailIfOneFails(t *testing.T) {
|
|||
Conditions: []*pushrules.PushCondition{cond1, cond2},
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
Raw: map[string]interface{}{
|
||||
"msgtype": "m.text",
|
||||
"body": "I'm testing pushrules",
|
||||
},
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgText,
|
||||
Body: "I'm testing pushrules",
|
||||
})
|
||||
|
|
@ -92,7 +80,7 @@ func TestPushRule_Match_Content(t *testing.T) {
|
|||
Pattern: "is testing*",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is testing pushrules",
|
||||
})
|
||||
|
|
@ -106,7 +94,7 @@ func TestPushRule_Match_Content_Fail(t *testing.T) {
|
|||
Pattern: "is testing*",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is not testing pushrules",
|
||||
})
|
||||
|
|
@ -120,7 +108,7 @@ func TestPushRule_Match_Content_ImplicitGlob(t *testing.T) {
|
|||
Pattern: "testing",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "is not testing pushrules",
|
||||
})
|
||||
|
|
@ -134,7 +122,7 @@ func TestPushRule_Match_Content_IllegalGlob(t *testing.T) {
|
|||
Pattern: "this is not a valid glo[b",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{
|
||||
evt := newFakeEvent(event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgEmote,
|
||||
Body: "this is not a valid glob",
|
||||
})
|
||||
|
|
@ -148,7 +136,7 @@ func TestPushRule_Match_Room(t *testing.T) {
|
|||
RuleID: "!fakeroom:maunium.net",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{})
|
||||
evt := newFakeEvent(event.EventMessage, &struct{}{})
|
||||
assert.True(t, rule.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
|
|
@ -159,7 +147,7 @@ func TestPushRule_Match_Room_Fail(t *testing.T) {
|
|||
RuleID: "!otherroom:maunium.net",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{})
|
||||
evt := newFakeEvent(event.EventMessage, &struct{}{})
|
||||
assert.False(t, rule.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
|
|
@ -170,7 +158,7 @@ func TestPushRule_Match_Sender(t *testing.T) {
|
|||
RuleID: "@tulir:maunium.net",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{})
|
||||
evt := newFakeEvent(event.EventMessage, &struct{}{})
|
||||
assert.True(t, rule.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
|
|
@ -181,7 +169,7 @@ func TestPushRule_Match_Sender_Fail(t *testing.T) {
|
|||
RuleID: "@someone:matrix.org",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{})
|
||||
evt := newFakeEvent(event.EventMessage, &struct{}{})
|
||||
assert.False(t, rule.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
||||
|
|
@ -192,6 +180,6 @@ func TestPushRule_Match_UnknownTypeAlwaysFail(t *testing.T) {
|
|||
RuleID: "@someone:matrix.org",
|
||||
}
|
||||
|
||||
evt := newFakeEvent(event.EventMessage, event.Content{})
|
||||
evt := newFakeEvent(event.EventMessage, &struct{}{})
|
||||
assert.False(t, rule.Match(blankTestRoom, evt))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue