/
tests.py
131 lines (82 loc) · 3.31 KB
/
tests.py
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
119
120
121
122
123
124
125
126
127
128
129
130
131
import json
from datetime import datetime as dt
from pprint import pprint
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models import ModelEncoder, Device, User, Status
from providers.ldap_provider import LDAPProvider
class TestLDAPProvider():
"""Test the LDAPProvider module"""
def setup(self):
print
def test_ldap_provides_users(self):
"""Make sure we can get a list of users"""
l = LDAPProvider()
l.poll()
print json.dumps(l.users, cls=ModelEncoder, indent=4)
assert len(l.users) > 0
class TestModels():
"""Test our models and SqlAlchemy functionality"""
def setup(self):
"""Setup the in-memory sqlite engine."""
print
self.engine = create_engine('sqlite:///:memory:', echo=False)
User.metadata.create_all(self.engine)
Device.metadata.create_all(self.engine)
Session = sessionmaker()
Session.configure(bind=self.engine)
self.session = Session()
def test_create_user(self):
"""Create a user from arguments"""
u = User('user1', 'user1_guid', 'Jon Doe', 'Jon', 'Doe', 'Department',
'jon@doe.com')
assert repr(u) == "<User(None, 'user1', 'Jon Doe', 'user1_guid')>"
def test_create_device(self):
"""Create a device from arguments"""
d = Device('abc', 'aa:bb:cc:dd:ee')
assert repr(d) == "<Device(None, 'abc', 'aa:bb:cc:dd:ee')>"
def test_create_status(self):
"""Create a status update from arguments"""
time = dt.now()
s = Status('status-provider', 'in', time)
assert repr(s) == "<Status(None, 'status-provider', 'in', '%s')>" \
% time
def test_device_query(self):
"""Create a device and assure that it's queryable and identitical"""
d1 = Device('abc', 'aa:bb:cc:dd:ee')
self.session.add(d1)
assert self.session.query(Device).filter_by(name='abc').count() == 1
assert self.session.query(Device).filter_by(name='abc').one()
d2 = self.session.query(Device).filter_by(name='abc').one()
assert d1 == d2
assert repr(d1) == "<Device(1, 'abc', 'aa:bb:cc:dd:ee')>"
assert repr(d2) == "<Device(1, 'abc', 'aa:bb:cc:dd:ee')>"
def test_device_not_exists(self):
"""Query for a non-existent device and assure that the count is 0"""
assert self.session.query(Device).filter_by(name='def').count() == 0
def test_commit(self):
"""Commit to the sqlite:///:memory: store"""
self.session.commit()
def test_relationship(self):
"""Test relationships between users, devices, and statuses"""
u = User('user1', 'user1_guid', 'Jon Doe', 'Jon', 'Doe', 'Department',
'jon@doe.com')
d = Device('device1', 'aa:bb:cc:dd:ee')
s = Status('status-provider', 'in', dt.now())
self.session.add(s)
self.session.add(u)
self.session.add(d)
d.user = u
s.user = u
self.session.commit()
pprint(u)
pprint(d)
pprint(s)
pprint(u.devices)
pprint(u.statuses)
assert d.user == u
assert d in u.devices
assert s.user == u
assert s in u.statuses
assert u.devices[0] == d
assert u.statuses[0] == s