ngi_api 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +37 -0
- data/lib/ngi_api/version.rb +1 -1
- data/lib/ngi_api.rb +9 -4
- data/spec/ngi_api_spec.rb +127 -1
- metadata +2 -2
data/.gitignore
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
<<<<<<< HEAD
|
1
2
|
/.bundle/
|
2
3
|
/.yardoc
|
3
4
|
/Gemfile.lock
|
@@ -13,3 +14,39 @@
|
|
13
14
|
*.a
|
14
15
|
mkmf.log
|
15
16
|
cacert.pem
|
17
|
+
=======
|
18
|
+
*.gem
|
19
|
+
*.rbc
|
20
|
+
/.config
|
21
|
+
/coverage/
|
22
|
+
/InstalledFiles
|
23
|
+
/pkg/
|
24
|
+
/spec/reports/
|
25
|
+
/test/tmp/
|
26
|
+
/test/version_tmp/
|
27
|
+
/tmp/
|
28
|
+
|
29
|
+
## Specific to RubyMotion:
|
30
|
+
.dat*
|
31
|
+
.repl_history
|
32
|
+
build/
|
33
|
+
|
34
|
+
## Documentation cache and generated files:
|
35
|
+
/.yardoc/
|
36
|
+
/_yardoc/
|
37
|
+
/doc/
|
38
|
+
/rdoc/
|
39
|
+
|
40
|
+
## Environment normalisation:
|
41
|
+
/.bundle/
|
42
|
+
/lib/bundler/man/
|
43
|
+
|
44
|
+
# for a library or gem, you might want to ignore these files since the code is
|
45
|
+
# intended to run in multiple environments; otherwise, check them in:
|
46
|
+
# Gemfile.lock
|
47
|
+
# .ruby-version
|
48
|
+
# .ruby-gemset
|
49
|
+
|
50
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
51
|
+
.rvmrc
|
52
|
+
>>>>>>> 71defb1db547347cf4973972add9a39d23ab6fc8
|
data/lib/ngi_api/version.rb
CHANGED
data/lib/ngi_api.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require "digest"
|
4
|
-
# gem "rubyntlm", "~> 0.3.2" # no "gems" in here! Dependencies go
|
4
|
+
# gem "rubyntlm", "~> 0.3.2" # no "gems" in here! Dependencies go in gemspec.
|
5
5
|
require "rubyntlm"
|
6
6
|
require "savon"
|
7
7
|
require "net/http"
|
@@ -85,9 +85,9 @@ class NgiAPI
|
|
85
85
|
# call-seq:
|
86
86
|
# MyNGIAccess.infoBts(btsID) => {...}
|
87
87
|
#
|
88
|
-
# Obtain the exact informations about a specific BTS. btsID is a non-negative integer
|
88
|
+
# Obtain the exact informations about a specific BTS. btsID is a non-negative integer, number or string
|
89
89
|
def infoBts(btsID)
|
90
|
-
raise ArgumentError, "btsID value not allowed" unless btsID.to_i > 0 && btsID.
|
90
|
+
raise ArgumentError, "btsID value not allowed" unless btsID.to_i > 0 && btsID.to_s[/\A[-+]?\d+\z/] === btsID.to_s # kudos to http://stackoverflow.com/a/1235990/2513430
|
91
91
|
build_and_send_query(:info_bts,
|
92
92
|
{
|
93
93
|
btsID: parameter_to_string(btsID)
|
@@ -125,7 +125,7 @@ class NgiAPI
|
|
125
125
|
#
|
126
126
|
# Obtain the istat code for the town.
|
127
127
|
def listComuni(comune)
|
128
|
-
raise ArgumentError, "comune is not >=2 and <= 35 in length, or has not allowed characters" unless is_valid_comune(parameter_to_string(comune))
|
128
|
+
raise ArgumentError, "comune is not >= 2 and <= 35 in length, or has not allowed characters" unless is_valid_comune(parameter_to_string(comune))
|
129
129
|
build_and_send_query(:list_comuni,
|
130
130
|
{
|
131
131
|
comune: parameter_to_string(comune)
|
@@ -173,6 +173,11 @@ class NgiAPI
|
|
173
173
|
login.upcase
|
174
174
|
end
|
175
175
|
|
176
|
+
# check if string is integer
|
177
|
+
def is_i?
|
178
|
+
/\A[-+]?\d+\z/ === self
|
179
|
+
end
|
180
|
+
|
176
181
|
# Download the 'cacert.pem' file from "curl.haxx.se" if not found in the running directory
|
177
182
|
# Courtesy of https://gist.github.com/fnichol/867550
|
178
183
|
def fetch_cacert
|
data/spec/ngi_api_spec.rb
CHANGED
@@ -1,6 +1,132 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe NgiAPI do
|
4
|
+
context 'when in test mode' do
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@myNgiAPI = NgiAPI.new({test: true})
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'can build a test instance' do
|
11
|
+
expect(@myNgiAPI).to be_an_instance_of NgiAPI
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#listBts' do
|
15
|
+
# OKs
|
16
|
+
it 'returns a BtsListType' do
|
17
|
+
expect(@myNgiAPI.listBts[:lista_bts][:"@xsi:type"]).to eq("ns1:BtsListType")
|
18
|
+
end
|
19
|
+
|
20
|
+
# KOs
|
21
|
+
it 'sometimes returns an empty list (1 in 10)' do
|
22
|
+
sample = ""
|
23
|
+
10.times do
|
24
|
+
sample = @myNgiAPI.listBts[:lista_bts][:items]
|
25
|
+
break if sample.nil?
|
26
|
+
end
|
27
|
+
expect(sample).to be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#infoRadio' do
|
32
|
+
# OKs
|
33
|
+
it 'is fine with a dot separated single mac' do
|
34
|
+
expect(@myNgiAPI.infoRadio('00.aA.bB.cC.dD.11')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
35
|
+
end
|
36
|
+
it 'is fine with a colon divided single mac' do
|
37
|
+
expect(@myNgiAPI.infoRadio('00:aA:bB:cC:dD:11')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
38
|
+
end
|
39
|
+
it 'is fine with a dashed single mac' do
|
40
|
+
expect(@myNgiAPI.infoRadio('00-aA-bB-cC-dD-11')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
41
|
+
end
|
42
|
+
it 'is fine with an unspaced single mac' do
|
43
|
+
expect(@myNgiAPI.infoRadio('00aAbBcCdD11')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
44
|
+
end
|
45
|
+
it 'is fine with a mixed separated single mac' do
|
46
|
+
expect(@myNgiAPI.infoRadio('00aA:bB.cC-dD-11')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
47
|
+
end
|
48
|
+
it 'is okay with a single lowercase login' do
|
49
|
+
expect(@myNgiAPI.infoRadio('w12345678901')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
50
|
+
end
|
51
|
+
it 'is okay with a single uppercase login' do
|
52
|
+
expect(@myNgiAPI.infoRadio('W12345678901')[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
53
|
+
end
|
54
|
+
it 'is fine with an array of mixed values' do
|
55
|
+
test_array = [
|
56
|
+
'00.aA.bB.cC.dD.11',
|
57
|
+
'00-aA-bB-cC-dD-11',
|
58
|
+
'00aAbBcCdD11',
|
59
|
+
'00aA:bB.cC-dD-11',
|
60
|
+
'w12345678901',
|
61
|
+
'W12345678901'
|
62
|
+
]
|
63
|
+
expect(@myNgiAPI.infoRadio(test_array)[:info][:"@xsi:type"]).to eq("ns1:radioInfoListType")
|
64
|
+
end
|
65
|
+
|
66
|
+
# KOs
|
67
|
+
it 'fails with a non-mac non-login value' do
|
68
|
+
expect{ @myNgiAPI.infoRadio('someinvalidstring') }.to raise_error(ArgumentError)
|
69
|
+
end
|
70
|
+
it 'fails with a large (> 20) array' do
|
71
|
+
large_test_array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]
|
72
|
+
expect{ @myNgiAPI.infoRadio(large_test_array) }.to raise_error(ArgumentError)
|
73
|
+
end
|
74
|
+
it 'fails with a mac value of 000000000000' do
|
75
|
+
expect{ @myNgiAPI.infoRadio('000000000000') }.to raise_error
|
76
|
+
expect{ @myNgiAPI.infoRadio('00.00.00.00.00.00') }.to raise_error
|
77
|
+
expect{ @myNgiAPI.infoRadio('00:00:00:00:00:00') }.to raise_error
|
78
|
+
expect{ @myNgiAPI.infoRadio('00-00-00-00-00-00') }.to raise_error
|
79
|
+
expect{ @myNgiAPI.infoRadio('000000:00.00-00') }.to raise_error
|
80
|
+
end
|
81
|
+
it 'fails with a login value of W00000000000' do
|
82
|
+
expect{ @myNgiAPI.infoRadio('W00000000000') }.to raise_error
|
83
|
+
expect{ @myNgiAPI.infoRadio('w00000000000') }.to raise_error
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#infoBts' do
|
89
|
+
# OKs
|
90
|
+
it 'returns sample data with a numeric param' do
|
91
|
+
expect( @myNgiAPI.infoBts(3)[:info_bts][:"@xsi:type"] ).to eq("ns1:BtsFullInfoType")
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'returns sample data with a numeric string param' do
|
95
|
+
expect( @myNgiAPI.infoBts("3")[:info_bts][:"@xsi:type"] ).to eq("ns1:BtsFullInfoType")
|
96
|
+
end
|
97
|
+
|
98
|
+
# KOs
|
99
|
+
it 'throws an error with btsId < 1' do
|
100
|
+
expect{ @myNgiAPI.infoBts(0) }.to raise_error(ArgumentError)
|
101
|
+
expect{ @myNgiAPI.infoBts('0') }.to raise_error(ArgumentError)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
describe '#infoCoverage' do
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
describe '#listComuni' do
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#setEthernet' do
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
describe '#rebootRadio' do
|
119
|
+
# OKs
|
120
|
+
it 'returns true'
|
121
|
+
|
122
|
+
# KOs
|
123
|
+
it 'throws an error if mac address is invalid'
|
124
|
+
it 'returns an error if mac is all 0s or all 1s'
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
|
4
130
|
# subject { NgiApi.new }
|
5
131
|
|
6
132
|
# describe '#process' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ngi_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-02-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|