gomatrix/responses_test.go

88 lines
2.4 KiB
Go
Raw Normal View History

2021-03-25 16:56:59 +00:00
package gomatrix
import (
"encoding/json"
"strings"
"testing"
)
// standard error response example from docs
var testErrorResponse = `{
"errcode": "M_FORBIDDEN",
"error": "something went wrong"
}`
// examples interactive response from docs
var testHasSingleStageTrue = `{
"errcode": "M_FORBIDDEN",
"error": "Invalid password",
"completed": [ "example.type.foo" ],
"flows":[
{
"stages":[ "test.type" ]
},
{
"stages": [ "example.type.foo", "example.type.baz" ]
}
],
"params":{
"example.type.baz":{
"example_key":"foobar"
}
},
"session":"xxxxxx"
}`
var testHasSingleStageFalse = `{
"errcode": "M_FORBIDDEN",
"error": "Invalid password",
"completed": [ "example.type.foo" ],
"flows":[
{
"stages": [ "example.type.foo2", "example.type.baz2" ]
},
{
"stages": [ "example.type.foo", "example.type.baz" ]
}
],
"params":{
"example.type.baz":{
"example_key":"foobar"
}
},
"session":"xxxxxx"
}`
func TestHasSingleStageFlow(t *testing.T) {
var r RespUserInteractive
err := json.NewDecoder(strings.NewReader(testHasSingleStageTrue)).Decode(&r)
if err != nil {
t.Fatalf("TestHasSingleStageFlow: Something went wrong while parsing %s", testHasSingleStageTrue)
}
if !r.HasSingleStageFlow("test.type") {
t.Fatalf("TestHasSingleStageFlow: HasSingleStageFlow('test.type') returned false when true was expected")
}
err = json.NewDecoder(strings.NewReader(testHasSingleStageFalse)).Decode(&r)
if err != nil {
t.Fatalf("TestHasSingleStageFlow: Something went wrong while parsing %s", testHasSingleStageFalse)
}
if r.HasSingleStageFlow("test.type") {
t.Fatalf("TestHasSingleStageFlow: HasSingleStageFlow('test.type') returned true when false was expected")
}
}
func TestRespErrorError(t *testing.T) {
var e RespError
err := json.NewDecoder(strings.NewReader(testErrorResponse)).Decode(&e)
if err != nil {
t.Fatalf("TestRespErrorError: Something went wrong while parsing: %s", testErrorResponse)
}
if !strings.Contains(e.Error(), "M_FORBIDDEN") {
t.Fatal("TestRespErrorError: Error string does not contain expected errorcode 'M_FORBIDDEN'")
}
if !strings.Contains(e.Error(), "something went wrong") {
t.Fatal("TestRespErrorError: Error string does not contain expected error 'something went wrong'")
}
}