Skip to content
This repository was archived by the owner on Feb 21, 2024. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions responses_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
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'")
}
}