diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/render.go | 4 | ||||
| -rw-r--r-- | server/server_test.go | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/server/render.go b/server/render.go index c23df78..be3ba01 100644 --- a/server/render.go +++ b/server/render.go @@ -81,7 +81,7 @@ func ParsePayload(raw []byte, maxSessions int) (*Payload, []byte, error) { return nil, nil, fmt.Errorf("payload: session %d: no c", i) } for j, b := range s.C { - if b.R != "u" && b.R != "a" && b.R != "t" { + if b.R != "u" && b.R != "a" && b.R != "t" && b.R != "c" { return nil, nil, fmt.Errorf("payload: session %d block %d: bad r", i, j) } } @@ -187,6 +187,8 @@ func RenderText(p *Payload) []byte { prev := "" for _, c := range s.C { switch c.R { + case "c": + b.WriteString("\n--- context compacted here ---\n") case "t": if prev != "t" { b.WriteString("\n") diff --git a/server/server_test.go b/server/server_test.go index 72f5b9c..d19c5e8 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -117,6 +117,16 @@ func TestCreateAndRead(t *testing.T) { } } +func TestCompactionBlock(t *testing.T) { + h := newHarness(t, nil) + withC := strings.Replace(session, `"c":[`, `"c":[{"r":"c","x":"earlier summary"},`, 1) + r := h.create(`{"payload":` + payload(withC) + `}`) + txt := h.do("GET", "/share/"+r.ID+".txt", "", "").Body.String() + if !strings.Contains(txt, "--- context compacted here ---") || strings.Contains(txt, "earlier summary") { + t.Fatalf("txt: %s", txt) + } +} + func TestUpdateAndDeleteNeedTheSecret(t *testing.T) { h := newHarness(t, nil) r := h.create(`{"payload":` + payload() + `}`) |