mirror of https://github.com/matrix-org/gomatrix
88 lines
2.4 KiB
Go
88 lines
2.4 KiB
Go
|
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'")
|
||
|
}
|
||
|
}
|