|
168 | 168 | expect(attr_names).to include(:@web_search) |
169 | 169 | expect(attr_names).to include(:@schema) |
170 | 170 | end |
| 171 | + |
| 172 | + it "truncates base64 data URIs in message content" do |
| 173 | + base64_image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk" |
| 174 | + chat.add([ |
| 175 | + {type: "input_text", text: "What is this?"}, |
| 176 | + {type: "input_image", image_url: base64_image} |
| 177 | + ], role: "user") |
| 178 | + |
| 179 | + attrs = chat.inspectable_attributes |
| 180 | + messages_attr = attrs.find { |name, _| name == :@messages } |
| 181 | + display_messages = messages_attr[1] |
| 182 | + image_content = display_messages[0][:content][1] |
| 183 | + |
| 184 | + expect(image_content[:image_url]).to eq("data:image/png;base64,iVBORw0KGgoAAAANSUhE... (60 chars)") |
| 185 | + end |
| 186 | + |
| 187 | + it "does not truncate regular strings" do |
| 188 | + chat.add("Hello, this is a normal message", role: "user") |
| 189 | + |
| 190 | + attrs = chat.inspectable_attributes |
| 191 | + messages_attr = attrs.find { |name, _| name == :@messages } |
| 192 | + display_messages = messages_attr[1] |
| 193 | + |
| 194 | + expect(display_messages[0][:content]).to eq("Hello, this is a normal message") |
| 195 | + end |
| 196 | + |
| 197 | + it "does not truncate non-base64 data URIs" do |
| 198 | + data_uri = "data:text/plain,Hello%20World" |
| 199 | + chat.add([{type: "input_text", text: data_uri}], role: "user") |
| 200 | + |
| 201 | + attrs = chat.inspectable_attributes |
| 202 | + messages_attr = attrs.find { |name, _| name == :@messages } |
| 203 | + display_messages = messages_attr[1] |
| 204 | + |
| 205 | + expect(display_messages[0][:content][0][:text]).to eq(data_uri) |
| 206 | + end |
171 | 207 | end |
172 | 208 |
|
173 | 209 | describe "#inspect" do |
|
0 commit comments