| # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Unit tests for server/cros/ap_configurators/ap_spec.py. |
| """ |
| |
| import unittest |
| |
| from autotest_lib.server.cros.ap_configurators import \ |
| ap_spec |
| |
| class APSpecTest(unittest.TestCase): |
| """Unit test for the ap_spec object.""" |
| |
| def test_default_creation(self): |
| """Test building a default ap_spec object.""" |
| spec = ap_spec.APSpec() |
| self.assertEquals(spec.visible, True) |
| self.assertEquals(spec.security, ap_spec.DEFAULT_SECURITY_TYPE) |
| self.assertEquals(spec.band, ap_spec.DEFAULT_BAND) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_2GHZ_MODE) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| self.assertIsNone(spec.password) |
| |
| |
| def test_only_set_band_2ghz(self): |
| """Test setting only the band to 2GHz.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_2GHZ) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_2GHZ_MODE) |
| |
| |
| def test_only_set_band_5ghz(self): |
| """Test setting only the band to 5GHz.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_5GHZ) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_5GHZ_CHANNEL) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_5GHZ_MODE) |
| |
| |
| def test_only_set_mode_2ghz(self): |
| """Test setting only a 2GHz mode.""" |
| spec = ap_spec.APSpec(mode=ap_spec.MODE_B) |
| self.assertEquals(spec.band, ap_spec.DEFAULT_BAND) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| |
| |
| def test_only_set_mode_5ghz(self): |
| """Test setting only a 5GHz mode.""" |
| spec = ap_spec.APSpec(mode=ap_spec.MODE_A) |
| self.assertEquals(spec.band, ap_spec.BAND_5GHZ) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_5GHZ_CHANNEL) |
| |
| |
| def test_only_set_mode_n(self): |
| """Test setting the mode to N.""" |
| spec = ap_spec.APSpec(mode=ap_spec.MODE_N) |
| self.assertEquals(spec.band, ap_spec.DEFAULT_BAND) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| |
| |
| def test_only_set_channel_2ghz(self): |
| """Test setting only a 2GHz channel.""" |
| spec = ap_spec.APSpec(channel=ap_spec.DEFAULT_2GHZ_CHANNEL) |
| self.assertEquals(spec.band, ap_spec.BAND_2GHZ) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_2GHZ_MODE) |
| |
| |
| def test_only_set_channel_5ghz(self): |
| """Test setting only a 5GHz channel.""" |
| spec = ap_spec.APSpec(channel=ap_spec.DEFAULT_5GHZ_CHANNEL) |
| self.assertEquals(spec.band, ap_spec.BAND_5GHZ) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_5GHZ_MODE) |
| |
| |
| def test_set_band_and_mode_2ghz(self): |
| """Test setting the band and mode to valid 2GHz values.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_2GHZ, mode=ap_spec.MODE_G) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| |
| |
| def test_set_band_and_mode_5ghz(self): |
| """Test setting the band and mode to valid 5GHz values.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_5GHZ, mode=ap_spec.MODE_A) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_5GHZ_CHANNEL) |
| |
| |
| def test_set_band_mode_and_channel_2ghz(self): |
| """Test setting the band and channel to valid 2GHz values.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_2GHZ, mode=ap_spec.MODE_N, |
| channel=ap_spec.DEFAULT_2GHZ_CHANNEL) |
| self.assertNotEquals(spec.mode, ap_spec.DEFAULT_5GHZ_MODE) |
| |
| |
| def test_set_band_mode_and_channel_5ghz(self): |
| """Test setting the band and channel to valid 5GHz value.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_5GHZ, mode=ap_spec.MODE_N, |
| channel=ap_spec.DEFAULT_5GHZ_CHANNEL) |
| self.assertNotEquals(spec.mode, ap_spec.DEFAULT_2GHZ_MODE) |
| |
| |
| def test_set_security_psk_default(self): |
| """Test setting security to WPAPSK.""" |
| spec = ap_spec.APSpec(security=ap_spec.SECURITY_TYPE_WPAPSK) |
| self.assertEquals(spec.visible, True) |
| self.assertEquals(spec.security, ap_spec.SECURITY_TYPE_WPAPSK) |
| self.assertEquals(spec.band, ap_spec.DEFAULT_BAND) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_2GHZ_MODE) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| |
| |
| def test_set_security_and_visibility(self): |
| """Test setting visibility to hidden and security to WPAPSK.""" |
| spec = ap_spec.APSpec(visible=False, |
| security=ap_spec.SECURITY_TYPE_WPAPSK) |
| self.assertEquals(spec.visible, False) |
| self.assertEquals(spec.security, ap_spec.SECURITY_TYPE_WPAPSK) |
| self.assertEquals(spec.band, ap_spec.DEFAULT_BAND) |
| self.assertEquals(spec.mode, ap_spec.DEFAULT_2GHZ_MODE) |
| self.assertEquals(spec.channel, ap_spec.DEFAULT_2GHZ_CHANNEL) |
| self.assertIsNotNone(spec.password) |
| |
| |
| def test_invalid_mode_and_band(self): |
| """Test setting mode and band to non-compatible settings.""" |
| self.assertRaises(ValueError, ap_spec.APSpec, |
| band=ap_spec.BAND_2GHZ, mode=ap_spec.MODE_A) |
| |
| |
| def test_invalid_channel_and_band(self): |
| """Test setting channel and band to non-compatible settings.""" |
| self.assertRaises(ValueError, ap_spec.APSpec, |
| band=ap_spec.BAND_5GHZ, channel=1) |
| |
| |
| def test_invalid_mode_and_channel(self): |
| """Test setting mode and channel to non-compatible settings.""" |
| self.assertRaises(ValueError, ap_spec.APSpec, |
| mode=ap_spec.MODE_G, channel=153) |
| |
| |
| def test_invalid_values(self): |
| """Test passing invalid values to an ap_spec object.""" |
| self.assertRaises(ValueError, ap_spec.APSpec, band='foo') |
| |
| self.assertRaises(ValueError, ap_spec.APSpec, mode=0x3) |
| |
| self.assertRaises(ValueError, ap_spec.APSpec, channel=84) |
| |
| self.assertRaises(ValueError, ap_spec.APSpec, security='foo') |
| |
| |
| def test_mode_string_generation(self): |
| """Test a set of mode constants a generates a human readable string.""" |
| mode = ap_spec.mode_string_for_mode(ap_spec.MODE_B | ap_spec.MODE_G) |
| self.assertEquals('b/g', mode) |
| |
| mode = ap_spec.mode_string_for_mode(ap_spec.MODE_B | ap_spec.MODE_G | |
| ap_spec.MODE_N) |
| self.assertEquals('b/g/n', mode) |
| |
| mode = ap_spec.mode_string_for_mode(ap_spec.MODE_A) |
| self.assertEquals('a', mode) |
| |
| |
| def test_mode_n_on_both_bands(self): |
| """Test that band is maintained when setting a mode N spec.""" |
| spec = ap_spec.APSpec(band=ap_spec.BAND_5GHZ, mode=ap_spec.MODE_N) |
| self.assertEquals(spec.band, ap_spec.BAND_5GHZ) |
| self.assertEquals(spec.mode, ap_spec.MODE_N) |
| spec = ap_spec.APSpec(band=ap_spec.BAND_2GHZ, mode=ap_spec.MODE_N) |
| self.assertEquals(spec.band, ap_spec.BAND_2GHZ) |
| self.assertEquals(spec.mode, ap_spec.MODE_N) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |