Import Upstream version 4.12.4
This commit is contained in:
80
ipatests/test_cmdline/test_schema.py
Normal file
80
ipatests/test_cmdline/test_schema.py
Normal file
@@ -0,0 +1,80 @@
|
||||
#
|
||||
# Copyright (C) 2021 FreeIPA Contributors see COPYING for license
|
||||
#
|
||||
import pytest
|
||||
import time
|
||||
|
||||
from ipaclient.remote_plugins import ServerInfo
|
||||
|
||||
|
||||
class TestServerInfo(ServerInfo):
|
||||
"""Simplified ServerInfo class with hardcoded values"""
|
||||
def __init__(self, fingerprint='deadbeef', hostname='ipa.example.test',
|
||||
force_check=False, language='en_US',
|
||||
version='2.0', expiration=None):
|
||||
self._force_check = force_check
|
||||
self._language = language
|
||||
self._now = time.time()
|
||||
self._dict = {
|
||||
'fingerprint': fingerprint,
|
||||
'expiration': expiration or time.time() + 3600,
|
||||
'language': language,
|
||||
'version': version,
|
||||
}
|
||||
|
||||
def _read(self):
|
||||
"""Running on test controller, this is a no-op"""
|
||||
|
||||
def _write(self):
|
||||
"""Running on test controller, this is a no-op"""
|
||||
|
||||
|
||||
@pytest.mark.tier0
|
||||
class TestIPAServerInfo:
|
||||
"""Test that ServerInfo detects changes in remote configuration"""
|
||||
|
||||
def test_valid(self):
|
||||
server_info = TestServerInfo()
|
||||
assert server_info.is_valid() is True
|
||||
|
||||
def test_force_check(self):
|
||||
server_info = TestServerInfo(force_check=True)
|
||||
assert server_info.is_valid() is False
|
||||
|
||||
def test_language_change(self):
|
||||
server_info = TestServerInfo()
|
||||
assert server_info.is_valid() is True
|
||||
server_info._language = 'fr_FR'
|
||||
assert server_info.is_valid() is False
|
||||
server_info._language = 'en_US'
|
||||
|
||||
def test_expired(self):
|
||||
server_info = TestServerInfo(expiration=time.time() + 2)
|
||||
assert server_info.is_valid() is True
|
||||
|
||||
# skip past the expiration time
|
||||
server_info._now = time.time() + 5
|
||||
assert server_info.is_valid() is False
|
||||
|
||||
# set a new expiration time in the future
|
||||
server_info.update_validity(10)
|
||||
assert server_info.is_valid() is True
|
||||
|
||||
# move to the future beyond expiration
|
||||
server_info._now = time.time() + 15
|
||||
assert server_info.is_valid() is False
|
||||
|
||||
def test_update_validity(self):
|
||||
server_info = TestServerInfo(expiration=time.time() + 1)
|
||||
|
||||
# Expiration and time are one second off so the cache is ok
|
||||
assert server_info.is_valid() is True
|
||||
|
||||
# Simulate time passing by
|
||||
server_info._now = time.time() + 2
|
||||
|
||||
# the validity should be updated because it is now expired
|
||||
server_info.update_validity(3600)
|
||||
|
||||
# the cache is now valid for another hour
|
||||
assert server_info.is_valid() is True
|
||||
Reference in New Issue
Block a user