/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.waveprotocol.wave.client.wavepanel.view.dom.full; import org.waveprotocol.wave.client.wavepanel.view.dom.full.i18n.BlipMessages; import junit.framework.TestCase; import org.waveprotocol.wave.client.common.safehtml.EscapeUtils; import org.waveprotocol.wave.client.uibuilder.UiBuilder; import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipViewBuilder.Components; public class BlipViewBuilderTest extends TestCase { private BlipViewBuilder.Css css; BlipMessages constants; private static final String content = "<div>yyy</div>"; private String blipDomId; private BlipViewBuilder blipUi; private BlipMetaViewBuilder metaUi; @Override protected void setUp() { css = UiBuilderTestHelper.mockCss(BlipViewBuilder.Css.class); constants = UiBuilderTestHelper.mockBlipMessages(BlipMessages.class); String blipId = "askljfalikwh4rlkhs"; String metaDomId = blipId = "M"; blipDomId = blipId + "B"; UiBuilder fakeContent = UiBuilder.Constant.of(EscapeUtils.fromSafeConstant(content)); metaUi = new BlipMetaViewBuilder(css, constants, metaDomId, fakeContent); blipUi = new BlipViewBuilder(blipDomId, metaUi, UiBuilder.EMPTY, UiBuilder.EMPTY, css); } public void testBasicContentAvailable() throws Exception { String time = "234khdlga"; String metaline = "45o32958uoig"; String avatar = "http://foo.com/image.png"; metaUi.setTime(time); metaUi.setMetaline(metaline); metaUi.setAvatar(avatar); UiBuilderTestHelper.verifyHtml(blipUi, blipDomId, Components.values()); String html = UiBuilderTestHelper.render(blipUi); // make sure all the data is in the output assertEquals(1, UiBuilderTestHelper.countOccurrences(html, time)); assertEquals(1, UiBuilderTestHelper.countOccurrences(html, content)); assertEquals(1, UiBuilderTestHelper.countOccurrences(html, metaline)); } public void testEvilHtmlEscaped() { String evilTime = "123<abc></abc>"; String evilLine = "123<abc></abc>"; String evilAvatar = "http://\" src=evil"; metaUi.setTime(evilTime); metaUi.setMetaline(evilLine); metaUi.setAvatar(evilAvatar); String html = UiBuilderTestHelper.render(blipUi); assertFalse("Time string not escaped", html.contains(evilTime)); assertFalse("Metaline string not escaped", html.contains(evilLine)); assertFalse("Avatar url not escaped", html.contains(evilAvatar)); } }