diff --git a/events_test.go b/events_test.go deleted file mode 100644 index 3ac5cca..0000000 --- a/events_test.go +++ /dev/null @@ -1,110 +0,0 @@ -package gomatrix - -import ( - "encoding/json" - "strings" - "testing" -) - -// example events from docs -var testEvents = map[string]string{ - "withFields": `{ - "content": { - "body": "eventbody123", - "msgtype": "m.text", - "format": "org.matrix.custom.html", - "formatted_body": "This is an example text message" - }, - "type": "m.room.message", - "event_id": "$143273582443PhrSn:example.org", - "room_id": "!726s6s6q:example.com", - "sender": "@example:example.org", - "origin_server_ts": 1432735824653, - "unsigned": { - "age": 1234 - } - }`, - - "withoutFields": `{ - "content": { - "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF", - "displayname": "Alice Margatroid", - "membership": "join" - }, - "event_id": "$143273582443PhrSn:example.org", - "origin_server_ts": 1432735824653, - "room_id": "!jEsUZKDJdhlrceRyVU:example.org", - "sender": "@example:example.org", - "state_key": "@alice:example.org", - "type": "m.room.member", - "unsigned": { - "age": 1234 - } - }`, -} - -func TestEventWithBody(t *testing.T) { - var e Event - err := json.NewDecoder(strings.NewReader(testEvents["withFields"])).Decode(&e) - if err != nil { - t.Fatalf("TestFetchEventBody: Something went wrong while parsing: %s", testEvents["withFields"]) - } - body, ok := e.Body() - if !ok || body != "eventbody123" { - t.Fatal("TestEventWithBody: Failed to fetch value of 'body' key in event content") - } -} - -func TestEventWithoutBody(t *testing.T) { - var e Event - err := json.NewDecoder(strings.NewReader(testEvents["withoutFields"])).Decode(&e) - if err != nil { - t.Fatalf("TestEventWithoutBody: Something went wrong while parsing: %s", testEvents["withFields"]) - } - body, ok := e.Body() - if ok || body != "" { - t.Fatal("TestEventWithoutBody: Failed on 'Event.Body' call for event without a 'body' key") - } -} - -func TestEventWithMessageType(t *testing.T) { - var e Event - err := json.NewDecoder(strings.NewReader(testEvents["withFields"])).Decode(&e) - if err != nil { - t.Fatalf("TestEventWithMessageType: Something went wrong while parsing: %s", testEvents["withFields"]) - } - msgtype, ok := e.MessageType() - if !ok || msgtype != "m.text" { - t.Fatal("TestEventWithMessageType: Failed to fetch value of 'msgtype' key in event content") - } -} - -func TestEventWithoutMessageType(t *testing.T) { - var e Event - err := json.NewDecoder(strings.NewReader(testEvents["withoutFields"])).Decode(&e) - if err != nil { - t.Fatalf("TestEventWithMessageType: Something went wrong while parsing: %s", testEvents["withFields"]) - } - msgtype, ok := e.MessageType() - if ok || msgtype != "" { - t.Fatal("TestEventWithoutBody: Failed on 'Event.Body' call for event without a 'msgtype' key") - } -} - -var testHTML = `
a

bc

d

efghi

j

k
lmno

pqrs
` - -func TestGetHTMLMessage(t *testing.T) { - msg := GetHTMLMessage("m.text", testHTML) - if expected := "abcdefghijklmnopqrs"; msg.Body != expected { - t.Fatalf("TestGetHTMLMessage: got '%s', expected '%s'", msg.Body, expected) - } - if msg.FormattedBody != testHTML { - t.Fatalf("TestGetHTMLMessage: got '%s', expected '%s'", msg.FormattedBody, testHTML) - } - if msg.MsgType != "m.text" { - t.Fatalf("TestGetHTMLMessage: got '%s', expected 'm.text'", msg.FormattedBody) - } - if expected := "org.matrix.custom.html"; msg.Format != expected { - t.Fatalf("TestGetHTMLMessage: got '%s', expected '%s'", msg.Format, expected) - } -} diff --git a/filter_test.go b/filter_test.go new file mode 100644 index 0000000..7075705 --- /dev/null +++ b/filter_test.go @@ -0,0 +1,89 @@ +package gomatrix + +import ( + "encoding/json" + "reflect" + "strings" + "testing" +) + +// sample from docs +var testFilter = ` +{ + "room": { + "state": { + "types": [ + "m.room.*" + ], + "not_rooms": [ + "!726s6s6q:example.com" + ] + }, + "timeline": { + "limit": 10, + "types": [ + "m.room.message" + ], + "not_rooms": [ + "!726s6s6q:example.com" + ], + "not_senders": [ + "@spam:example.com" + ] + }, + "ephemeral": { + "types": [ + "m.receipt", + "m.typing" + ], + "not_rooms": [ + "!726s6s6q:example.com" + ], + "not_senders": [ + "@spam:example.com" + ] + } + }, + "presence": { + "types": [ + "m.presence" + ], + "not_senders": [ + "@alice:example.com" + ] + }, + "event_format": "client", + "event_fields": [ + "type", + "content", + "sender" + ] +}` + +func TestFilterValidate(t *testing.T) { + var f Filter + err := json.NewDecoder(strings.NewReader(testFilter)).Decode(&f) + if err != nil { + t.Fatalf("TestFilterValidate: Failed to parse %s", testFilter) + } + // test validadtion success + if err = f.Validate(); err != nil { + t.Fatalf("TestFilterValidate: Filter validation has failed, event_format: '%s'", f.EventFormat) + } + // test validation fail + f.EventFormat = "unkown" + err = f.Validate() + if err == nil { + t.Fatalf("TestFilterValidate: Filter validation false positive, event_format: '%s'", f.EventFormat) + } +} + +func TestDefaultFilter(t *testing.T) { + defaultFilter := DefaultFilter() + if reflect.TypeOf(defaultFilter) != reflect.TypeOf(Filter{}) { + t.Fatal("TestDefaultFilter: Invalid type for default filter") + } + if defaultFilter.EventFormat != "client" { + t.Fatalf("TestDefaultFilter: expected EventFormat %s, got %s", "client", defaultFilter.EventFormat) + } +}