(t *testing.T)
| 94 | } |
| 95 | |
| 96 | func TestModifyMessageLabels_RejectsOverCap(t *testing.T) { |
| 97 | pool := testutil.TestDB(t) |
| 98 | store := identity.NewStore(pool) |
| 99 | ctx := context.Background() |
| 100 | |
| 101 | msgID, agentID := labelsTestSetup(t, store, "labels-cap") |
| 102 | |
| 103 | // Push one under the cap, then attempt to push two more in one op — |
| 104 | // the second pushes us over. |
| 105 | near := make([]string, identity.MaxLabelsPerMessage-1) |
| 106 | for i := range near { |
| 107 | near[i] = labelFor(i) |
| 108 | } |
| 109 | if _, err := store.ModifyMessageLabels(ctx, msgID, agentID, near, nil); err != nil { |
| 110 | t.Fatalf("seed near cap: %v", err) |
| 111 | } |
| 112 | // Now MaxLabelsPerMessage-1 are set. Adding 2 unique new labels = |
| 113 | // MaxLabelsPerMessage+1 — must reject. |
| 114 | _, err := store.ModifyMessageLabels(ctx, msgID, agentID, []string{labelFor(9000), labelFor(9001)}, nil) |
| 115 | if !errors.Is(err, identity.ErrLabelLimitExceeded) { |
| 116 | t.Errorf("err = %v, want ErrLabelLimitExceeded", err) |
| 117 | } |
| 118 | // One MORE add (taking us to exactly MaxLabelsPerMessage) MUST succeed — |
| 119 | // the boundary is the inclusive cap. |
| 120 | final, err := store.ModifyMessageLabels(ctx, msgID, agentID, []string{labelFor(9000)}, nil) |
| 121 | if err != nil { |
| 122 | t.Fatalf("at-cap add: %v", err) |
| 123 | } |
| 124 | if len(final) != identity.MaxLabelsPerMessage { |
| 125 | t.Errorf("len(final) = %d, want %d (exact cap)", len(final), identity.MaxLabelsPerMessage) |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | func TestModifyMessageLabels_NotFound(t *testing.T) { |
| 130 | pool := testutil.TestDB(t) |
nothing calls this directly
no test coverage detected