sinatra_resource 0.4.21 → 0.4.22
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +18 -0
- data/Gemfile.lock +51 -0
- data/README.mdown +1 -1
- data/VERSION +1 -1
- data/examples/datacatalog/.bundle/config +2 -0
- data/examples/datacatalog/Gemfile +14 -0
- data/examples/datacatalog/Gemfile.lock +33 -0
- data/examples/datacatalog/Rakefile +2 -2
- data/examples/datacatalog/app.rb +0 -2
- data/examples/datacatalog/config/config.rb +5 -7
- data/examples/datacatalog/lib/base.rb +2 -2
- data/examples/datacatalog/lib/resource.rb +5 -5
- data/examples/datacatalog/lib/roles.rb +2 -2
- data/examples/datacatalog/model_helpers/search.rb +6 -6
- data/examples/datacatalog/models/categorization.rb +1 -1
- data/examples/datacatalog/models/note.rb +1 -1
- data/examples/datacatalog/models/source.rb +3 -3
- data/examples/datacatalog/models/usage.rb +2 -2
- data/examples/datacatalog/models/user.rb +7 -7
- data/examples/datacatalog/resources/categories.rb +7 -7
- data/examples/datacatalog/resources/categories_sources.rb +4 -4
- data/examples/datacatalog/resources/notes.rb +1 -1
- data/examples/datacatalog/resources/sources.rb +3 -3
- data/examples/datacatalog/resources/sources_usages.rb +3 -3
- data/examples/datacatalog/resources/users.rb +3 -3
- data/examples/datacatalog/tasks/db.rake +2 -2
- data/examples/datacatalog/tasks/test.rake +1 -1
- data/examples/datacatalog/test/helpers/assertions/assert_include.rb +1 -1
- data/examples/datacatalog/test/helpers/assertions/assert_not_include.rb +1 -1
- data/examples/datacatalog/test/helpers/lib/model_factories.rb +7 -7
- data/examples/datacatalog/test/helpers/lib/model_helpers.rb +1 -1
- data/examples/datacatalog/test/helpers/lib/request_helpers.rb +7 -7
- data/examples/datacatalog/test/helpers/resource_test_helper.rb +1 -1
- data/examples/datacatalog/test/helpers/shared/api_keys.rb +11 -11
- data/examples/datacatalog/test/helpers/shared/common_body_responses.rb +1 -1
- data/examples/datacatalog/test/helpers/shared/model_counts.rb +2 -2
- data/examples/datacatalog/test/helpers/shared/status_codes.rb +4 -4
- data/examples/datacatalog/test/helpers/test_cases/resource_test_case.rb +4 -4
- data/examples/datacatalog/test/helpers/test_helper.rb +4 -10
- data/examples/datacatalog/test/models/categorization_test.rb +6 -6
- data/examples/datacatalog/test/models/category_test.rb +8 -8
- data/examples/datacatalog/test/models/note_test.rb +6 -6
- data/examples/datacatalog/test/models/search_test.rb +4 -4
- data/examples/datacatalog/test/models/source_test.rb +5 -5
- data/examples/datacatalog/test/models/user_test.rb +11 -11
- data/examples/datacatalog/test/resources/categories/categories_delete_test.rb +12 -12
- data/examples/datacatalog/test/resources/categories/categories_get_many_test.rb +9 -9
- data/examples/datacatalog/test/resources/categories/categories_get_one_test.rb +7 -7
- data/examples/datacatalog/test/resources/categories/categories_post_test.rb +16 -16
- data/examples/datacatalog/test/resources/categories/categories_put_test.rb +17 -17
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_delete_test.rb +25 -25
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_get_many_test.rb +5 -5
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_get_one_test.rb +15 -15
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_post_test.rb +31 -31
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_put_test.rb +41 -41
- data/examples/datacatalog/test/resources/notes/notes_get_many_test.rb +15 -15
- data/examples/datacatalog/test/resources/notes/notes_get_one_test.rb +7 -7
- data/examples/datacatalog/test/resources/notes/notes_post_test.rb +12 -12
- data/examples/datacatalog/test/resources/sources/sources_delete_test.rb +12 -12
- data/examples/datacatalog/test/resources/sources/sources_get_many_search_test.rb +20 -20
- data/examples/datacatalog/test/resources/sources/sources_get_many_test.rb +8 -8
- data/examples/datacatalog/test/resources/sources/sources_get_one_test.rb +17 -9
- data/examples/datacatalog/test/resources/sources/sources_post_test.rb +13 -13
- data/examples/datacatalog/test/resources/sources/sources_put_test.rb +30 -30
- data/examples/datacatalog/test/resources/sources_usages/sources_usages_delete_test.rb +24 -24
- data/examples/datacatalog/test/resources/sources_usages/sources_usages_get_many_filter_test.rb +9 -9
- data/examples/datacatalog/test/resources/sources_usages/sources_usages_get_many_test.rb +9 -9
- data/examples/datacatalog/test/resources/sources_usages/sources_usages_get_one_test.rb +15 -15
- data/examples/datacatalog/test/resources/sources_usages/sources_usages_post_test.rb +16 -16
- data/examples/datacatalog/test/resources/sources_usages/sources_usages_put_test.rb +33 -33
- data/examples/datacatalog/test/resources/users/users_delete_test.rb +21 -21
- data/examples/datacatalog/test/resources/users/users_get_many_test.rb +16 -16
- data/examples/datacatalog/test/resources/users/users_get_one_test.rb +8 -8
- data/examples/datacatalog/test/resources/users/users_post_test.rb +13 -13
- data/examples/datacatalog/test/resources/users/users_put_test.rb +18 -18
- data/lib/builder/action_definitions.rb +8 -8
- data/lib/builder/helpers.rb +10 -12
- data/lib/builder/mongo_helpers.rb +13 -14
- data/lib/builder.rb +10 -10
- data/lib/exceptions.rb +1 -1
- data/lib/resource.rb +20 -20
- data/lib/roles.rb +2 -2
- data/lib/utility.rb +2 -2
- data/notes/permissions.mdown +6 -6
- data/sinatra_resource.gemspec +9 -4
- data/spec/spec_helper.rb +1 -1
- data/spec/utility_spec.rb +2 -2
- metadata +30 -4
@@ -8,7 +8,7 @@ module RequestHelpers
|
|
8
8
|
Crack::JSON.parse(s)
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def assert_properties(correct, parsed_document)
|
13
13
|
correct.each do |property|
|
14
14
|
assert_include property, parsed_document
|
@@ -19,7 +19,7 @@ module RequestHelpers
|
|
19
19
|
def self.included(includee)
|
20
20
|
includee.extend(ClassMethods)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
module ClassMethods
|
24
24
|
def doc_properties(correct)
|
25
25
|
test "document should only have correct attributes" do
|
@@ -34,13 +34,13 @@ module RequestHelpers
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def invalid_param(s)
|
39
39
|
test "should report #{s} as invalid" do
|
40
40
|
assert_include s.to_s, parsed_response_body["errors"]["invalid_params"]
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def missing_param(s)
|
45
45
|
test "should report missing #{s}" do
|
46
46
|
assert_include "can't be empty", parsed_response_body["errors"][s.to_s]
|
@@ -55,7 +55,7 @@ module RequestHelpers
|
|
55
55
|
assert_equal expected, last_response.headers['Location']
|
56
56
|
end
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
def nested_location_header(parent_path, parent_ivar, child_path)
|
60
60
|
test "should set Location header correctly" do
|
61
61
|
base_uri = Config.environment_config["base_uri"]
|
@@ -67,8 +67,8 @@ module RequestHelpers
|
|
67
67
|
assert_equal expected, last_response.headers['Location']
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
end
|
@@ -2,43 +2,43 @@ class ResourceTestCase
|
|
2
2
|
|
3
3
|
shared "return 400 because no params were given" do
|
4
4
|
use "return 400 Bad Request"
|
5
|
-
|
5
|
+
|
6
6
|
test "body should say no params were given" do
|
7
7
|
assert_include "errors", parsed_response_body
|
8
8
|
assert_include "no_params", parsed_response_body["errors"]
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
shared "return 400 because params were
|
12
|
+
shared "return 400 because invalid params were present" do
|
13
13
|
use "return 400 Bad Request"
|
14
|
-
|
15
|
-
test "body should say params were
|
14
|
+
|
15
|
+
test "body should say invalid params were present" do
|
16
16
|
assert_include "errors", parsed_response_body
|
17
|
-
assert_include "
|
17
|
+
assert_include "invalid_params", parsed_response_body["errors"]
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
shared "return 401 because the API key is invalid" do
|
22
22
|
use "return 401 Unauthorized"
|
23
|
-
|
23
|
+
|
24
24
|
test "body should say the API key is invalid" do
|
25
25
|
assert_include "errors", parsed_response_body
|
26
26
|
assert_include "invalid_api_key", parsed_response_body["errors"]
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
shared "return 401 because the API key is missing" do
|
31
31
|
use "return 401 Unauthorized"
|
32
|
-
|
32
|
+
|
33
33
|
test "body should say the API key is missing" do
|
34
34
|
assert_include "errors", parsed_response_body
|
35
35
|
assert_include "missing_api_key", parsed_response_body["errors"]
|
36
36
|
end
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
shared "return 401 because the API key is unauthorized" do
|
40
40
|
use "return 401 Unauthorized"
|
41
|
-
|
41
|
+
|
42
42
|
test "body should say the API key is unauthorized" do
|
43
43
|
assert_include "errors", parsed_response_body
|
44
44
|
assert_include "unauthorized_api_key", parsed_response_body["errors"]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class ResourceTestCase
|
2
|
-
|
2
|
+
|
3
3
|
# == categories
|
4
4
|
|
5
5
|
shared "no change in category count" do
|
@@ -13,7 +13,7 @@ class ResourceTestCase
|
|
13
13
|
assert_equal @category_count - 1, DataCatalog::Category.all.length
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
shared "one new category" do
|
18
18
|
test "should add one category document to database" do
|
19
19
|
assert_equal @category_count + 1, DataCatalog::Category.all.length
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class ResourceTestCase
|
2
|
-
|
2
|
+
|
3
3
|
shared "return 200 Ok" do
|
4
4
|
test "status should be 200 Ok" do
|
5
5
|
assert_equal 200, last_response.status
|
@@ -12,7 +12,7 @@ class ResourceTestCase
|
|
12
12
|
test "status should be 201 Created" do
|
13
13
|
assert_equal 201, last_response.status
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
test "location header should start with http://localhost" do
|
17
17
|
assert_include "Location", last_response.headers
|
18
18
|
generic_uri = %r{^http://localhost}
|
@@ -26,7 +26,7 @@ class ResourceTestCase
|
|
26
26
|
test "status should be 204 No Content" do
|
27
27
|
assert_equal 204, last_response.status
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
use "return an empty response body"
|
31
31
|
use "content type header not set"
|
32
32
|
end
|
@@ -65,7 +65,7 @@ class ResourceTestCase
|
|
65
65
|
|
66
66
|
shared "return 404 Not Found with empty response body" do
|
67
67
|
use "return 404 Not Found"
|
68
|
-
|
68
|
+
|
69
69
|
use "return an empty response body"
|
70
70
|
end
|
71
71
|
|
@@ -14,15 +14,15 @@ class ResourceTestCase < Test::Unit::TestCase
|
|
14
14
|
)
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
after :all do
|
19
19
|
@users_by_role.each_pair { |role, user| user.destroy }
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def user_for(role)
|
23
23
|
@users_by_role[role]
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def api_key_for(role)
|
27
27
|
key = @users_by_role[role]._api_key
|
28
28
|
raise "API key not found" unless key
|
@@ -32,5 +32,5 @@ class ResourceTestCase < Test::Unit::TestCase
|
|
32
32
|
def valid_params_for(role)
|
33
33
|
@valid_params.merge(:api_key => api_key_for(role))
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
end
|
@@ -1,19 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
require '
|
4
|
-
|
3
|
+
require 'crack/json'
|
4
|
+
require 'pending'
|
5
5
|
require 'rack/test'
|
6
6
|
require 'rr'
|
7
|
-
|
8
|
-
|
9
|
-
require 'crack/json'
|
10
|
-
|
11
|
-
gem 'tu-context', '>= 0.5.8'
|
7
|
+
require 'test/unit'
|
8
|
+
require 'timecop'
|
12
9
|
require 'tu-context'
|
13
10
|
|
14
|
-
gem 'pending', '>= 0.1.1'
|
15
|
-
require 'pending'
|
16
|
-
|
17
11
|
base = File.dirname(__FILE__)
|
18
12
|
Dir.glob(base + '/lib/*.rb' ).each { |f| require f }
|
19
13
|
Dir.glob(base + '/test_cases/*.rb').each { |f| require f }
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../helpers/model_test_helper')
|
2
2
|
|
3
3
|
class CategorizationTest < ModelTestCase
|
4
|
-
|
4
|
+
|
5
5
|
include DataCatalog
|
6
|
-
|
6
|
+
|
7
7
|
context "Categorization" do
|
8
8
|
before do
|
9
9
|
@source = create_source
|
@@ -13,13 +13,13 @@ class CategorizationTest < ModelTestCase
|
|
13
13
|
:category_id => @category.id
|
14
14
|
)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
after do
|
18
18
|
@source.destroy
|
19
19
|
@category.destroy
|
20
20
|
@categorization.destroy
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
test "Categorization#source is correct" do
|
24
24
|
assert_equal @source, @categorization.source
|
25
25
|
end
|
@@ -27,11 +27,11 @@ class CategorizationTest < ModelTestCase
|
|
27
27
|
test "Categorization#category is correct" do
|
28
28
|
assert_equal @category, @categorization.category
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
test "Source#categorization is correct" do
|
32
32
|
assert_equal [@categorization], @source.categorizations
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
test "Category#categorization is correct" do
|
36
36
|
assert_equal [@categorization], @category.categorizations
|
37
37
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../helpers/model_test_helper')
|
2
2
|
|
3
3
|
class CategoryTest < ModelTestCase
|
4
|
-
|
4
|
+
|
5
5
|
include DataCatalog
|
6
6
|
|
7
7
|
before do
|
@@ -15,33 +15,33 @@ class CategoryTest < ModelTestCase
|
|
15
15
|
before do
|
16
16
|
@category = Category.new(@required)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
test "should be valid" do
|
20
20
|
assert_equal true, @category.valid?
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
[:name].each do |missing|
|
25
25
|
context "missing #{missing}" do
|
26
26
|
before do
|
27
27
|
@category = Category.new(@required.delete_if { |k, v| k == missing })
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
missing_key(:category, missing)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
context "Category with 0 categorizations" do
|
36
36
|
before do
|
37
37
|
@category = Category.create(@required)
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
test "#sources should be empty" do
|
41
41
|
assert_equal [], @category.sources
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
context "Category with 3 categorizations" do
|
46
46
|
before do
|
47
47
|
@category = Category.create(@required)
|
@@ -57,7 +57,7 @@ class CategoryTest < ModelTestCase
|
|
57
57
|
)
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
test "#sources should have 3 categorizations" do
|
62
62
|
categorizations = @category.categorizations
|
63
63
|
assert_equal 3, categorizations.length
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../helpers/model_test_helper')
|
2
2
|
|
3
3
|
class NoteTest < ModelTestCase
|
4
|
-
|
4
|
+
|
5
5
|
include DataCatalog
|
6
6
|
|
7
7
|
context "Note" do
|
@@ -12,16 +12,16 @@ class NoteTest < ModelTestCase
|
|
12
12
|
:user_id => @user.id
|
13
13
|
}
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
after do
|
17
17
|
@user.destroy
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
context "correct params" do
|
21
21
|
before do
|
22
22
|
@note = Note.new(@required)
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
test "should be valid" do
|
26
26
|
assert_equal true, @note.valid?
|
27
27
|
end
|
@@ -32,11 +32,11 @@ class NoteTest < ModelTestCase
|
|
32
32
|
before do
|
33
33
|
@note = Note.new(@required.delete_if { |k, v| k == missing })
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
missing_key(:note, missing)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
end
|
@@ -25,20 +25,20 @@ class SearchUnitTest < ModelTestCase
|
|
25
25
|
Search.tokens("The earth has an axial tilt of 23.439 degrees.")
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
context "tokenize" do
|
30
30
|
test "simple" do
|
31
31
|
assert_equal %w(aerospace defense systems),
|
32
32
|
Search.tokenize(["aerospace defense", "defense systems"])
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
context "unstop" do
|
37
37
|
test "simple" do
|
38
38
|
assert_equal %w(big brown fox), Search.unstop(%w(the big brown fox))
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
context "process" do
|
43
43
|
test "simple" do
|
44
44
|
assert_equal %w(aerospace defense systems),
|
@@ -50,5 +50,5 @@ class SearchUnitTest < ModelTestCase
|
|
50
50
|
Search.process(["The earth has an axial tilt of 23.439 degrees."])
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../helpers/model_test_helper')
|
2
2
|
|
3
3
|
class SourceTest < ModelTestCase
|
4
|
-
|
4
|
+
|
5
5
|
include DataCatalog
|
6
6
|
|
7
7
|
context "Source" do
|
@@ -11,12 +11,12 @@ class SourceTest < ModelTestCase
|
|
11
11
|
:url => "http://moneybags.gov/data/2009"
|
12
12
|
}
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
context "correct params" do
|
16
16
|
before do
|
17
17
|
@source = Source.new(@required)
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
test "should be valid" do
|
21
21
|
assert_equal true, @source.valid?
|
22
22
|
end
|
@@ -27,11 +27,11 @@ class SourceTest < ModelTestCase
|
|
27
27
|
before do
|
28
28
|
@source = Source.new(@required.delete_if { |k, v| k == missing })
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
missing_key(:source, missing)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../helpers/model_test_helper')
|
2
2
|
|
3
3
|
class UserTest < ModelTestCase
|
4
|
-
|
4
|
+
|
5
5
|
include DataCatalog
|
6
6
|
|
7
7
|
context "User#new" do
|
@@ -11,27 +11,27 @@ class UserTest < ModelTestCase
|
|
11
11
|
:role => "basic"
|
12
12
|
}
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
context "correct params" do
|
16
16
|
before do
|
17
17
|
@user = User.new(@required)
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
test "should be valid" do
|
21
21
|
assert_equal true, @user.valid?
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
test "should not set api_key" do
|
25
25
|
assert_equal nil, @user._api_key
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
[:name, :role].each do |missing|
|
30
30
|
context "missing #{missing}" do
|
31
31
|
before do
|
32
32
|
@user = User.new(@required.delete_if { |k, v| k == missing })
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
missing_key(:user, missing)
|
36
36
|
end
|
37
37
|
end
|
@@ -41,7 +41,7 @@ class UserTest < ModelTestCase
|
|
41
41
|
@user = User.new(@required.merge(:role => "owner"))
|
42
42
|
# owner is not a 'fixed' role, it is a 'relative' role
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
test "should be invalid" do
|
46
46
|
assert_equal false, @user.valid?
|
47
47
|
end
|
@@ -58,20 +58,20 @@ class UserTest < ModelTestCase
|
|
58
58
|
before do
|
59
59
|
@user = User.create(@required)
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
after do
|
63
63
|
@user.destroy
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
test "should be valid" do
|
67
67
|
assert_equal true, @user.valid?
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
test "should set api_key" do
|
71
71
|
assert_not_equal nil, @user._api_key
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
end
|
@@ -20,7 +20,7 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
20
20
|
before do
|
21
21
|
delete "/#{@category.id}"
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
use "return 401 because the API key is missing"
|
25
25
|
use "no change in category count"
|
26
26
|
end
|
@@ -29,18 +29,18 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
29
29
|
before do
|
30
30
|
delete "/#{@category.id}", :api_key => BAD_API_KEY
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
use "return 401 because the API key is invalid"
|
34
34
|
use "no change in category count"
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
%w(basic).each do |role|
|
39
39
|
context "#{role} : delete /:fake_id" do
|
40
40
|
before do
|
41
41
|
delete "/#{FAKE_ID}", :api_key => api_key_for(role)
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
use "return 401 because the API key is unauthorized"
|
45
45
|
use "no change in category count"
|
46
46
|
end
|
@@ -51,7 +51,7 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
51
51
|
:api_key => api_key_for(role),
|
52
52
|
:key => "value"
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
use "return 401 because the API key is unauthorized"
|
56
56
|
use "no change in category count"
|
57
57
|
end
|
@@ -60,7 +60,7 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
60
60
|
before do
|
61
61
|
delete "/#{@category.id}", :api_key => api_key_for(role)
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
use "return 401 because the API key is unauthorized"
|
65
65
|
use "no change in category count"
|
66
66
|
end
|
@@ -71,7 +71,7 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
71
71
|
before do
|
72
72
|
delete "/#{FAKE_ID}", :api_key => api_key_for(role)
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
use "return 404 Not Found with empty response body"
|
76
76
|
use "no change in category count"
|
77
77
|
end
|
@@ -82,8 +82,8 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
82
82
|
:api_key => api_key_for(role),
|
83
83
|
:key => "value"
|
84
84
|
end
|
85
|
-
|
86
|
-
use "return 400 because params were
|
85
|
+
|
86
|
+
use "return 400 because invalid params were present"
|
87
87
|
use "no change in category count"
|
88
88
|
end
|
89
89
|
|
@@ -91,15 +91,15 @@ class CategoriesDeleteResourceTest < ResourceTestCase
|
|
91
91
|
before do
|
92
92
|
delete "/#{@category.id}", :api_key => api_key_for(role)
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
use "return 204 No Content"
|
96
96
|
use "one less category"
|
97
|
-
|
97
|
+
|
98
98
|
test "callbacks should work" do
|
99
99
|
actual = last_response.headers['X-Test-Callbacks']
|
100
100
|
assert_equal "before_destroy after_destroy", actual
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
end
|
@@ -14,11 +14,11 @@ class CategoriesGetManyResourceTest < ResourceTestCase
|
|
14
14
|
create_category(:name => "Category #{i}")
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
after do
|
19
19
|
@categories.each { |x| x.destroy } if @categories
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
CATEGORIES = ["Category 0", "Category 1", "Category 2"].sort
|
23
23
|
|
24
24
|
context "get /" do
|
@@ -26,15 +26,15 @@ class CategoriesGetManyResourceTest < ResourceTestCase
|
|
26
26
|
before do
|
27
27
|
get "/"
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
use "return 401 because the API key is missing"
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
context "incorrect API key" do
|
34
34
|
before do
|
35
35
|
get "/", :api_key => BAD_API_KEY
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
use "return 401 because the API key is invalid"
|
39
39
|
end
|
40
40
|
end
|
@@ -45,18 +45,18 @@ class CategoriesGetManyResourceTest < ResourceTestCase
|
|
45
45
|
get "/", :api_key => api_key_for(role)
|
46
46
|
@members = parsed_response_body['members']
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
use "return 200 Ok"
|
50
|
-
|
50
|
+
|
51
51
|
test "body should have 3 categories" do
|
52
52
|
assert_equal 3, @members.length
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
test "body should have correct category names" do
|
56
56
|
actual = @members.map { |e| e["name"] }
|
57
57
|
assert_equal CATEGORIES, actual.sort
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
test "members should only have correct attributes" do
|
61
61
|
correct = %w(name log sources id created_at updated_at)
|
62
62
|
@members.each do |member|
|