ashikawa-core 0.3.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CONTRIBUTING.md +44 -0
- data/Guardfile +2 -2
- data/README.md +2 -43
- data/Rakefile +11 -5
- data/ashikawa-core.gemspec +5 -4
- data/lib/ashikawa-core/connection.rb +58 -8
- data/lib/ashikawa-core/database.rb +5 -3
- data/lib/ashikawa-core/version.rb +1 -1
- data/spec/integration_auth/arango_helper.rb +30 -0
- data/spec/integration_auth/auth_spec.rb +40 -0
- data/spec/integration_auth/spec_helper.rb +8 -0
- data/spec/unit/connection_spec.rb +51 -4
- data/spec/unit/database_spec.rb +8 -2
- metadata +33 -10
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
When you want to write code for the project, please follow these guidelines:
|
4
|
+
|
5
|
+
1. Claim the ticket: Tell us that you want to work on a certain ticket, we will assign it to you (We don't want two people to work on the same thing ;) )
|
6
|
+
2. Write an Integration Test: Describe what you want to do (our integration tests touch the database)
|
7
|
+
3. Implement it: Write a unit test, check that it fails, make the test pass – repeat (our unit tests don't touch the database)
|
8
|
+
4. Write Documentation for it.
|
9
|
+
5. Check with `rake` that everything is fine and send the Pull Request :)
|
10
|
+
|
11
|
+
## How to get started developing
|
12
|
+
|
13
|
+
Getting started is easy, just follow these steps.
|
14
|
+
|
15
|
+
### In a nutshell
|
16
|
+
|
17
|
+
* Clone the project.
|
18
|
+
* `cd` into the folder and run `bundle`
|
19
|
+
* `rake` and see all tests passing (you need to have ArangoDB installed for that)
|
20
|
+
* Happy coding!
|
21
|
+
|
22
|
+
### Detailed description
|
23
|
+
|
24
|
+
Make sure you are running Ruby 1.9.x (or JRuby/Rubinius in 1.9 mode) and clone the latest snapshot into a directory of your choice. Also make sure ArangoDB is installed and accessible via `arangod` (for example by installing it via `brew install arangodb`).
|
25
|
+
|
26
|
+
We encourage you to use [rvm](https://rvm.io/). If you do so, a gemset for the project is created upon changing into the directory. If you do not use `rvm` nothing special will happen in this case. Don't worry about it.
|
27
|
+
|
28
|
+
Change into the project directory. Run `bundle` to get all dependencies (do a `gem install bundler` before if you don't have bundler installed).
|
29
|
+
|
30
|
+
Now you can run `rake` to see all tests passing (hopefully). Happy coding!
|
31
|
+
|
32
|
+
You can also start up yard for documentation: `rake yard:server`
|
33
|
+
|
34
|
+
### Guard
|
35
|
+
|
36
|
+
Guard is a tool for comfortable development. If you want to use it for development, you have to first start an instance of ArangoDB and then start guard with `guard`. This will:
|
37
|
+
|
38
|
+
* Run a documentation server on `http://localhost:8808`
|
39
|
+
* Run `bundle` whenever you change the dependencies
|
40
|
+
* Run the integration and unit tests whenever you change a file in the lib or spec directory
|
41
|
+
|
42
|
+
### Continuous Integration
|
43
|
+
|
44
|
+
Our tests are run on Travis CI, the build status is displayed above. **Please note** that it only runs the unit tests and not the integration tests, because that would require ArangoDB to be installed on the Travis CI boxes. *Therefore green doesn't neccessarily mean green* (which is unfortunate). Therefore it is important that you run the integration tests on your local machine before sending the pull requests.
|
data/Guardfile
CHANGED
@@ -6,12 +6,12 @@ guard 'yard' do
|
|
6
6
|
watch(%r{lib/.+\.rb})
|
7
7
|
end
|
8
8
|
|
9
|
-
guard 'rspec', :
|
9
|
+
guard 'rspec', :spec_paths => "spec/unit" do
|
10
10
|
watch(%r{lib/.+\.rb})
|
11
11
|
watch(%r{spec/.+\.rb})
|
12
12
|
end
|
13
13
|
|
14
|
-
guard 'rspec', :
|
14
|
+
guard 'rspec', :spec_paths => "spec/integration" do
|
15
15
|
watch(%r{lib/.+\.rb})
|
16
16
|
watch(%r{spec/.+\.rb})
|
17
17
|
end
|
data/README.md
CHANGED
@@ -18,47 +18,6 @@ database["my_collection"].name = "new_name"
|
|
18
18
|
database["new_name"].delete
|
19
19
|
```
|
20
20
|
|
21
|
-
|
21
|
+
# Contributing
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
### In a nutshell
|
26
|
-
|
27
|
-
* Clone the project.
|
28
|
-
* `cd` into the folder and run `bundle`
|
29
|
-
* `rake` and see all tests passing (you need to have ArangoDB installed for that)
|
30
|
-
* Happy coding!
|
31
|
-
|
32
|
-
### Detailed description
|
33
|
-
|
34
|
-
Make sure you are running Ruby 1.9.x (or JRuby/Rubinius in 1.9 mode) and clone the latest snapshot into a directory of your choice. Also make sure ArangoDB is installed and accessible via `arangod` (for example by installing it via `brew install arangodb`).
|
35
|
-
|
36
|
-
We encourage you to use [rvm](https://rvm.io/). If you do so, a gemset for the project is created upon changing into the directory. If you do not use `rvm` nothing special will happen in this case. Don't worry about it.
|
37
|
-
|
38
|
-
Change into the project directory. Run `bundle` to get all dependencies (do a `gem install bundler` before if you don't have bundler installed).
|
39
|
-
|
40
|
-
Now you can run `rake` to see all tests passing (hopefully). Happy coding!
|
41
|
-
|
42
|
-
You can also start up yard for documentation: `rake yard:server`
|
43
|
-
|
44
|
-
### Guard
|
45
|
-
|
46
|
-
Guard is a tool for comfortable development. If you want to use it for development, you have to first start an instance of ArangoDB and then start guard with `guard`. This will:
|
47
|
-
|
48
|
-
* Run a documentation server on `http://localhost:8808`
|
49
|
-
* Run `bundle` whenever you change the dependencies
|
50
|
-
* Run the integration and unit tests whenever you change a file in the lib or spec directory
|
51
|
-
|
52
|
-
### Continuous Integration
|
53
|
-
|
54
|
-
Our tests are run on Travis CI, the build status is displayed above. **Please note** that it only runs the unit tests and not the integration tests, because that would require ArangoDB to be installed on the Travis CI boxes. *Therefore green doesn't neccessarily mean green* (which is unfortunate).
|
55
|
-
|
56
|
-
## Contributing
|
57
|
-
|
58
|
-
When you want to write code for the project, please follow these guidelines:
|
59
|
-
|
60
|
-
1. Claim the ticket: Tell us that you want to work on a certain ticket, we will assign it to you (We don't want two people to work on the same thing ;) )
|
61
|
-
2. Write an Integration Test: Describe what you want to do (our integration tests touch the database)
|
62
|
-
3. Implement it: Write a unit test, check that it fails, make the test pass – repeat (our unit tests don't touch the database)
|
63
|
-
4. Write Documentation for it.
|
64
|
-
5. Check with `rake` that everything is fine and send the Pull Request :)
|
23
|
+
If you want to contribute to the project, see CONTRIBUTING.md for details.
|
data/Rakefile
CHANGED
@@ -12,12 +12,18 @@ namespace :spec do
|
|
12
12
|
spec.rspec_opts = "--require integration/arango_helper.rb"
|
13
13
|
spec.pattern = "spec/integration/*_spec.rb"
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
|
+
desc "Run the authentication integration tests. Requires ArangoDB."
|
17
|
+
RSpec::Core::RakeTask.new(:integration_auth) do |spec|
|
18
|
+
spec.rspec_opts = "--require integration_auth/arango_helper.rb"
|
19
|
+
spec.pattern = "spec/integration_auth/*_spec.rb"
|
20
|
+
end
|
21
|
+
|
16
22
|
desc "Run the unit tests"
|
17
23
|
RSpec::Core::RakeTask.new(:unit) do |spec|
|
18
24
|
spec.pattern = "spec/unit/*_spec.rb"
|
19
25
|
end
|
20
|
-
|
26
|
+
|
21
27
|
desc "Run all tests. Requires ArangoDB"
|
22
28
|
task :all => [:integration, :unit]
|
23
29
|
end
|
@@ -37,7 +43,7 @@ namespace :yard do
|
|
37
43
|
# Yardstick::Rake::Measurement.new(:report) do |measurement|
|
38
44
|
# measurement.output = 'report/measurement.txt'
|
39
45
|
# end
|
40
|
-
|
46
|
+
|
41
47
|
# Yardstick::Rake::Verify.new(:verify) do |verify|
|
42
48
|
# verify.threshold = 100
|
43
49
|
# end
|
@@ -46,12 +52,12 @@ namespace :yard do
|
|
46
52
|
task :generate do
|
47
53
|
`yard`
|
48
54
|
end
|
49
|
-
|
55
|
+
|
50
56
|
desc "start the documentation server on port 8808"
|
51
57
|
task :server do
|
52
58
|
`yard server --reload`
|
53
59
|
end
|
54
|
-
|
60
|
+
|
55
61
|
desc "get statistics on the yard documentation"
|
56
62
|
task :stats do
|
57
63
|
`yard stats`
|
data/ashikawa-core.gemspec
CHANGED
@@ -31,18 +31,19 @@ Gem::Specification.new do |gem|
|
|
31
31
|
else
|
32
32
|
# RedCarpet is not compatible with JRuby
|
33
33
|
# It is only needed to generate the YARD Documentation
|
34
|
-
gem.add_development_dependency "redcarpet", "~> 2.
|
34
|
+
gem.add_development_dependency "redcarpet", "~> 2.2.1"
|
35
35
|
end
|
36
36
|
|
37
37
|
# Development Dependencies
|
38
38
|
gem.add_development_dependency "rake", "~> 0.9.2.2"
|
39
39
|
gem.add_development_dependency "rspec", "~> 2.11.0"
|
40
|
-
gem.add_development_dependency "yard", "~> 0.8.
|
40
|
+
gem.add_development_dependency "yard", "~> 0.8.3"
|
41
41
|
gem.add_development_dependency "webmock", "~> 1.8.9"
|
42
42
|
# gem.add_development_dependency "yardstick", "~> 0.6.0"
|
43
43
|
|
44
|
-
gem.add_development_dependency "guard", "~> 1.
|
45
|
-
gem.add_development_dependency "guard-rspec", "~>
|
44
|
+
gem.add_development_dependency "guard", "~> 1.4.0"
|
45
|
+
gem.add_development_dependency "guard-rspec", "~> 2.1.0"
|
46
46
|
gem.add_development_dependency "guard-bundler", "~> 1.0.0"
|
47
47
|
gem.add_development_dependency "guard-yard", "~> 2.0.0"
|
48
|
+
gem.add_development_dependency "rb-fsevent", "~> 0.9.1"
|
48
49
|
end
|
@@ -5,14 +5,23 @@ module Ashikawa
|
|
5
5
|
module Core
|
6
6
|
# Represents a Connection via HTTP to a certain host
|
7
7
|
class Connection
|
8
|
-
# The
|
8
|
+
# The host part of the connection
|
9
9
|
#
|
10
10
|
# @return [String]
|
11
11
|
# @api public
|
12
|
-
# @example Get the
|
12
|
+
# @example Get the host part of the connection
|
13
13
|
# connection = Connection.new "http://localhost:8529"
|
14
|
-
# connection.
|
15
|
-
attr_reader :
|
14
|
+
# connection.host # => "localhost"
|
15
|
+
attr_reader :host
|
16
|
+
|
17
|
+
# The scheme of the connection
|
18
|
+
#
|
19
|
+
# @return [String]
|
20
|
+
# @api public
|
21
|
+
# @example Get the scheme of the connection
|
22
|
+
# connection = Connection.new "http://localhost:8529"
|
23
|
+
# connection.scheme # => "http"
|
24
|
+
attr_reader :scheme
|
16
25
|
|
17
26
|
# The port of the connection
|
18
27
|
#
|
@@ -23,16 +32,42 @@ module Ashikawa
|
|
23
32
|
# connection.port # => 8529
|
24
33
|
attr_reader :port
|
25
34
|
|
35
|
+
# Username and password of the connection
|
36
|
+
#
|
37
|
+
# Needed if the database is running with HTTP base authentication
|
38
|
+
# enabled. Username and password are sent with every request to
|
39
|
+
# authenticate against the database.
|
40
|
+
#
|
41
|
+
# You can set these properties with the `authenticate_with` method
|
42
|
+
#
|
43
|
+
# @api public
|
44
|
+
attr_reader :username, :password
|
45
|
+
|
26
46
|
# Initialize a Connection with a given API String
|
27
47
|
#
|
28
|
-
# @param [String] api_string
|
48
|
+
# @param [String] api_string scheme, hostname and port as a String
|
29
49
|
# @api public
|
30
50
|
# @example Create a new Connection
|
31
51
|
# connection = Connection.new "http://localhost:8529"
|
32
52
|
def initialize(api_string="http://localhost:8529")
|
33
53
|
@api_string = api_string
|
34
|
-
|
35
|
-
|
54
|
+
|
55
|
+
require 'uri'
|
56
|
+
uri = URI(@api_string)
|
57
|
+
@host = uri.host
|
58
|
+
@port = uri.port
|
59
|
+
@scheme = uri.scheme
|
60
|
+
end
|
61
|
+
|
62
|
+
def authenticate_with(options={})
|
63
|
+
if options.key? :username and options.key? :password
|
64
|
+
@username = options[:username]
|
65
|
+
@password = options[:password]
|
66
|
+
else
|
67
|
+
raise ArgumentError, 'missing username or password'
|
68
|
+
end
|
69
|
+
|
70
|
+
self
|
36
71
|
end
|
37
72
|
|
38
73
|
# Sends a request to a given path (Prepends the api_string automatically)
|
@@ -47,7 +82,7 @@ module Ashikawa
|
|
47
82
|
# @return [Hash] parsed JSON response from the server
|
48
83
|
# @api semipublic
|
49
84
|
def send_request(path, method_params = {})
|
50
|
-
path = "#{
|
85
|
+
path = "#{url}/_api/#{path.gsub(/^\//, '')}"
|
51
86
|
|
52
87
|
answer = if method_params.has_key? :post
|
53
88
|
RestClient.post path, method_params[:post].to_json
|
@@ -61,6 +96,21 @@ module Ashikawa
|
|
61
96
|
|
62
97
|
JSON.parse answer
|
63
98
|
end
|
99
|
+
|
100
|
+
def authentication?
|
101
|
+
!!@username
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
|
106
|
+
def url
|
107
|
+
if authentication?
|
108
|
+
"#{@scheme}://#{@username}:#{@password}@#{@host}:#{@port}"
|
109
|
+
else
|
110
|
+
@api_string
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
64
114
|
end
|
65
115
|
end
|
66
116
|
end
|
@@ -9,10 +9,12 @@ module Ashikawa
|
|
9
9
|
class Database
|
10
10
|
extend Forwardable
|
11
11
|
|
12
|
-
# Delegate sending requests
|
12
|
+
# Delegate sending requests to the connection
|
13
13
|
delegate send_request: :@connection
|
14
|
-
delegate
|
15
|
-
delegate port:
|
14
|
+
delegate host: :@connection
|
15
|
+
delegate port: :@connection
|
16
|
+
delegate scheme: :@connection
|
17
|
+
delegate authenticate_with: :@connection
|
16
18
|
|
17
19
|
# Initializes the connection to the database
|
18
20
|
#
|
@@ -0,0 +1,30 @@
|
|
1
|
+
RSpec.configure do |config|
|
2
|
+
raise "Could not find arangod. Please install it or check if it is in your path." if `which arangod` == ""
|
3
|
+
|
4
|
+
database_directory = "/tmp/ashikawa-integration-auth"
|
5
|
+
arango_process = false
|
6
|
+
|
7
|
+
config.before(:suite) do
|
8
|
+
puts "Generating user with password"
|
9
|
+
`arango-password --database #{database_directory} testuser testpassword`
|
10
|
+
|
11
|
+
puts "Starting ArangoDB with authentication enabled"
|
12
|
+
process_id = $$
|
13
|
+
|
14
|
+
Dir.mkdir database_directory unless Dir.exists? database_directory
|
15
|
+
arango_process = IO.popen("arangod #{database_directory} --server.http-auth yes --watch-process #{process_id}")
|
16
|
+
|
17
|
+
sleep 2 # Wait for Arango to start up
|
18
|
+
end
|
19
|
+
|
20
|
+
config.after(:suite) do
|
21
|
+
puts
|
22
|
+
puts "Shutting down ArangoDB"
|
23
|
+
|
24
|
+
Process.kill "INT", arango_process.pid
|
25
|
+
sleep 2 # Wait for Arango to shut down
|
26
|
+
arango_process.close
|
27
|
+
|
28
|
+
`rm -r #{database_directory}/*`
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'integration/spec_helper'
|
2
|
+
|
3
|
+
describe "authenticated database" do
|
4
|
+
subject { ARANGO_HOST }
|
5
|
+
|
6
|
+
it "should have booted up an ArangoDB instance" do
|
7
|
+
expect { RestClient.get(subject) }.to raise_error RestClient::Unauthorized
|
8
|
+
end
|
9
|
+
|
10
|
+
context "authentication" do
|
11
|
+
subject { Ashikawa::Core::Database.new ARANGO_HOST }
|
12
|
+
|
13
|
+
context "without user and password" do
|
14
|
+
it "should not allow access to DB" do
|
15
|
+
expect do
|
16
|
+
subject["new_collection"]
|
17
|
+
end.to raise_error RestClient::Unauthorized
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "with user and password" do
|
22
|
+
it "should allow acces to DB" do
|
23
|
+
subject.authenticate_with username: 'testuser', password: 'testpassword'
|
24
|
+
|
25
|
+
expect do
|
26
|
+
subject["new_collection"]
|
27
|
+
subject["new_collection"].delete
|
28
|
+
end.to_not raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should deny acces if username and password are wrong" do
|
32
|
+
subject.authenticate_with username: 'ruffy', password: 'three_headed_monkey'
|
33
|
+
|
34
|
+
expect do
|
35
|
+
subject["denied"]
|
36
|
+
end.to raise_error RestClient::Unauthorized
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -4,16 +4,19 @@ require 'ashikawa-core/connection'
|
|
4
4
|
describe Ashikawa::Core::Connection do
|
5
5
|
subject { Ashikawa::Core::Connection }
|
6
6
|
|
7
|
-
it "should have
|
7
|
+
it "should have a scheme, hostname and port" do
|
8
8
|
connection = subject.new "http://localhost:8529"
|
9
9
|
|
10
|
-
connection.
|
10
|
+
connection.scheme.should == "http"
|
11
|
+
connection.host.should == "localhost"
|
11
12
|
connection.port.should == 8529
|
12
13
|
end
|
13
14
|
|
14
|
-
it "should default to localhost and ArangoDB port" do
|
15
|
+
it "should default to HTTP, localhost and ArangoDB port" do
|
15
16
|
connection = subject.new
|
16
|
-
|
17
|
+
|
18
|
+
connection.scheme.should == "http"
|
19
|
+
connection.host.should == "localhost"
|
17
20
|
connection.port.should == 8529
|
18
21
|
end
|
19
22
|
|
@@ -58,4 +61,48 @@ describe Ashikawa::Core::Connection do
|
|
58
61
|
subject.send_request("/my/path").should == {"name" => "dude"}
|
59
62
|
end
|
60
63
|
end
|
64
|
+
|
65
|
+
describe "authentication" do
|
66
|
+
subject { Ashikawa::Core::Connection.new }
|
67
|
+
|
68
|
+
it "should authenticate with username and password" do
|
69
|
+
subject.authenticate_with username: "testuser", password: "testpassword"
|
70
|
+
|
71
|
+
subject.username.should == "testuser"
|
72
|
+
subject.password.should == "testpassword"
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should have authentication turned off by default" do
|
76
|
+
subject.authentication?.should be_false
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should tell if authentication is enabled" do
|
80
|
+
subject.authenticate_with username: "testuser", password: "testpassword"
|
81
|
+
subject.authentication?.should be_true
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should only accept a username & password pairs" do
|
85
|
+
expect {
|
86
|
+
subject.authenticate_with username: "kitty"
|
87
|
+
}.to raise_error(ArgumentError)
|
88
|
+
|
89
|
+
expect {
|
90
|
+
subject.authenticate_with password: "cheezburger?"
|
91
|
+
}.to raise_error(ArgumentError)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should allow chaining" do
|
95
|
+
subject.authenticate_with(username: "a", password: "b").should == subject
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should send the authentication data with every GET request" do
|
99
|
+
stub_request(:get, "http://user:pass@localhost:8529/_api/my/path").to_return body: '{ "name": "dude" }'
|
100
|
+
|
101
|
+
subject.authenticate_with username: "user", password: "pass"
|
102
|
+
subject.send_request "/my/path"
|
103
|
+
|
104
|
+
WebMock.should have_requested(:get, "http://user:pass@localhost:8529/_api/my/path")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
61
108
|
end
|
data/spec/unit/database_spec.rb
CHANGED
@@ -12,11 +12,11 @@ describe Ashikawa::Core::Database do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should initialize with a connection" do
|
15
|
-
@connection.stub(:
|
15
|
+
@connection.stub(:host) { "localhost" }
|
16
16
|
@connection.stub(:port) { 8529 }
|
17
17
|
|
18
18
|
database = subject.new @connection
|
19
|
-
database.
|
19
|
+
database.host.should == "localhost"
|
20
20
|
database.port.should == 8529
|
21
21
|
end
|
22
22
|
|
@@ -30,6 +30,12 @@ describe Ashikawa::Core::Database do
|
|
30
30
|
describe "initialized database" do
|
31
31
|
subject { Ashikawa::Core::Database.new @connection }
|
32
32
|
|
33
|
+
it "should delegate authentication to the connection" do
|
34
|
+
@connection.should_receive(:authenticate_with).with({ username: "user", password: "password" })
|
35
|
+
|
36
|
+
subject.authenticate_with username: "user", password: "password"
|
37
|
+
end
|
38
|
+
|
33
39
|
it "should fetch all available collections" do
|
34
40
|
@connection.stub(:send_request) {|path| server_response("collections/all") }
|
35
41
|
@connection.should_receive(:send_request).with("/collection")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ashikawa-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
requirements:
|
36
36
|
- - ~>
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: 2.
|
38
|
+
version: 2.2.1
|
39
39
|
type: :development
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.
|
46
|
+
version: 2.2.1
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
requirements:
|
84
84
|
- - ~>
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0.8.
|
86
|
+
version: 0.8.3
|
87
87
|
type: :development
|
88
88
|
prerelease: false
|
89
89
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -91,7 +91,7 @@ dependencies:
|
|
91
91
|
requirements:
|
92
92
|
- - ~>
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.8.
|
94
|
+
version: 0.8.3
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: webmock
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,7 +115,7 @@ dependencies:
|
|
115
115
|
requirements:
|
116
116
|
- - ~>
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: 1.
|
118
|
+
version: 1.4.0
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
requirements:
|
124
124
|
- - ~>
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: 1.
|
126
|
+
version: 1.4.0
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: guard-rspec
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,7 +131,7 @@ dependencies:
|
|
131
131
|
requirements:
|
132
132
|
- - ~>
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
134
|
+
version: 2.1.0
|
135
135
|
type: :development
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -139,7 +139,7 @@ dependencies:
|
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version:
|
142
|
+
version: 2.1.0
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
144
|
name: guard-bundler
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,6 +172,22 @@ dependencies:
|
|
172
172
|
- - ~>
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: 2.0.0
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: rb-fsevent
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
none: false
|
179
|
+
requirements:
|
180
|
+
- - ~>
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 0.9.1
|
183
|
+
type: :development
|
184
|
+
prerelease: false
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ~>
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: 0.9.1
|
175
191
|
description: Ashikawa Core is a wrapper around the ArangoDB REST API. It provides
|
176
192
|
low level access and will be used in different ArangoDB ODMs.
|
177
193
|
email:
|
@@ -184,6 +200,7 @@ files:
|
|
184
200
|
- .gitignore
|
185
201
|
- .rvmrc
|
186
202
|
- .travis.yml
|
203
|
+
- CONTRIBUTING.md
|
187
204
|
- Gemfile
|
188
205
|
- Guardfile
|
189
206
|
- LICENSE
|
@@ -226,6 +243,9 @@ files:
|
|
226
243
|
- spec/integration/index_spec.rb
|
227
244
|
- spec/integration/query_spec.rb
|
228
245
|
- spec/integration/spec_helper.rb
|
246
|
+
- spec/integration_auth/arango_helper.rb
|
247
|
+
- spec/integration_auth/auth_spec.rb
|
248
|
+
- spec/integration_auth/spec_helper.rb
|
229
249
|
- spec/unit/collection_spec.rb
|
230
250
|
- spec/unit/connection_spec.rb
|
231
251
|
- spec/unit/cursor_spec.rb
|
@@ -286,6 +306,9 @@ test_files:
|
|
286
306
|
- spec/integration/index_spec.rb
|
287
307
|
- spec/integration/query_spec.rb
|
288
308
|
- spec/integration/spec_helper.rb
|
309
|
+
- spec/integration_auth/arango_helper.rb
|
310
|
+
- spec/integration_auth/auth_spec.rb
|
311
|
+
- spec/integration_auth/spec_helper.rb
|
289
312
|
- spec/unit/collection_spec.rb
|
290
313
|
- spec/unit/connection_spec.rb
|
291
314
|
- spec/unit/cursor_spec.rb
|