@@ -130,7 +130,7 @@ describe("resolveMessagingTarget (directory fallback)", () => {
|
130 | 130 | expect(mocks.listGroupsLive).toHaveBeenCalledTimes(1); |
131 | 131 | }); |
132 | 132 | |
133 | | -it("rejects plugin-reserved literal targets before directory lookup", async () => { |
| 133 | +it("preserves configured directory entries before rejecting reserved literal targets", async () => { |
134 | 134 | mocks.getChannelPlugin.mockReturnValue({ |
135 | 135 | ...createChannelTestPluginBase({ id: "telegram", label: "Telegram" }), |
136 | 136 | directory: { |
@@ -162,13 +162,47 @@ describe("resolveMessagingTarget (directory fallback)", () => {
|
162 | 162 | input: "current", |
163 | 163 | }); |
164 | 164 | |
| 165 | +expect(result.ok).toBe(true); |
| 166 | +if (result.ok) { |
| 167 | +expect(result.target.to).toBe("-1002458651455"); |
| 168 | +expect(result.target.source).toBe("directory"); |
| 169 | +} |
| 170 | +expect(mocks.listGroups).toHaveBeenCalled(); |
| 171 | +expect(mocks.resolveTarget).not.toHaveBeenCalled(); |
| 172 | +}); |
| 173 | + |
| 174 | +it("rejects reserved literal targets after directory miss", async () => { |
| 175 | +mocks.getChannelPlugin.mockReturnValue({ |
| 176 | + ...createChannelTestPluginBase({ id: "telegram", label: "Telegram" }), |
| 177 | +directory: { |
| 178 | +listPeers: mocks.listPeers, |
| 179 | +listPeersLive: mocks.listPeersLive, |
| 180 | +listGroups: mocks.listGroups, |
| 181 | +listGroupsLive: mocks.listGroupsLive, |
| 182 | +}, |
| 183 | +messaging: { |
| 184 | +targetResolver: { |
| 185 | +reservedLiterals: ["current", "self", "this", "me"], |
| 186 | +hint: "<chatId>", |
| 187 | +resolveTarget: mocks.resolveTarget, |
| 188 | +}, |
| 189 | +}, |
| 190 | +}); |
| 191 | +mocks.listGroups.mockResolvedValue([]); |
| 192 | +mocks.listGroupsLive.mockResolvedValue([]); |
| 193 | + |
| 194 | +const result = await resolveMessagingTarget({ |
| 195 | + cfg, |
| 196 | +channel: "telegram", |
| 197 | +input: "current", |
| 198 | +}); |
| 199 | + |
165 | 200 | expect(result.ok).toBe(false); |
166 | 201 | if (!result.ok) { |
167 | 202 | expect(result.error.message).toContain('Reserved target "current"'); |
168 | 203 | expect(result.error.message).toContain("Telegram"); |
169 | 204 | } |
170 | | -expect(mocks.listGroups).not.toHaveBeenCalled(); |
171 | | -expect(mocks.listGroupsLive).not.toHaveBeenCalled(); |
| 205 | +expect(mocks.listGroups).toHaveBeenCalled(); |
172 | 206 | expect(mocks.resolveTarget).not.toHaveBeenCalled(); |
173 | 207 | }); |
174 | 208 | |
|