mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-26 00:03:09 -06:00
Update types, sytest-whitelist
This commit is contained in:
parent
a53447751b
commit
05e956f9dd
|
|
@ -128,7 +128,7 @@ func (t *StreamingToken) Log(name string) *LogPosition {
|
|||
return l
|
||||
}
|
||||
|
||||
func (t *StreamingToken) String() string {
|
||||
func (t StreamingToken) String() string {
|
||||
posStr := fmt.Sprintf(
|
||||
"s%d_%d_%d_%d",
|
||||
t.PDUPosition, t.TypingPosition,
|
||||
|
|
@ -201,17 +201,16 @@ func (t *StreamingToken) WithUpdates(other StreamingToken) (ret StreamingToken)
|
|||
}
|
||||
|
||||
type TopologyToken struct {
|
||||
Depth StreamPosition
|
||||
PDUPosition StreamPosition
|
||||
ReceiptPosition StreamPosition
|
||||
Depth StreamPosition
|
||||
PDUPosition StreamPosition
|
||||
}
|
||||
|
||||
func (t *TopologyToken) StreamToken() StreamingToken {
|
||||
return NewStreamToken(t.PDUPosition, 0, t.ReceiptPosition, 0, nil)
|
||||
return NewStreamToken(t.PDUPosition, 0, 0, 0, nil)
|
||||
}
|
||||
|
||||
func (t *TopologyToken) String() string {
|
||||
return fmt.Sprintf("t%d_%d_%d", t.Depth, t.PDUPosition, t.ReceiptPosition)
|
||||
func (t TopologyToken) String() string {
|
||||
return fmt.Sprintf("t%d_%d", t.Depth, t.PDUPosition)
|
||||
}
|
||||
|
||||
// Decrement the topology token to one event earlier.
|
||||
|
|
@ -248,24 +247,31 @@ func NewTopologyToken(depth, pduPos StreamPosition) TopologyToken {
|
|||
}
|
||||
|
||||
func NewTopologyTokenFromString(tok string) (token TopologyToken, err error) {
|
||||
if len(tok) < 1 {
|
||||
err = fmt.Errorf("empty topology token")
|
||||
return
|
||||
}
|
||||
if tok[0] != SyncTokenTypeTopology[0] {
|
||||
err = fmt.Errorf("topology token must start with 't'")
|
||||
return
|
||||
}
|
||||
parts := strings.Split(tok[1:], "_")
|
||||
var positions [3]StreamPosition
|
||||
var positions [2]StreamPosition
|
||||
for i, p := range parts {
|
||||
if i > len(positions) {
|
||||
break
|
||||
}
|
||||
if len(p) == 0 {
|
||||
err = fmt.Errorf("empty position %d not allowed", i)
|
||||
return
|
||||
}
|
||||
if pos, perr := strconv.Atoi(p); perr == nil {
|
||||
positions[i] = StreamPosition(pos)
|
||||
}
|
||||
}
|
||||
token = TopologyToken{
|
||||
Depth: positions[0],
|
||||
PDUPosition: positions[1],
|
||||
ReceiptPosition: positions[2],
|
||||
Depth: positions[0],
|
||||
PDUPosition: positions[1],
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -288,6 +294,10 @@ func NewStreamToken(
|
|||
}
|
||||
|
||||
func NewStreamTokenFromString(tok string) (token StreamingToken, err error) {
|
||||
if len(tok) < 1 {
|
||||
err = fmt.Errorf("empty stream token")
|
||||
return
|
||||
}
|
||||
if tok[0] != SyncTokenTypeStream[0] {
|
||||
err = fmt.Errorf("stream token must start with 's'")
|
||||
return
|
||||
|
|
@ -299,6 +309,10 @@ func NewStreamTokenFromString(tok string) (token StreamingToken, err error) {
|
|||
if i > len(positions) {
|
||||
break
|
||||
}
|
||||
if len(p) == 0 {
|
||||
err = fmt.Errorf("empty position %d not allowed", i)
|
||||
return
|
||||
}
|
||||
if pos, perr := strconv.Atoi(p); perr == nil {
|
||||
positions[i] = StreamPosition(pos)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,17 +56,22 @@ func TestNewSyncTokenWithLogs(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestNewSyncTokenFromString(t *testing.T) {
|
||||
shouldPass := map[string]syncToken{
|
||||
"s4_0": NewStreamToken(4, 0, nil).syncToken,
|
||||
"s3_1": NewStreamToken(3, 1, nil).syncToken,
|
||||
"t3_1": NewTopologyToken(3, 1).syncToken,
|
||||
func TestSyncTokens(t *testing.T) {
|
||||
shouldPass := map[string]string{
|
||||
"s4_0_0_0": NewStreamToken(4, 0, 0, 0, nil).String(),
|
||||
"s3_1_0_0": NewStreamToken(3, 1, 0, 0, nil).String(),
|
||||
"s3_1_2_3": NewStreamToken(3, 1, 2, 3, nil).String(),
|
||||
"t3_1": NewTopologyToken(3, 1).String(),
|
||||
}
|
||||
|
||||
for a, b := range shouldPass {
|
||||
if a != b {
|
||||
t.Errorf("expected %q, got %q", a, b)
|
||||
}
|
||||
}
|
||||
|
||||
shouldFail := []string{
|
||||
"",
|
||||
"s_1",
|
||||
"s_",
|
||||
"a3_4",
|
||||
"b",
|
||||
|
|
@ -75,23 +80,18 @@ func TestNewSyncTokenFromString(t *testing.T) {
|
|||
"2",
|
||||
}
|
||||
|
||||
for test, expected := range shouldPass {
|
||||
result, _, err := newSyncTokenFromString(test)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if result.String() != expected.String() {
|
||||
t.Errorf("%s expected %v but got %v", test, expected.String(), result.String())
|
||||
for _, f := range append(shouldFail, "t1_2") {
|
||||
if _, err := NewStreamTokenFromString(f); err == nil {
|
||||
t.Errorf("NewStreamTokenFromString %q should have failed", f)
|
||||
}
|
||||
}
|
||||
|
||||
for _, test := range shouldFail {
|
||||
if _, _, err := newSyncTokenFromString(test); err == nil {
|
||||
t.Errorf("input '%v' should have errored but didn't", test)
|
||||
for _, f := range append(shouldFail, "s1_2_3_4") {
|
||||
if _, err := NewTopologyTokenFromString(f); err == nil {
|
||||
t.Errorf("NewTopologyTokenFromString %q should have failed", f)
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
func TestNewInviteResponse(t *testing.T) {
|
||||
event := `{"auth_events":["$SbSsh09j26UAXnjd3RZqf2lyA3Kw2sY_VZJVZQAV9yA","$EwL53onrLwQ5gL8Dv3VrOOCvHiueXu2ovLdzqkNi3lo","$l2wGmz9iAwevBDGpHT_xXLUA5O8BhORxWIGU1cGi1ZM","$GsWFJLXgdlF5HpZeyWkP72tzXYWW3uQ9X28HBuTztHE"],"content":{"avatar_url":"","displayname":"neilalexander","membership":"invite"},"depth":9,"hashes":{"sha256":"8p+Ur4f8vLFX6mkIXhxI0kegPG7X3tWy56QmvBkExAg"},"origin":"matrix.org","origin_server_ts":1602087113066,"prev_events":["$1v-O6tNwhOZcA8bvCYY-Dnj1V2ZDE58lLPxtlV97S28"],"prev_state":[],"room_id":"!XbeXirGWSPXbEaGokF:matrix.org","sender":"@neilalexander:matrix.org","signatures":{"dendrite.neilalexander.dev":{"ed25519:BMJi":"05KQ5lPw0cSFsE4A0x1z7vi/3cc8bG4WHUsFWYkhxvk/XkXMGIYAYkpNThIvSeLfdcHlbm/k10AsBSKH8Uq4DA"},"matrix.org":{"ed25519:a_RXGa":"jeovuHr9E/x0sHbFkdfxDDYV/EyoeLi98douZYqZ02iYddtKhfB7R3WLay/a+D3V3V7IW0FUmPh/A404x5sYCw"}},"state_key":"@neilalexander:dendrite.neilalexander.dev","type":"m.room.member","unsigned":{"age":2512,"invite_room_state":[{"content":{"join_rule":"invite"},"sender":"@neilalexander:matrix.org","state_key":"","type":"m.room.join_rules"},{"content":{"avatar_url":"mxc://matrix.org/BpDaozLwgLnlNStxDxvLzhPr","displayname":"neilalexander","membership":"join"},"sender":"@neilalexander:matrix.org","state_key":"@neilalexander:matrix.org","type":"m.room.member"},{"content":{"name":"Test room"},"sender":"@neilalexander:matrix.org","state_key":"","type":"m.room.name"}]},"_room_version":"5"}`
|
||||
|
|
|
|||
|
|
@ -503,3 +503,4 @@ Forgetting room does not show up in v2 /sync
|
|||
Can forget room you've been kicked from
|
||||
/whois
|
||||
/joined_members return joined members
|
||||
A next_batch token can be used in the v1 messages API
|
||||
|
|
|
|||
Loading…
Reference in a new issue