(t *testing.T)
| 194 | } |
| 195 | |
| 196 | func TestGetObjectDigestMismatch(t *testing.T) { |
| 197 | s := RunBasicJetStreamServer() |
| 198 | defer shutdownJSServerAndRemoveStorage(t, s) |
| 199 | |
| 200 | nc, js := jsClient(t, s) |
| 201 | defer nc.Close() |
| 202 | ctx := context.Background() |
| 203 | |
| 204 | obs, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{Bucket: "FOO"}) |
| 205 | expectOk(t, err) |
| 206 | |
| 207 | _, err = obs.PutString(ctx, "A", "abc") |
| 208 | expectOk(t, err) |
| 209 | res, err := obs.Get(ctx, "A") |
| 210 | expectOk(t, err) |
| 211 | // first read should be successful |
| 212 | data, err := io.ReadAll(res) |
| 213 | expectOk(t, err) |
| 214 | if string(data) != "abc" { |
| 215 | t.Fatalf("Expected result: 'abc'; got: %s", string(data)) |
| 216 | } |
| 217 | |
| 218 | info, err := obs.GetInfo(ctx, "A") |
| 219 | expectOk(t, err) |
| 220 | |
| 221 | // add new chunk after using Put(), this will change the digest hash on Get() |
| 222 | _, err = js.Publish(ctx, fmt.Sprintf("$O.FOO.C.%s", info.NUID), []byte("123")) |
| 223 | expectOk(t, err) |
| 224 | |
| 225 | res, err = obs.Get(ctx, "A") |
| 226 | expectOk(t, err) |
| 227 | _, err = io.ReadAll(res) |
| 228 | expectErr(t, err, jetstream.ErrDigestMismatch) |
| 229 | expectErr(t, res.Error(), jetstream.ErrDigestMismatch) |
| 230 | } |
| 231 | |
| 232 | func TestDefaultObjectStatus(t *testing.T) { |
| 233 | s := RunBasicJetStreamServer() |
nothing calls this directly
no test coverage detected