wpa_cli_web 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = "test/**/*_test.rb"
6
+ end
7
+
8
+ task :default => [:test]
@@ -7,12 +7,29 @@ class AccessPointList
7
7
  end
8
8
 
9
9
  def access_points
10
- @access_points.
11
- reject { |network| network.ssid.nil? }.
12
- group_by {|network| network.ssid}.
13
- map {|ssid, network_group| network_group}.
14
- map {|network_group| network_group.sort_by { |network| network.signal_level}.reverse.take(1)}.
15
- flatten.
10
+ strongest_unique_ssids_sorted_alphabetically
11
+ end
12
+
13
+ def strongest_unique_ssids_sorted_alphabetically
14
+ strongest_unique_ssids.
16
15
  sort_by { |network| network.ssid }
17
16
  end
17
+
18
+ def strongest_unique_ssids
19
+ network_groups.
20
+ map {|network_group| network_group.sort_by { |network| network.signal_level}.reverse.take(1)}.
21
+ flatten
22
+ end
23
+
24
+ def network_groups
25
+ access_points_grouped_by_ssid.map {|ssid, network_group| network_group}
26
+ end
27
+
28
+ def access_points_grouped_by_ssid
29
+ access_points_with_an_ssid.group_by {|network| network.ssid}
30
+ end
31
+
32
+ def access_points_with_an_ssid
33
+ @access_points.reject { |network| network.ssid.nil? }
34
+ end
18
35
  end
@@ -0,0 +1,28 @@
1
+ require 'minitest/autorun'
2
+ require 'wpa_cli_ruby'
3
+ require 'mocha'
4
+ require_relative '../../lib/wpa_cli_web/access_point_list.rb'
5
+
6
+ describe AccessPointList do
7
+ before do
8
+ mock_wrapper = stub()
9
+ mock_wrapper.expects(:scan).returns("Selected interface 'wlan0'\nOK\n")
10
+ response = <<-eos
11
+ Selected interface 'wlan0'
12
+ bssid / frequency / signal level / flags / ssid
13
+ 12:34:56:78:aa:bb 2437 -47 [WPA-EAP-TKIP][WPA2-EAP-CCMP][ESS] z_ssid
14
+ 12:34:56:78:bb:cc 2412 -57 [WPA2-PSK-CCMP][ESS] a_ssid
15
+ 43:34:56:78:bb:cc 2412 -87 [WPA-EAP-TKIP][WPA2-EAP-CCMP][ESS] z_ssid
16
+ eos
17
+ mock_wrapper.expects(:scan_results).returns(response)
18
+ @access_point_list = AccessPointList.new(WpaCliRuby::WpaCli.new(mock_wrapper))
19
+ end
20
+
21
+ describe "access_points" do
22
+ it "returns a list of unique, strongest access points sorted alphabetically" do
23
+ assert_equal 2, @access_point_list.access_points.size
24
+ assert_equal "a_ssid", @access_point_list.access_points[0].ssid
25
+ assert_equal "z_ssid", @access_point_list.access_points[1].ssid
26
+ end
27
+ end
28
+ end
data/wpa_cli_web.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "wpa_cli_web"
7
- spec.version = "0.0.8"
7
+ spec.version = "0.0.9"
8
8
  spec.authors = ["Chris Lowis", "Andrew Nicolaou"]
9
9
  spec.email = ["chris.lowis@gmail.com"]
10
10
  spec.description = %q{Web interface for configuring wifi using wpa_cli}
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 1.3"
26
26
  spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "mocha"
27
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wpa_cli_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -92,6 +92,22 @@ dependencies:
92
92
  - - ! '>='
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: mocha
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
95
111
  description: Web interface for configuring wifi using wpa_cli
96
112
  email:
97
113
  - chris.lowis@gmail.com
@@ -219,6 +235,7 @@ files:
219
235
  - lib/wpa_cli_web/views/networks_edit.erb
220
236
  - lib/wpa_cli_web/views/restart.erb
221
237
  - lib/wpa_cli_web/views/restarting.erb
238
+ - test/wpa_cli_web/access_point_list_test.rb
222
239
  - wpa_cli_web.gemspec
223
240
  homepage: ''
224
241
  licenses:
@@ -245,5 +262,6 @@ rubygems_version: 1.8.23
245
262
  signing_key:
246
263
  specification_version: 3
247
264
  summary: Web interface for configuring wifi using wpa_cli
248
- test_files: []
265
+ test_files:
266
+ - test/wpa_cli_web/access_point_list_test.rb
249
267
  has_rdoc: