sessionvoc-open 1.7.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +26 -0
- data/LICENSE.txt +202 -0
- data/README.md +193 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/config.yml.sample +5 -0
- data/examples/example.sql +31 -0
- data/examples/example.xml +110 -0
- data/init.rb +6 -0
- data/install.rb +4 -0
- data/lib/sessionvoc-open.rb +26 -0
- data/lib/sessionvoc-store/open/controller_methods.rb +10 -0
- data/lib/sessionvoc-store/open/railtie.rb +17 -0
- data/lib/sessionvoc-store/open/sessionvoc_store.rb +299 -0
- data/lib/sessionvoc/open/authentification.rb +137 -0
- data/lib/sessionvoc/open/base.rb +169 -0
- data/lib/sessionvoc/open/client.rb +54 -0
- data/lib/sessionvoc/open/configuration.rb +24 -0
- data/lib/sessionvoc/open/data_conversion.rb +100 -0
- data/lib/sessionvoc/open/exceptions.rb +59 -0
- data/lib/sessionvoc/open/form_data.rb +64 -0
- data/lib/sessionvoc/open/meta_data.rb +18 -0
- data/lib/sessionvoc/open/session.rb +63 -0
- data/sessionvoc-open.gemspec +103 -0
- data/test/config.yml +5 -0
- data/test/helper.rb +38 -0
- data/test/test_sessionvoc_authentification.rb +62 -0
- data/test/test_sessionvoc_base.rb +62 -0
- data/test/test_sessionvoc_data_conversion.rb +96 -0
- data/test/test_sessionvoc_form_data.rb +118 -0
- data/test/test_sessionvoc_meta_data.rb +17 -0
- data/test/test_sessionvoc_session.rb +73 -0
- data/uninstall.rb +4 -0
- metadata +228 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
module Sessionvoc
|
4
|
+
module Open
|
5
|
+
# Raised when no SessionVOC client could be created due to a missing configuration.
|
6
|
+
class ConfigurationMissingException < Exception; end
|
7
|
+
|
8
|
+
# The SessionVOC server is not accessible with this configuration.
|
9
|
+
class ConnectionRefusedException < Exception; end
|
10
|
+
|
11
|
+
# Raised when the SessionVOC server could not create a new session.
|
12
|
+
class SessionCreationFailureException < Exception; end
|
13
|
+
|
14
|
+
# Raised when no or an invalid session id is used and it is unknown to SessionVOC.
|
15
|
+
class InvalidSidException < Exception; end
|
16
|
+
|
17
|
+
# Raised when the session identified by a sid could not be deleted.
|
18
|
+
class SessionDeletionFailure < Exception; end
|
19
|
+
|
20
|
+
# Raised when invalid JSON is passed to SessionVOC.
|
21
|
+
class InvalidJSONException < Exception; end
|
22
|
+
|
23
|
+
# Raised when an unidentified problem occured.
|
24
|
+
class UnknownException < Exception; end
|
25
|
+
|
26
|
+
# Raised when the given credentials are unknown to SessionVOC.
|
27
|
+
class AuthentificationFailedException < Exception; end
|
28
|
+
|
29
|
+
# Raised when an illegal user identifier is passed to SessionVOC.
|
30
|
+
class IllegalUserIdentifierException < Exception; end
|
31
|
+
|
32
|
+
# Raised when an illegal authentification request is passed to SessionVOC.
|
33
|
+
class IllegalAuthentificationRequestException < Exception; end
|
34
|
+
|
35
|
+
# Raised when an illegal request is passed to SessionVOC.
|
36
|
+
class IllegalRequestException < Exception; end
|
37
|
+
|
38
|
+
# Raised when an internal server error occurs in SessionVOC.
|
39
|
+
class InternalServerErrorException < Exception; end
|
40
|
+
|
41
|
+
# Raised when an unknown or invalid form id is passed to SessionVOC.
|
42
|
+
class InvalidFidException < Exception; end
|
43
|
+
|
44
|
+
# Raised when a form data problem occurred in SessionVOC.
|
45
|
+
class FormDataCantBeDestroyedException < Exception; end
|
46
|
+
|
47
|
+
# Raised when a form data problem occurred in SessionVOC.
|
48
|
+
class FormDataCantBeModifiedException < Exception; end
|
49
|
+
|
50
|
+
# Raised when an unsupported functionality in this ruby library was used.
|
51
|
+
class NotSupportedException < Exception; end
|
52
|
+
|
53
|
+
# Raised when the given data could not be converted to the data types expected by SessionVOC.
|
54
|
+
class DataConversionException < Exception; end
|
55
|
+
|
56
|
+
# Raised when an unknown, temporary error in SessionVOC occurs.
|
57
|
+
class TemporaryErrorException < Exception; end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
module Sessionvoc
|
4
|
+
module Open
|
5
|
+
# The methods in this module handle all form data relevant actions.
|
6
|
+
module FormData
|
7
|
+
# Creates a new form context within a given session and returns a fid which identifies the form context.
|
8
|
+
# === Parameters
|
9
|
+
# * sid = Session Id
|
10
|
+
# * options
|
11
|
+
def create_form_data(sid, options = {})
|
12
|
+
response = get_response(:post, "/formdata/#{sid}")
|
13
|
+
if response_ok?(response)
|
14
|
+
response.parsed_response["fid"]
|
15
|
+
else
|
16
|
+
handle_exception(response.parsed_response["errorCode"], response.parsed_response["message"])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Deletes a form context within a session.
|
21
|
+
# === Parameters
|
22
|
+
# * sid = Session Id
|
23
|
+
# * fid = Form Id
|
24
|
+
# * options
|
25
|
+
def delete_form_data(sid, fid, options = {})
|
26
|
+
response = get_response(:delete, "/formdata/#{sid}/#{fid}")
|
27
|
+
if response_ok?(response)
|
28
|
+
response.parsed_response["deleted"]
|
29
|
+
else
|
30
|
+
handle_exception(response.parsed_response["errorCode"], response.parsed_response["message"])
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the contents of a form context within a session.
|
35
|
+
# === Parameters
|
36
|
+
# * sid = Session Id
|
37
|
+
# * fid = Form Id
|
38
|
+
# * options
|
39
|
+
def get_form_data(sid, fid, options = {})
|
40
|
+
response = get_response(:get, "/formdata/#{sid}/#{fid}")
|
41
|
+
if response and response.response.is_a?(Net::HTTPOK)
|
42
|
+
response.parsed_response
|
43
|
+
else
|
44
|
+
handle_exception(response.parsed_response["errorCode"], response.parsed_response["message"])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Updates/replaces the form data in SessionVOC with the form_data passed to this method.
|
49
|
+
# === Parameters
|
50
|
+
# * sid = Session Id
|
51
|
+
# * fid = Form Id
|
52
|
+
# * form_data = Form data hash
|
53
|
+
# * options
|
54
|
+
def update_form_data(sid, fid, form_data, options = {})
|
55
|
+
response = get_response(:put, "/formdata/#{sid}/#{fid}", {:body => form_data.to_json})
|
56
|
+
if response_ok?(response)
|
57
|
+
(response.parsed_response['sid'] and response.parsed_response['fid'])
|
58
|
+
else
|
59
|
+
handle_exception(response.parsed_response["errorCode"], response.parsed_response["message"])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
module Sessionvoc
|
4
|
+
module Open
|
5
|
+
# The methods in this module handle all meta data related actions.
|
6
|
+
module MetaData
|
7
|
+
# Returns meta data info from the SessionVOC server. Includes types and access permissions.
|
8
|
+
def datainfo
|
9
|
+
response = get_response(:get, "/datainfo")
|
10
|
+
if response_ok?(response)
|
11
|
+
return response.parsed_response
|
12
|
+
else
|
13
|
+
raise Sessionvoc::Open::UnknownException
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
module Sessionvoc
|
4
|
+
module Open
|
5
|
+
# The methods in this module handle all session related actions.
|
6
|
+
module Session
|
7
|
+
# Creates a new session in the SessionVOC server and returns a sid.
|
8
|
+
def new_session
|
9
|
+
response = get_response(:post, "/session")
|
10
|
+
if response_ok?(response)
|
11
|
+
return response.parsed_response["sid"]
|
12
|
+
else
|
13
|
+
raise Sessionvoc::Open::SessionCreationFailureException
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Deletes an existing session in the SessionVOC server.
|
18
|
+
# === Parameters
|
19
|
+
# * sid = Session Id
|
20
|
+
def delete_session(sid)
|
21
|
+
response = get_response(:delete, "/session/#{sid}")
|
22
|
+
if response_ok?(response) and response.parsed_response["deleted"]
|
23
|
+
return true
|
24
|
+
else
|
25
|
+
handle_exception(response.parsed_response["errorCode"], response.parsed_response["message"])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Updates the contents of the session in the SessionVOC server. Pass in a session_data hash containing the "transData" und "userData"
|
30
|
+
# sections.
|
31
|
+
# === Parameters
|
32
|
+
# * sid = Session Id
|
33
|
+
# * session_data = Session data hash
|
34
|
+
# * options
|
35
|
+
def update(sid, session_data, options = {})
|
36
|
+
logger.debug("Session Data for sid #{sid}: #{session_data.inspect}")
|
37
|
+
body = {}
|
38
|
+
body['transData'] = session_data['transData'] if session_data['transData'] and not session_data['transData'].empty?
|
39
|
+
body['userData'] = session_data['userData'] if session_data['userData'] and not session_data['userData'].empty?
|
40
|
+
logger.debug("Body JSON: #{body.to_json}")
|
41
|
+
response = get_response(:put, "/session/#{sid}", {:body => body.to_json})
|
42
|
+
response_ok?(response) ? response.parsed_response : handle_exception(response.parsed_response["errorCode"], response.parsed_response["message"])
|
43
|
+
end
|
44
|
+
|
45
|
+
# Alias for get_session.
|
46
|
+
# === Parameters
|
47
|
+
# * sid
|
48
|
+
def output(sid); get_session(sid); end
|
49
|
+
|
50
|
+
# Retuns the contents of a session from the SessionVOC server as a hash.
|
51
|
+
# === Parameters
|
52
|
+
# * sid = Session Id
|
53
|
+
def get_session(sid)
|
54
|
+
response = get_response(:get, "/session/#{sid}")
|
55
|
+
if response_ok?(response)
|
56
|
+
return response.parsed_response
|
57
|
+
else
|
58
|
+
raise Sessionvoc::Open::InvalidSidException
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{sessionvoc-open}
|
8
|
+
s.version = "1.7.3"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["triAGENS GmbH", "Oliver Kiessler"]
|
12
|
+
s.date = %q{2011-04-14}
|
13
|
+
s.description = %q{Rails 3 Plugin to integrate with SessionVOC. In order to manage user sessions efficiently the SessionVOC provides the functions login, logout, read and write of a session. Furthermore it has the ability to synchronize with one or more persistent relational databases.}
|
14
|
+
s.email = %q{kiessler@inceedo.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.md",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"config.yml.sample",
|
28
|
+
"examples/example.sql",
|
29
|
+
"examples/example.xml",
|
30
|
+
"init.rb",
|
31
|
+
"install.rb",
|
32
|
+
"lib/sessionvoc-open.rb",
|
33
|
+
"lib/sessionvoc-store/open/controller_methods.rb",
|
34
|
+
"lib/sessionvoc-store/open/railtie.rb",
|
35
|
+
"lib/sessionvoc-store/open/sessionvoc_store.rb",
|
36
|
+
"lib/sessionvoc/open/authentification.rb",
|
37
|
+
"lib/sessionvoc/open/base.rb",
|
38
|
+
"lib/sessionvoc/open/client.rb",
|
39
|
+
"lib/sessionvoc/open/configuration.rb",
|
40
|
+
"lib/sessionvoc/open/data_conversion.rb",
|
41
|
+
"lib/sessionvoc/open/exceptions.rb",
|
42
|
+
"lib/sessionvoc/open/form_data.rb",
|
43
|
+
"lib/sessionvoc/open/meta_data.rb",
|
44
|
+
"lib/sessionvoc/open/session.rb",
|
45
|
+
"test/config.yml",
|
46
|
+
"test/helper.rb",
|
47
|
+
"test/test_sessionvoc_authentification.rb",
|
48
|
+
"test/test_sessionvoc_base.rb",
|
49
|
+
"test/test_sessionvoc_data_conversion.rb",
|
50
|
+
"test/test_sessionvoc_form_data.rb",
|
51
|
+
"test/test_sessionvoc_meta_data.rb",
|
52
|
+
"test/test_sessionvoc_session.rb",
|
53
|
+
"uninstall.rb"
|
54
|
+
]
|
55
|
+
s.homepage = %q{http://www.worldofvoc.com/products/sessionvoc/summary/}
|
56
|
+
s.licenses = ["Apache License Version 2.0, January 2004"]
|
57
|
+
s.require_paths = ["lib"]
|
58
|
+
s.rubygems_version = %q{1.5.2}
|
59
|
+
s.summary = %q{The SessionVOC is a noSQL database optimized for the management of user sessions.}
|
60
|
+
s.test_files = [
|
61
|
+
"test/helper.rb",
|
62
|
+
"test/test_sessionvoc_authentification.rb",
|
63
|
+
"test/test_sessionvoc_base.rb",
|
64
|
+
"test/test_sessionvoc_data_conversion.rb",
|
65
|
+
"test/test_sessionvoc_form_data.rb",
|
66
|
+
"test/test_sessionvoc_meta_data.rb",
|
67
|
+
"test/test_sessionvoc_session.rb"
|
68
|
+
]
|
69
|
+
|
70
|
+
if s.respond_to? :specification_version then
|
71
|
+
s.specification_version = 3
|
72
|
+
|
73
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
74
|
+
s.add_runtime_dependency(%q<httparty>, [">= 0"])
|
75
|
+
s.add_runtime_dependency(%q<json>, [">= 0"])
|
76
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
77
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
78
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
79
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
80
|
+
s.add_runtime_dependency(%q<httparty>, [">= 0.7.4"])
|
81
|
+
s.add_runtime_dependency(%q<json>, [">= 1.4.6"])
|
82
|
+
else
|
83
|
+
s.add_dependency(%q<httparty>, [">= 0"])
|
84
|
+
s.add_dependency(%q<json>, [">= 0"])
|
85
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
86
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
87
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
88
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
89
|
+
s.add_dependency(%q<httparty>, [">= 0.7.4"])
|
90
|
+
s.add_dependency(%q<json>, [">= 1.4.6"])
|
91
|
+
end
|
92
|
+
else
|
93
|
+
s.add_dependency(%q<httparty>, [">= 0"])
|
94
|
+
s.add_dependency(%q<json>, [">= 0"])
|
95
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
96
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
97
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
98
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
99
|
+
s.add_dependency(%q<httparty>, [">= 0.7.4"])
|
100
|
+
s.add_dependency(%q<json>, [">= 1.4.6"])
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
data/test/config.yml
ADDED
data/test/helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'test/unit'
|
13
|
+
require 'shoulda'
|
14
|
+
require 'digest'
|
15
|
+
|
16
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
17
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
18
|
+
require 'sessionvoc-open'
|
19
|
+
|
20
|
+
class Test::Unit::TestCase
|
21
|
+
def non_sid
|
22
|
+
"473878374888888888888zfgiusdhfkhsdfz843z987843975893745897389#{rand(10)}#{Time.now.to_i}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def non_fid
|
26
|
+
"3748748#{rand(10)}#{Time.now.to_i}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def client
|
30
|
+
port = ENV['SESSIONVOC_PORT']
|
31
|
+
host = ENV['SESSIONVOC_HOST']
|
32
|
+
if host and port
|
33
|
+
@client ||= Sessionvoc::Open::Client.new('host' => host, 'port' => port, 'log_level' => Logger::DEBUG)
|
34
|
+
else
|
35
|
+
@client ||= Sessionvoc::Open::Client.new('log_level' => Logger::DEBUG)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestSessionvocAuthentification < Test::Unit::TestCase
|
6
|
+
should "perform a simple authentification" do
|
7
|
+
sid = client.new_session
|
8
|
+
assert client.simple(sid, 'testuser', 'tester')
|
9
|
+
end
|
10
|
+
|
11
|
+
should "fail to perform a simple authentification due to a non-existing sid" do
|
12
|
+
sid = client.new_session
|
13
|
+
assert non_sid != sid
|
14
|
+
assert_raise Sessionvoc::Open::InvalidSidException do
|
15
|
+
client.simple(non_sid, 'testuser', 'tester')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
should "perform a logout" do
|
20
|
+
sid = client.new_session
|
21
|
+
assert client.simple(sid, 'testuser', 'tester')
|
22
|
+
assert client.logout(sid)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "perform the correct encryption and hashing" do
|
26
|
+
assert_equal client.send(:encrypt_password, 'tester', 'abcdef', Sessionvoc::Open::Base::HASH_TYPES[:HASH_NONE]), 'tester'
|
27
|
+
assert_equal client.send(:encrypt_password, 'tester', 'abcdef', Sessionvoc::Open::Base::HASH_TYPES[:HASH_SHA1]), 'db1e80e88bdeb3182c368f2b9d798431'
|
28
|
+
assert_equal client.send(:encrypt_password, 'tester', 'abcdef', Sessionvoc::Open::Base::HASH_TYPES[:HASH_MD5]), '8310a7f94396ec64c9221227ba5c667e'
|
29
|
+
|
30
|
+
assert_raise Sessionvoc::Open::NotSupportedException do
|
31
|
+
client.send(:encrypt_password, 'tester', 'abcdef', Sessionvoc::Open::Base::HASH_TYPES[:HASH_SHA224])
|
32
|
+
end
|
33
|
+
|
34
|
+
assert_raise Sessionvoc::Open::NotSupportedException do
|
35
|
+
client.send(:encrypt_password, 'tester', 'abcdef', Sessionvoc::Open::Base::HASH_TYPES[:HASH_SHA256])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
should "create a nonce" do
|
40
|
+
nonce = client.create_nonce
|
41
|
+
assert_not_nil nonce
|
42
|
+
assert_equal nonce.length, 17
|
43
|
+
timestamp = Time.now.to_i
|
44
|
+
random_number = client.gen_64bit_id
|
45
|
+
local_nonce = Base64.encode64("#{timestamp.to_s[0..3]}#{random_number[4..11]}")
|
46
|
+
nonce = client.create_nonce(timestamp, random_number)
|
47
|
+
assert_not_nil nonce
|
48
|
+
assert_equal nonce.length, 17
|
49
|
+
assert_equal nonce, local_nonce
|
50
|
+
|
51
|
+
nonce = client.create_nonce(timestamp, random_number, {:no_encode => true})
|
52
|
+
assert_equal nonce, "#{timestamp.to_s[0..3]}#{random_number[4..11]}"
|
53
|
+
end
|
54
|
+
|
55
|
+
should "check the status of a nonce" do
|
56
|
+
10.times do
|
57
|
+
nonce = client.create_nonce
|
58
|
+
assert client.get_nonce(nonce)
|
59
|
+
assert !client.get_nonce(nonce)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Copyright:: 2011 triAGENS GmbH
|
2
|
+
# Author:: Oliver Kiessler (mailto:kiessler@inceedo.com)
|
3
|
+
require 'helper'
|
4
|
+
require "ftools"
|
5
|
+
|
6
|
+
class TestSessionvocBase < Test::Unit::TestCase
|
7
|
+
should "initialize configuration" do
|
8
|
+
client = Sessionvoc::Open::Client.new('protocol' => 'http', 'host' => 'localhost', 'port' => '12345',
|
9
|
+
'log_level' => Logger::DEBUG, 'strict_mode' => true)
|
10
|
+
assert_not_nil client
|
11
|
+
assert_not_nil client.configuration
|
12
|
+
assert_not_nil client.configuration.options
|
13
|
+
assert_not_nil client.logger
|
14
|
+
|
15
|
+
assert_equal client.configuration.options['protocol'], 'http'
|
16
|
+
assert_equal client.configuration.options['host'], 'localhost'
|
17
|
+
assert_equal client.configuration.options['port'], '12345'
|
18
|
+
assert_equal client.configuration.options['log_level'], Logger::DEBUG
|
19
|
+
assert client.configuration.options['strict_mode']
|
20
|
+
end
|
21
|
+
|
22
|
+
should "return error codes" do
|
23
|
+
client = Sessionvoc::Open::Client.new('host' => 'localhost', 'port' => '12345', 'strict_mode' => true)
|
24
|
+
assert_not_nil client.send(:codes)
|
25
|
+
end
|
26
|
+
|
27
|
+
should "return correct server base url based on configuration" do
|
28
|
+
client = Sessionvoc::Open::Client.new('host' => 'localhost', 'port' => '12345')
|
29
|
+
assert_equal client.send(:base_url), 'http://localhost:12345'
|
30
|
+
|
31
|
+
client2 = Sessionvoc::Open::Client.new('protocol' => 'https', 'host' => 'localhost', 'port' => '8080')
|
32
|
+
assert_equal client2.send(:base_url), 'https://localhost:8080'
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'initialize configuration from yml file from current directory' do
|
36
|
+
client = Sessionvoc::Open::Client.new
|
37
|
+
assert_equal client.configuration.options['protocol'], 'http'
|
38
|
+
assert_equal client.configuration.options['host'], 'localhost'
|
39
|
+
assert_equal client.configuration.options['port'], '8208'
|
40
|
+
assert client.configuration.options['strict_mode']
|
41
|
+
assert_equal client.configuration.options['auth'], 'none'
|
42
|
+
end
|
43
|
+
|
44
|
+
should "read configuration" do
|
45
|
+
assert_not_nil (client = Sessionvoc::Open::Client.new)
|
46
|
+
File.copy('test/config.yml', './config.yml')
|
47
|
+
client.send(:read_configuration)
|
48
|
+
assert_not_nil client.configuration
|
49
|
+
File.delete('./config.yml')
|
50
|
+
end
|
51
|
+
|
52
|
+
should "set the strict mode" do
|
53
|
+
client = Sessionvoc::Open::Client.new('host' => 'localhost', 'port' => '12345', 'strict_mode' => true)
|
54
|
+
assert client.send(:use_strict_mode?)
|
55
|
+
client = Sessionvoc::Open::Client.new('host' => 'localhost', 'port' => '12345', 'strict_mode' => false)
|
56
|
+
assert !client.send(:use_strict_mode?)
|
57
|
+
end
|
58
|
+
|
59
|
+
should 'return client version' do
|
60
|
+
assert_equal Sessionvoc::Open::Client::VERSION, '1.7.3'
|
61
|
+
end
|
62
|
+
end
|