def test_utils(self): entity_id = root(self.t).get('entityID') self.md.store.update(root(self.t), entity_id) e = self.md.lookup(entity_id)[0] assert (is_idp(e)) assert (not is_sp(e)) icon = entity_icon_url(e) assert ('url' in icon) assert ('https://www.example.com/static/images/umu_logo.jpg' in icon['url']) assert ('width' in icon) assert ('358' == icon['width']) assert ('height' in icon) assert ('63' == icon['height']) assert ('62' != icon['height']) domains = entity_domains(e) assert ('example.com' in domains) assert ('example.net' in domains) assert ('idp.example.com' not in domains) assert ('foo.com' not in domains) edup = deepcopy(e) name, desc = entity_extended_display(e) assert(name == 'Example University') assert(desc == 'Identity Provider for Example University') disp = entity_display_name(e) assert (disp == 'Example University') for elt in e.findall(".//{%s}DisplayName" % NS['mdui']): elt.getparent().remove(elt) disp = entity_display_name(e) assert (disp == 'The Example University') for elt in e.findall(".//{%s}OrganizationDisplayName" % NS['md']): elt.getparent().remove(elt) disp = entity_display_name(e) assert (disp == 'ExampleU') for elt in e.findall(".//{%s}OrganizationName" % NS['md']): elt.getparent().remove(elt) disp = entity_display_name(e) assert (disp == entity_id) e = edup subs = entity_domains(e) assert ('example.com' in subs) assert ('example.net' in subs) assert ('idp.example.com' not in subs) summary = entity_simple_summary(e) assert (summary['title'] == 'Example University') assert (summary['descr'] == 'Identity Provider for Example University') assert (summary['entityID'] == entity_id) assert ('domains' in summary) assert ('id' in summary) empty = entity_simple_summary(None) assert (not empty)
def __call__(self, *args, **kwargs): watched = kwargs.pop('watched', None) scheduler = kwargs.pop('scheduler', None) log.debug("about to schedule icon refresh on {} using {}".format( self, scheduler.state)) if watched is not None and scheduler is not None: urls = [] for r in watched.walk(): log.debug("looking at {}".format(r.url)) if r.t is not None: for e in iter_entities(r.t): ico = entity_icon_url(e) if ico is not None and 'url' in ico and not ico[ 'url'].startswith('data:'): urls.append(ico) if config.load_icons_async: now = datetime.now() start = now + timedelta(seconds=20) job = scheduler.add_job( IconStore._load_icons, args=[self, urls], id="load_icons", next_run_time=start, name="load_icons", max_instances=1, coalesce=False, ) log.debug(job) else: self._load_icons(urls)