1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
# Copyright (C) 2017 Amazon.com, Inc. or its affiliates
#
# Author: Andrew Jorgensen <ajorgens@amazon.com>
#
# This file is part of cloud-init. See LICENSE file for license information.
"""Tests that SimpleTable works just like PrettyTable for cloud-init.
Not all possible PrettyTable cases are tested because we're not trying to
reimplement the entire library, only the minimal parts we actually use.
"""
from cloudinit.simpletable import SimpleTable
# Examples rendered by cloud-init using PrettyTable
NET_DEVICE_FIELDS = ("Device", "Up", "Address", "Mask", "Scope", "Hw-Address")
NET_DEVICE_ROWS = (
("ens3", True, "172.31.4.203", "255.255.240.0", ".", "0a:1f:07:15:98:70"),
(
"ens3",
True,
"fe80::81f:7ff:fe15:9870/64",
".",
"link",
"0a:1f:07:15:98:70",
),
("lo", True, "127.0.0.1", "255.0.0.0", ".", "."),
("lo", True, "::1/128", ".", "host", "."),
)
NET_DEVICE_TABLE = """\
+--------+------+----------------------------+---------------+-------+-------------------+
| Device | Up | Address | Mask | Scope | Hw-Address |
+--------+------+----------------------------+---------------+-------+-------------------+
| ens3 | True | 172.31.4.203 | 255.255.240.0 | . | 0a:1f:07:15:98:70 |
| ens3 | True | fe80::81f:7ff:fe15:9870/64 | . | link | 0a:1f:07:15:98:70 |
| lo | True | 127.0.0.1 | 255.0.0.0 | . | . |
| lo | True | ::1/128 | . | host | . |
+--------+------+----------------------------+---------------+-------+-------------------+""" # noqa: E501
ROUTE_IPV4_FIELDS = (
"Route",
"Destination",
"Gateway",
"Genmask",
"Interface",
"Flags",
)
ROUTE_IPV4_ROWS = (
("0", "0.0.0.0", "172.31.0.1", "0.0.0.0", "ens3", "UG"),
("1", "169.254.0.0", "0.0.0.0", "255.255.0.0", "ens3", "U"),
("2", "172.31.0.0", "0.0.0.0", "255.255.240.0", "ens3", "U"),
)
ROUTE_IPV4_TABLE = """\
+-------+-------------+------------+---------------+-----------+-------+
| Route | Destination | Gateway | Genmask | Interface | Flags |
+-------+-------------+------------+---------------+-----------+-------+
| 0 | 0.0.0.0 | 172.31.0.1 | 0.0.0.0 | ens3 | UG |
| 1 | 169.254.0.0 | 0.0.0.0 | 255.255.0.0 | ens3 | U |
| 2 | 172.31.0.0 | 0.0.0.0 | 255.255.240.0 | ens3 | U |
+-------+-------------+------------+---------------+-----------+-------+"""
AUTHORIZED_KEYS_FIELDS = ("Keytype", "Fingerprint (md5)", "Options", "Comment")
AUTHORIZED_KEYS_ROWS = (
(
"ssh-rsa",
"24:c7:41:49:47:12:31:a0:de:6f:62:79:9b:13:06:36",
"-",
"ajorgens",
),
)
AUTHORIZED_KEYS_TABLE = """\
+---------+-------------------------------------------------+---------+----------+
| Keytype | Fingerprint (md5) | Options | Comment |
+---------+-------------------------------------------------+---------+----------+
| ssh-rsa | 24:c7:41:49:47:12:31:a0:de:6f:62:79:9b:13:06:36 | - | ajorgens |
+---------+-------------------------------------------------+---------+----------+""" # noqa: E501
# from prettytable import PrettyTable
# pt = PrettyTable(('HEADER',))
# print(pt)
NO_ROWS_FIELDS = ("HEADER",)
NO_ROWS_TABLE = """\
+--------+
| HEADER |
+--------+
+--------+"""
class TestSimpleTable:
def test_no_rows(self):
"""An empty table is rendered as PrettyTable would have done it."""
table = SimpleTable(NO_ROWS_FIELDS)
assert str(table) == NO_ROWS_TABLE
def test_net_dev(self):
"""Net device info is rendered as it was with PrettyTable."""
table = SimpleTable(NET_DEVICE_FIELDS)
for row in NET_DEVICE_ROWS:
table.add_row(row)
assert str(table) == NET_DEVICE_TABLE
def test_route_ipv4(self):
"""Route IPv4 info is rendered as it was with PrettyTable."""
table = SimpleTable(ROUTE_IPV4_FIELDS)
for row in ROUTE_IPV4_ROWS:
table.add_row(row)
assert str(table) == ROUTE_IPV4_TABLE
def test_authorized_keys(self):
"""SSH authorized keys are rendered as they were with PrettyTable."""
table = SimpleTable(AUTHORIZED_KEYS_FIELDS)
for row in AUTHORIZED_KEYS_ROWS:
table.add_row(row)
def test_get_string(self):
"""get_string() method returns the same content as str()."""
table = SimpleTable(AUTHORIZED_KEYS_FIELDS)
for row in AUTHORIZED_KEYS_ROWS:
table.add_row(row)
assert table.get_string() == str(table)
|