ashikawa-core 0.3.0 → 0.4.1
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/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
|