mirror of
https://github.com/certbot/certbot.git
synced 2026-01-26 07:41:33 +03:00
Add metadata keyword argument to the ParserNode interface, allowing the initialization of the object from contents of the metadata - if the implementation allows it. As an example, Augeas implementation needs nothing more than the Augeas DOM path of a configuration directive to be able to populate the ParserNode instance with all data relevant to the DirectiveNode. The checks also allow skipping the otherwise required keyword arguments if metadata is provided. * Allow creating ParserNode instances using information from metadata dictionary * Update certbot-apache/certbot_apache/interfaces.py Co-Authored-By: Brad Warren <bmw@users.noreply.github.com> * Update certbot-apache/certbot_apache/interfaces.py Co-Authored-By: Brad Warren <bmw@users.noreply.github.com> * Address review comments * Fix filepath comment * Update certbot-apache/certbot_apache/interfaces.py Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
125 lines
3.5 KiB
Python
125 lines
3.5 KiB
Python
""" Tests for ParserNode interface """
|
|
|
|
import unittest
|
|
|
|
from certbot_apache import interfaces
|
|
from certbot_apache import parsernode_util as util
|
|
|
|
|
|
class DummyParserNode(interfaces.ParserNode):
|
|
""" A dummy class implementing ParserNode interface """
|
|
|
|
def __init__(self, **kwargs):
|
|
"""
|
|
Initializes the ParserNode instance.
|
|
"""
|
|
ancestor, dirty, filepath, metadata = util.parsernode_kwargs(kwargs)
|
|
self.ancestor = ancestor
|
|
self.dirty = dirty
|
|
self.filepath = filepath
|
|
self.metadata = metadata
|
|
super(DummyParserNode, self).__init__(**kwargs)
|
|
|
|
def save(self, msg): # pragma: no cover
|
|
"""Save"""
|
|
pass
|
|
|
|
|
|
class DummyCommentNode(DummyParserNode):
|
|
""" A dummy class implementing CommentNode interface """
|
|
|
|
def __init__(self, **kwargs):
|
|
"""
|
|
Initializes the CommentNode instance and sets its instance variables.
|
|
"""
|
|
comment, kwargs = util.commentnode_kwargs(kwargs)
|
|
self.comment = comment
|
|
super(DummyCommentNode, self).__init__(**kwargs)
|
|
|
|
|
|
class DummyDirectiveNode(DummyParserNode):
|
|
""" A dummy class implementing DirectiveNode interface """
|
|
|
|
# pylint: disable=too-many-arguments
|
|
def __init__(self, **kwargs):
|
|
"""
|
|
Initializes the DirectiveNode instance and sets its instance variables.
|
|
"""
|
|
name, parameters, enabled, kwargs = util.directivenode_kwargs(kwargs)
|
|
self.name = name
|
|
self.parameters = parameters
|
|
self.enabled = enabled
|
|
|
|
super(DummyDirectiveNode, self).__init__(**kwargs)
|
|
|
|
def set_parameters(self, parameters): # pragma: no cover
|
|
"""Set parameters"""
|
|
pass
|
|
|
|
|
|
class DummyBlockNode(DummyDirectiveNode):
|
|
""" A dummy class implementing BlockNode interface """
|
|
|
|
def add_child_block(self, name, parameters=None, position=None): # pragma: no cover
|
|
"""Add child block"""
|
|
pass
|
|
|
|
def add_child_directive(self, name, parameters=None, position=None): # pragma: no cover
|
|
"""Add child directive"""
|
|
pass
|
|
|
|
def add_child_comment(self, comment="", position=None): # pragma: no cover
|
|
"""Add child comment"""
|
|
pass
|
|
|
|
def find_blocks(self, name, exclude=True): # pragma: no cover
|
|
"""Find blocks"""
|
|
pass
|
|
|
|
def find_directives(self, name, exclude=True): # pragma: no cover
|
|
"""Find directives"""
|
|
pass
|
|
|
|
def find_comments(self, comment, exact=False): # pragma: no cover
|
|
"""Find comments"""
|
|
pass
|
|
|
|
def delete_child(self, child): # pragma: no cover
|
|
"""Delete child"""
|
|
pass
|
|
|
|
def unsaved_files(self): # pragma: no cover
|
|
"""Unsaved files"""
|
|
pass
|
|
|
|
|
|
interfaces.CommentNode.register(DummyCommentNode)
|
|
interfaces.DirectiveNode.register(DummyDirectiveNode)
|
|
interfaces.BlockNode.register(DummyBlockNode)
|
|
|
|
class ParserNodeTest(unittest.TestCase):
|
|
"""Dummy placeholder test case for ParserNode interfaces"""
|
|
|
|
def test_dummy(self):
|
|
dummyblock = DummyBlockNode(
|
|
name="None",
|
|
parameters=(),
|
|
ancestor=None,
|
|
dirty=False,
|
|
filepath="/some/random/path"
|
|
)
|
|
dummydirective = DummyDirectiveNode(
|
|
name="Name",
|
|
ancestor=None,
|
|
filepath="/another/path"
|
|
)
|
|
dummycomment = DummyCommentNode(
|
|
comment="Comment",
|
|
ancestor=dummyblock,
|
|
filepath="/some/file"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main() # pragma: no cover
|