@@ -21,6 +21,8 @@ module Agents  | 
            ||
| 21 | 21 | 
                * `this.options(key)`  | 
            
| 22 | 22 | 
                * `this.log(message)`  | 
            
| 23 | 23 | 
                * `this.error(message)`  | 
            
| 24 | 
                + * `this.escapeHtml(htmlToEscape)`  | 
            |
| 25 | 
                + * `this.unescapeHtml(htmlToUnescape)`  | 
            |
| 24 | 26 | 
                MD  | 
            
| 25 | 27 | 
                 | 
            
| 26 | 28 | 
                def validate_options  | 
            
                @@ -102,7 +104,8 @@ module Agents  | 
            ||
| 102 | 104 | 
                memory.to_json  | 
            
| 103 | 105 | 
                end  | 
            
| 104 | 106 | 
                end  | 
            
| 105 | 
                -      context["unescapeHTML"] = lambda { |a, x| CGI.unescapeHTML(x) }
               | 
            |
| 107 | 
                +      context["escapeHtml"] = lambda { |a, x| CGI.escapeHTML(x) }
               | 
            |
| 108 | 
                +      context["unescapeHtml"] = lambda { |a, x| CGI.unescapeHTML(x) }
               | 
            |
| 106 | 109 | 
                 | 
            
| 107 | 110 | 
                context.eval(code)  | 
            
| 108 | 111 | 
                       context.eval("Agent.#{js_function}();")
               | 
            
                @@ -159,8 +162,12 @@ module Agents  | 
            ||
| 159 | 162 | 
                doError(message);  | 
            
| 160 | 163 | 
                }  | 
            
| 161 | 164 | 
                 | 
            
| 162 | 
                -        Agent.unescapeHTML = function(html) {
               | 
            |
| 163 | 
                - return unescapeHTML(html);  | 
            |
| 165 | 
                +        Agent.escapeHtml = function(html) {
               | 
            |
| 166 | 
                + return escapeHtml(html);  | 
            |
| 167 | 
                + }  | 
            |
| 168 | 
                +  | 
            |
| 169 | 
                +        Agent.unescapeHtml = function(html) {
               | 
            |
| 170 | 
                + return unescapeHtml(html);  | 
            |
| 164 | 171 | 
                }  | 
            
| 165 | 172 | 
                 | 
            
| 166 | 173 | 
                         Agent.check = function(){};
               | 
            
                @@ -162,9 +162,9 @@ describe Agents::JavaScriptAgent do  | 
            ||
| 162 | 162 | 
                end  | 
            
| 163 | 163 | 
                end  | 
            
| 164 | 164 | 
                 | 
            
| 165 | 
                - describe "unescaping HTML" do  | 
            |
| 166 | 
                - it "can unescape html with this.unescapeHTML in the javascript environment" do  | 
            |
| 167 | 
                -        @agent.options['code'] = 'Agent.check = function() { this.createEvent({ message: this.unescapeHTML(\'test "escaping" <characters>\'), stuff: { foo: 5 } }); };'
               | 
            |
| 165 | 
                + describe "escaping and unescaping HTML" do  | 
            |
| 166 | 
                + it "can escape and unescape html with this.escapeHtml and this.unescapeHtml in the javascript environment" do  | 
            |
| 167 | 
                +        @agent.options['code'] = 'Agent.check = function() { this.createEvent({ escaped: this.escapeHtml(\'test \"escaping\" <characters>\'), unescaped: this.unescapeHtml(\'test "unescaping" <characters>\')}); };'
               | 
            |
| 168 | 168 | 
                @agent.save!  | 
            
| 169 | 169 | 
                         expect {
               | 
            
| 170 | 170 | 
                           expect {
               | 
            
                @@ -172,7 +172,7 @@ describe Agents::JavaScriptAgent do  | 
            ||
| 172 | 172 | 
                           }.not_to change { AgentLog.count }
               | 
            
| 173 | 173 | 
                         }.to change { Event.count}.by(1)
               | 
            
| 174 | 174 | 
                created_event = @agent.events.last  | 
            
| 175 | 
                -        expect(created_event.payload).to eq({ 'message' => 'test "escaping" <characters>', 'stuff' => { 'foo' => 5 }})
               | 
            |
| 175 | 
                +        expect(created_event.payload).to eq({ 'escaped' => 'test "escaping" <characters>', 'unescaped' => 'test "unescaping" <characters>'})
               | 
            |
| 176 | 176 | 
                end  | 
            
| 177 | 177 | 
                end  | 
            
| 178 | 178 | 
                 |