limesurvey_rails 1.4.0 → 1.5.0
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.
- checksums.yaml +4 -4
- data/lib/limesurvey_rails/limesurvey_rails.rb +15 -4
- data/lib/limesurvey_rails/version.rb +1 -1
- data/spec/limesurvey_rails_spec.rb +35 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: deff9a2b87f3e6c2db940dfdc50d7f3ee62f4835
|
4
|
+
data.tar.gz: 2476918b2c7cd4ed825ef009d2dcd4a11edc33c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db6011cb81ac60051295041e94899abcb83ae35b6bec659b772c3731cd57ea23aebde8350068a95e6ed729c7852117670853b801e409cfadb63f814f363c5d3c
|
7
|
+
data.tar.gz: d53d732dbb60484f875b5505eb68aee5308eb43680fa6025f3a17eada77dd84121386035eb1ba6eefe246c202b9805dbc771703d5138558dcebcccf2fbc2ed92
|
@@ -28,12 +28,16 @@ module LimesurveyRails
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def self.connected?
|
31
|
+
def self.connected?(verify = false)
|
32
32
|
begin
|
33
33
|
raise unless configured?
|
34
34
|
raise unless session_key.present?
|
35
|
-
|
36
|
-
|
35
|
+
|
36
|
+
if verify
|
37
|
+
check_result = api.list_surveys(session_key)
|
38
|
+
raise unless check_result.is_a? Array or check_result['status'] == 'No surveys found'
|
39
|
+
end
|
40
|
+
|
37
41
|
true
|
38
42
|
rescue Exception => e
|
39
43
|
if configuration.try(:auto_connection)
|
@@ -51,7 +55,7 @@ module LimesurveyRails
|
|
51
55
|
|
52
56
|
def self.method_missing(method_name, *arguments, &block)
|
53
57
|
if API_METHODS.include? method_name.to_s
|
54
|
-
if
|
58
|
+
if connected?
|
55
59
|
# t0=Time.now
|
56
60
|
result = api.send(method_name, *arguments.unshift(session_key))
|
57
61
|
# puts "#{method_name} in #{Time.now-t0}"
|
@@ -65,6 +69,13 @@ module LimesurveyRails
|
|
65
69
|
[]
|
66
70
|
when /(left to send)|(No candidate tokens)$/
|
67
71
|
result # get regular result
|
72
|
+
when /Invalid session key$/
|
73
|
+
arguments.shift
|
74
|
+
if configuration.auto_connection and connect(true)
|
75
|
+
self.send(method_name, *arguments, &block)
|
76
|
+
else
|
77
|
+
raise RemoteControlError, 'you are disconnected from Limesurvey: Invalid session key'
|
78
|
+
end
|
68
79
|
else
|
69
80
|
raise RemoteControlError, "#{method_name} returned a failure response status: #{result["status"]}"
|
70
81
|
end
|
@@ -80,6 +80,18 @@ describe LimesurveyRails, :main => true do
|
|
80
80
|
describe ".wrong_name_method" do
|
81
81
|
specify { expect { LimesurveyRails.wrong_name_method }.to raise_error }
|
82
82
|
end
|
83
|
+
context "when it's session key becomes invalid/expired" do
|
84
|
+
before(:each) do
|
85
|
+
LimesurveyRails.session_key = 'wrong_session_key'
|
86
|
+
end
|
87
|
+
its(:connected?) { is_expected.to be true }
|
88
|
+
describe ".connected?(true)" do
|
89
|
+
specify { expect(LimesurveyRails.connected?(true)).to be false }
|
90
|
+
end
|
91
|
+
it "raise RemoteControlError claiming Invalid session key" do
|
92
|
+
expect { LimesurveyRails.list_surveys }.to raise_error(LimesurveyRails::RemoteControlError, /Invalid session key$/)
|
93
|
+
end
|
94
|
+
end
|
83
95
|
end
|
84
96
|
context "when it's configurated with continuous connection" do
|
85
97
|
before(:each) do
|
@@ -88,6 +100,29 @@ describe LimesurveyRails, :main => true do
|
|
88
100
|
end
|
89
101
|
end
|
90
102
|
its(:connected?) { is_expected.to be true }
|
103
|
+
describe ".connected?(true)" do
|
104
|
+
specify { expect(LimesurveyRails.connected?(true)).to be true }
|
105
|
+
end
|
106
|
+
context "when it is connected" do
|
107
|
+
before(:each) do
|
108
|
+
LimesurveyRails.connect
|
109
|
+
end
|
110
|
+
context "when it's session key becomes invalid/expired" do
|
111
|
+
before(:each) do
|
112
|
+
LimesurveyRails.session_key = 'wrong_session_key'
|
113
|
+
end
|
114
|
+
its(:connected?) { is_expected.to be true }
|
115
|
+
describe ".connected?(true)" do
|
116
|
+
specify { expect(LimesurveyRails.connected?(true)).to be true }
|
117
|
+
end
|
118
|
+
describe ".list_surveys" do
|
119
|
+
it "returns a correct result and LimesurveyRails gets a new session_key after reconnecting" do
|
120
|
+
expect(LimesurveyRails.list_surveys).to be_an(Array) and
|
121
|
+
expect(LimesurveyRails.session_key).not_to eq('wrong_session_key')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
91
126
|
end
|
92
127
|
end
|
93
128
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: limesurvey_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- masciugo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|