1/*
2 * wpa_supplicant module tests
3 * Copyright (c) 2014, Jouni Malinen <j@w1.fi>
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 */
8
9#include "utils/includes.h"
10
11#include "utils/common.h"
12#include "utils/module_tests.h"
13#include "wpa_supplicant_i.h"
14#include "bssid_ignore.h"
15
16
17static int wpas_bssid_ignore_module_tests(void)
18{
19	struct wpa_supplicant wpa_s;
20	int ret = -1;
21
22	os_memset(&wpa_s, 0, sizeof(wpa_s));
23
24	wpa_bssid_ignore_clear(&wpa_s);
25
26	if (wpa_bssid_ignore_get(NULL, NULL) != NULL ||
27	    wpa_bssid_ignore_get(NULL, (u8 *) "123456") != NULL ||
28	    wpa_bssid_ignore_get(&wpa_s, NULL) != NULL ||
29	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "123456") != NULL)
30		goto fail;
31
32	if (wpa_bssid_ignore_add(NULL, NULL) == 0 ||
33	    wpa_bssid_ignore_add(NULL, (u8 *) "123456") == 0 ||
34	    wpa_bssid_ignore_add(&wpa_s, NULL) == 0)
35		goto fail;
36
37	if (wpa_bssid_ignore_del(NULL, NULL) == 0 ||
38	    wpa_bssid_ignore_del(NULL, (u8 *) "123456") == 0 ||
39	    wpa_bssid_ignore_del(&wpa_s, NULL) == 0 ||
40	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "123456") == 0)
41		goto fail;
42
43	if (wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
44	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
45	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "222222") < 0 ||
46	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "333333") < 0 ||
47	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "444444") < 0 ||
48	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "333333") < 0 ||
49	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "xxxxxx") == 0 ||
50	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "xxxxxx") != NULL ||
51	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "111111") == NULL ||
52	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "222222") == NULL ||
53	    wpa_bssid_ignore_get(&wpa_s, (u8 *) "444444") == NULL ||
54	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "111111") < 0 ||
55	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "222222") < 0 ||
56	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "444444") < 0 ||
57	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
58	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "222222") < 0 ||
59	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "333333") < 0)
60		goto fail;
61
62	wpa_bssid_ignore_clear(&wpa_s);
63
64	if (wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0 ||
65	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "222222") < 0 ||
66	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "333333") < 0 ||
67	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "444444") < 0 ||
68	    !wpa_bssid_ignore_is_listed(&wpa_s, (u8 *) "111111") ||
69	    wpa_bssid_ignore_del(&wpa_s, (u8 *) "111111") < 0 ||
70	    wpa_bssid_ignore_is_listed(&wpa_s, (u8 *) "111111") ||
71	    wpa_bssid_ignore_add(&wpa_s, (u8 *) "111111") < 0)
72		goto fail;
73
74	wpa_bssid_ignore_update(&wpa_s);
75
76	if (!wpa_bssid_ignore_is_listed(&wpa_s, (u8 *) "111111"))
77		goto fail;
78
79	ret = 0;
80fail:
81	wpa_bssid_ignore_clear(&wpa_s);
82
83	if (ret)
84		wpa_printf(MSG_ERROR, "bssid_ignore module test failure");
85
86	return ret;
87}
88
89
90int wpas_module_tests(void)
91{
92	int ret = 0;
93
94	wpa_printf(MSG_INFO, "wpa_supplicant module tests");
95
96	if (wpas_bssid_ignore_module_tests() < 0)
97		ret = -1;
98
99#ifdef CONFIG_WPS
100	if (wps_module_tests() < 0)
101		ret = -1;
102#endif /* CONFIG_WPS */
103
104	if (utils_module_tests() < 0)
105		ret = -1;
106
107	if (common_module_tests() < 0)
108		ret = -1;
109
110	if (crypto_module_tests() < 0)
111		ret = -1;
112
113	return ret;
114}
115