# frozen_string_literal: true require "rails_helper" RSpec.describe ApplicationHelper, type: :helper do describe "#endpoint_options_for_select" do let(:server) { create(:server) } context "when an endpoint has HTML characters in its description" do let(:payload) { %q(x'">) } before do create(:http_endpoint, server: server, name: payload) end it "HTML-escapes the endpoint description in the option text" do html = helper.endpoint_options_for_select(server) # The raw payload must not appear verbatim — if it does, the browser # will execute the ") # Escaped form should appear instead. expect(html).to include("<script>alert(1)</script>") end it "does not allow the payload to break out of the option tag" do html = helper.endpoint_options_for_select(server) # The ' and > characters in the payload must be escaped so they # cannot close the opening