|
96 | 96 | expect(log_event[:attributes]["sentry.message.parameter.day"]).to eql({ value: "Monday", type: "string" }) |
97 | 97 | end |
98 | 98 |
|
99 | | - it "doesn't choke on malformed UTF-8 strings" do |
100 | | - malformed_string = "Hello World\x92".dup.force_encoding("UTF-8") |
101 | | - Sentry.logger.public_send(level, malformed_string, user_id: 123) |
| 99 | + context "handling of malformed strings" do |
| 100 | + let(:malformed_string_default) do |
| 101 | + Sentry::Utils::EncodingHelper::MALFORMED_STRING |
| 102 | + end |
| 103 | + |
| 104 | + it "doesn't choke on malformed UTF-8 strings" do |
| 105 | + malformed_string = "Hello World\x92".dup.force_encoding("UTF-8") |
| 106 | + Sentry.logger.public_send(level, malformed_string, user_id: 123) |
| 107 | + |
| 108 | + expect(sentry_logs).to_not be_empty |
| 109 | + |
| 110 | + log_event = sentry_logs.last |
| 111 | + |
| 112 | + expect(log_event[:level]).to eql(level) |
| 113 | + expect(log_event[:body]).to eql(malformed_string_default) |
| 114 | + end |
| 115 | + |
| 116 | + it "doesn't choke on malformed UTF-8 in body and attributes" do |
| 117 | + malformed_string = "Hello World %{user_agent} \x92".dup.force_encoding("UTF-8") |
| 118 | + malformed_user_agent = "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp\xA1\xB1)".dup.force_encoding("UTF-8") |
| 119 | + Sentry.logger.public_send(level, malformed_string, user_agent: malformed_user_agent, user_id: 312) |
| 120 | + |
| 121 | + expect(sentry_logs).to_not be_empty |
102 | 122 |
|
103 | | - expect(sentry_logs).to be_empty |
| 123 | + log_event = sentry_logs.last |
| 124 | + |
| 125 | + expect(log_event[:level]).to eql(level) |
| 126 | + expect(log_event[:body]).to eql(malformed_string_default) |
| 127 | + |
| 128 | + expect(log_event[:attributes]["sentry.message.parameter.user_id"]).to be_nil |
| 129 | + expect(log_event[:attributes]["sentry.message.parameter.user_agent"]).to be_nil |
| 130 | + end |
| 131 | + |
| 132 | + it "doesn't choke on malformed UTF-8 in attributes" do |
| 133 | + malformed_user_agent = "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp\xA1\xB1)".dup.force_encoding("UTF-8") |
| 134 | + Sentry.logger.public_send(level, "Valid message %{user_agent}", user_agent: malformed_user_agent) |
| 135 | + |
| 136 | + expect(sentry_logs).to_not be_empty |
| 137 | + |
| 138 | + log_event = sentry_logs.last |
| 139 | + |
| 140 | + expect(log_event[:level]).to eql(level) |
| 141 | + expect(log_event[:body]).to include("Valid message") |
| 142 | + expect(log_event[:attributes]["sentry.message.parameter.user_agent"]) |
| 143 | + .to eql({ value: malformed_string_default, type: "string" }) |
| 144 | + end |
104 | 145 | end |
105 | 146 | end |
106 | 147 | end |
|
0 commit comments