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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14c99341c8f4c868c734bd7043ad3897d7fd7bfc
4
- data.tar.gz: 2559f6e70b729d2326cd825d2a6b7eb3b99ecb49
3
+ metadata.gz: deff9a2b87f3e6c2db940dfdc50d7f3ee62f4835
4
+ data.tar.gz: 2476918b2c7cd4ed825ef009d2dcd4a11edc33c9
5
5
  SHA512:
6
- metadata.gz: 22040e09763a05d23ae34fabd433f6d9d0c8adafb4242d32f5f4179f0a3b1f4f3d48937895440422c56e98949bdfa0e10c1331e87d757747c2c41fbc0ff87c77
7
- data.tar.gz: 8461ed0bae5619ca2d5dbb382349126beb295f2805fefca9ebd874f1d02eb8a65b572bb3edb9d886cda70c1a853fd610b31ce00c80d2e1b7dc14ef580a3ec91b
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
- check_result = api.list_surveys(session_key)
36
- raise unless check_result.is_a? Array or check_result['status'] == 'No surveys found'
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 api # was: if connected? which is more costly
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
@@ -1,3 +1,3 @@
1
1
  module LimesurveyRails
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.0"
3
3
  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.0
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-23 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails