blob: 61ec73aa07115ad6091b28ba82afd429fbabb238 [file] [log] [blame]
Neels Hofmeyr3531a192017-03-28 14:30:28 +02001#!/usr/bin/env python3
2
3import _prep
4
5import sys
6import os
7import io
8import pprint
9import copy
10
11from osmo_gsm_tester import config, log, schema
12
13example_config_file = 'test.cfg'
14example_config = os.path.join(_prep.script_dir, 'config_test', example_config_file)
15cfg = config.read(example_config)
16
Neels Hofmeyr2694a9d2017-04-27 19:48:09 +020017pprint.pprint(cfg, width=81)
Neels Hofmeyr3531a192017-03-28 14:30:28 +020018
19test_schema = {
20 'modems[].dbus_path': schema.STR,
21 'modems[].msisdn': schema.STR,
22 'modems[].imsi': schema.IMSI,
23 'modems[].ki': schema.STR,
24 'bts[].name' : schema.STR,
25 'bts[].type' : schema.STR,
26 'bts[].addr' : schema.STR,
27 'bts[].trx[].timeslots[]' : schema.STR,
28 'bts[].trx[].band' : schema.BAND,
29 'a_dict.foo' : schema.INT,
30 'addr[]' : schema.IPV4,
31 'hwaddr[]' : schema.HWADDR,
32 'imsi[]' : schema.IMSI,
33 'ki[]' : schema.KI,
34 }
35
36def val(which):
37 try:
38 schema.validate(which, test_schema)
39 print('Validation: OK')
40 except ValueError:
41 log.log_exn()
42 print('Validation: Error')
43
44print('- expect validation success:')
45val(cfg)
46
47print('- unknown item:')
48c = copy.deepcopy(cfg)
49c['bts'][0]['unknown_item'] = 'no'
50val(c)
51
52print('- wrong type modems[].imsi:')
53c = copy.deepcopy(cfg)
54c['modems'][0]['imsi'] = {'no':'no'}
55val(c)
56
57print('- invalid key with space:')
58c = copy.deepcopy(cfg)
59c['modems'][0]['imsi '] = '12345'
60val(c)
61
62print('- list instead of dict:')
63c = copy.deepcopy(cfg)
64c['a_dict'] = [ 1, 2, 3 ]
65val(c)
66
67print('- unknown band:')
68c = copy.deepcopy(cfg)
69c['bts'][0]['trx'][0]['band'] = 'what'
70val(c)
71
72print('- invalid v4 addrs:')
73c = copy.deepcopy(cfg)
74c['addr'][3] = '1.2.3'
75val(c)
76c['addr'][3] = '1.2.3 .4'
77val(c)
78c['addr'][3] = '91.2.3'
79val(c)
80c['addr'][3] = 'go away'
81val(c)
82c['addr'][3] = ''
83val(c)
84c['addr'][3] = None
85val(c)
86
87print('- invalid hw addrs:')
88c = copy.deepcopy(cfg)
89c['hwaddr'][3] = '1.2.3'
90val(c)
91c['hwaddr'][3] = '0b:0c:0d:0e:0f:0g'
92val(c)
93c['hwaddr'][3] = '0b:0c:0d:0e : 0f:0f'
94val(c)
95c['hwaddr'][3] = 'go away'
96val(c)
97c['hwaddr'][3] = ''
98val(c)
99c['hwaddr'][3] = None
100val(c)
101
102print('- invalid imsis:')
103c = copy.deepcopy(cfg)
104c['imsi'][2] = '99999999x9'
105val(c)
106c['imsi'][2] = '123 456 789 123'
107val(c)
108c['imsi'][2] = 'go away'
109val(c)
110c['imsi'][2] = ''
111val(c)
112c['imsi'][2] = None
113val(c)
114
115# vim: expandtab tabstop=4 shiftwidth=4