Ignore:
Timestamp:
2019-10-05T19:23:20+02:00 (5 years ago)
Author:
Don-vip
Message:

fix #17240 - Presets: verify that wiki links are no redirect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java

    r15101 r15423  
    88
    99import java.io.IOException;
     10import java.net.URL;
    1011import java.util.Collection;
    1112import java.util.HashSet;
     
    2829import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
    2930import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
     31import org.openstreetmap.josm.gui.tagging.presets.items.Link;
    3032import org.openstreetmap.josm.spi.preferences.Config;
    3133import org.openstreetmap.josm.testutils.JOSMTestRules;
     34import org.openstreetmap.josm.tools.HttpClient;
     35import org.openstreetmap.josm.tools.HttpClient.Response;
    3236import org.openstreetmap.josm.tools.ImageProvider;
    3337import org.openstreetmap.josm.tools.Logging;
     
    113117        assertFalse(presets.isEmpty());
    114118        // wait for asynchronous icon loading
    115         presets.stream().map(TaggingPreset::getIconLoadingTask).filter(Objects::nonNull).forEach(t -> {
     119        presets.parallelStream().map(TaggingPreset::getIconLoadingTask).filter(Objects::nonNull).forEach(t -> {
    116120            try {
    117121                t.get(30, TimeUnit.SECONDS);
    118122            } catch (InterruptedException | ExecutionException | TimeoutException e) {
     123                Logging.error(e);
     124            }
     125        });
     126        // check that links are correct and not redirections
     127        presets.parallelStream().flatMap(x -> x.data.stream().filter(i -> i instanceof Link).map(i -> ((Link) i).getUrl())).forEach(u -> {
     128            try {
     129                Response cr = HttpClient.create(new URL(u)).setMaxRedirects(-1).connect();
     130                final int code = cr.getResponseCode();
     131                if (HttpClient.isRedirect(code)) {
     132                    addOrIgnoreError(messages, "Found HTTP redirection for " + u + " -> " + code + " -> " + cr.getHeaderField("Location"));
     133                } else if (code >= 400) {
     134                    addOrIgnoreError(messages, "Found HTTP error for " + u + " -> " + code);
     135                }
     136            } catch (IOException e) {
    119137                Logging.error(e);
    120138            }
     
    125143            if (message.contains(TaggingPreset.PRESET_ICON_ERROR_MSG_PREFIX)) {
    126144                error = true;
    127                 if (isIgnoredSubstring(message)) {
    128                     ignoredErrors.add(message);
    129                 } else {
    130                     messages.add(message);
    131                 }
     145                addOrIgnoreError(messages, message);
    132146            }
    133147        }
     
    136150        }
    137151    }
     152
     153    void addOrIgnoreError(Set<String> messages, String message) {
     154        if (isIgnoredSubstring(message)) {
     155            ignoredErrors.add(message);
     156        } else {
     157            messages.add(message);
     158        }
     159    }
    138160}
Note: See TracChangeset for help on using the changeset viewer.