sunstone 6.1.0.2 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/ext/active_record/associations/collection_association.rb +1 -1
  3. data/ext/active_record/attribute_methods.rb +7 -1
  4. data/ext/active_record/finder_methods.rb +14 -13
  5. data/ext/active_record/persistence.rb +6 -3
  6. data/ext/active_record/relation/calculations.rb +11 -4
  7. data/ext/active_record/relation/query_methods.rb +1 -1
  8. data/ext/active_record/statement_cache.rb +0 -1
  9. data/ext/arel/nodes/select_statement.rb +3 -3
  10. data/lib/active_record/connection_adapters/sunstone/column.rb +1 -1
  11. data/lib/active_record/connection_adapters/sunstone/database_statements.rb +8 -9
  12. data/lib/active_record/connection_adapters/sunstone/schema_statements.rb +31 -14
  13. data/lib/active_record/connection_adapters/sunstone_adapter.rb +17 -7
  14. data/lib/arel/collectors/sunstone.rb +25 -4
  15. data/lib/arel/visitors/sunstone.rb +21 -26
  16. data/lib/sunstone/connection.rb +40 -13
  17. data/lib/sunstone/version.rb +1 -1
  18. metadata +21 -61
  19. data/.github/workflows/main.yml +0 -141
  20. data/.gitignore +0 -31
  21. data/.tm_properties +0 -1
  22. data/Gemfile +0 -4
  23. data/README.md +0 -46
  24. data/Rakefile +0 -37
  25. data/TODO.md +0 -89
  26. data/sunstone.gemspec +0 -40
  27. data/test/active_record/associations/belongs_to_test.rb +0 -162
  28. data/test/active_record/associations/has_and_belongs_to_many_test.rb +0 -125
  29. data/test/active_record/associations/has_many_test.rb +0 -244
  30. data/test/active_record/eager_loading_test.rb +0 -62
  31. data/test/active_record/persistance_test.rb +0 -184
  32. data/test/active_record/preload_test.rb +0 -51
  33. data/test/active_record/query/all_test.rb +0 -33
  34. data/test/active_record/query/count_test.rb +0 -51
  35. data/test/active_record/query/distinct_test.rb +0 -30
  36. data/test/active_record/query/find_test.rb +0 -37
  37. data/test/active_record/query/limit_test.rb +0 -19
  38. data/test/active_record/query/order_test.rb +0 -27
  39. data/test/active_record/query/where_test.rb +0 -79
  40. data/test/active_record/query_test.rb +0 -131
  41. data/test/active_record/rpc_test.rb +0 -30
  42. data/test/schema_mock.rb +0 -121
  43. data/test/sunstone/connection/column_definition_test.rb +0 -30
  44. data/test/sunstone/connection/configuration_test.rb +0 -44
  45. data/test/sunstone/connection/cookie_store_test.rb +0 -37
  46. data/test/sunstone/connection/request_helper_test.rb +0 -105
  47. data/test/sunstone/connection/send_request_test.rb +0 -164
  48. data/test/sunstone/connection_test.rb +0 -23
  49. data/test/test_helper.rb +0 -153
@@ -1,51 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::QueryCountTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
- end
10
-
11
- class Fleet < ActiveRecord::Base
12
- has_many :ships
13
- end
14
-
15
- class Ship < ActiveRecord::Base
16
- belongs_to :fleet
17
- end
18
-
19
- test '::count' do
20
- webmock(:get, "/ships/calculate", select: [{count: "*"}], limit: 100, offset: 0).to_return({
21
- body: [10].to_json
22
- })
23
-
24
- assert_equal 10, Ship.count
25
- end
26
-
27
- test '::count(:column)' do
28
- webmock(:get, "/ships/calculate", select: [{count: "id"}], limit: 100, offset: 0).to_return({
29
- body: [10].to_json
30
- })
31
-
32
- assert_equal 10, Ship.count(:id)
33
- end
34
-
35
- test '::count with eager_load' do
36
- webmock(:get, "/ships/calculate", select: [{count: "id"}], limit: 100, offset: 0).to_return({
37
- body: [10].to_json
38
- })
39
-
40
- assert_equal 10, Ship.eager_load(:fleet).count
41
- end
42
-
43
- test '::sum(:column)' do
44
- webmock(:get, "/ships/calculate", select: [{sum: "weight"}], limit: 100, offset: 0).to_return({
45
- body: [10].to_json
46
- })
47
-
48
- assert_equal 10, Ship.sum(:weight)
49
- end
50
-
51
- end
@@ -1,30 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::QueryDistinctTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
- end
10
-
11
- class Ship < ActiveRecord::Base
12
- end
13
-
14
- # Distinct
15
- test '::distinct query' do
16
- webmock(:get, "/ships", distinct: true, limit: 100, offset: 0).to_return({
17
- body: [].to_json
18
- })
19
-
20
- assert_equal [], Ship.distinct
21
- end
22
-
23
- # TODO: i need arel-extensions....
24
- # test '::distinct_on query' do
25
- # webmock(:get, "/ships", distinct_on: ['id']).to_return(body: [].to_json)
26
- #
27
- # assert_equal [], Ship.distinct_on(:id)
28
- # end
29
-
30
- end
@@ -1,37 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::QueryFindTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
- end
10
-
11
- class Ship < ActiveRecord::Base
12
- end
13
-
14
- test '::find' do
15
- webmock(:get, "/ships", { where: {id: 42}, limit: 1 }).to_return({
16
- body: [{id: 42}].to_json
17
- })
18
-
19
- assert_equal 42, Ship.find(42).id
20
- end
21
-
22
- test '::find_each' do
23
- requests = []
24
-
25
- requests << webmock(:get, "/ships", { limit: 100, offset: 0, order: [{id: :asc}] }).to_return({
26
- body: Array.new(100, { id: 1 }).to_json
27
- })
28
- requests << webmock(:get, "/ships", { limit: 100, offset: 100, order: [{id: :asc}] }).to_return({
29
- body: Array.new(10, { id: 2 }).to_json
30
- })
31
-
32
- assert_nil Ship.find_each { |s| s }
33
-
34
- requests.each { |r| assert_requested(r) }
35
- end
36
-
37
- end
@@ -1,19 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::LimitTest < ActiveSupport::TestCase
4
- schema do
5
- create_table "ships" do |t|
6
- t.string "name", limit: 255
7
- end
8
- end
9
-
10
- class Ship < ActiveRecord::Base
11
- end
12
-
13
- test '::limit' do
14
- webmock(:get, "/ships", {limit: 5000}).to_return(body: [{id: 42}].to_json)
15
- assert_equal Ship.limit(5000).map(&:id), [42]
16
- end
17
-
18
-
19
- end
@@ -1,27 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::OrderTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
- end
10
-
11
- class Ship < ActiveRecord::Base
12
- end
13
-
14
- test '::order(COLUMN)' do
15
- webmock(:get, "/ships", { limit: 1, order: [{id: :asc}] }).to_return({
16
- body: [{id: 42}].to_json
17
- })
18
-
19
- assert_equal 42, Ship.order(:id).first.id
20
- end
21
-
22
- # TODO: Uses Arel::Nodes::RandomOrdering from:
23
- # https://github.com/malomalo/activerecord-sort
24
- # which should probably go into arel-extensions?
25
- test '::order(:random)'
26
-
27
- end
@@ -1,79 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::QueryWhereTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
-
10
- create_table "fleets" do |t|
11
- t.string "name", limit: 255
12
- t.integer "fleet_id"
13
- end
14
-
15
- create_table "sailors" do |t|
16
- t.string "name", limit: 255
17
- t.integer "ship_id"
18
- end
19
- end
20
-
21
- class Fleet < ActiveRecord::Base
22
- has_many :ships
23
- end
24
-
25
- class Ship < ActiveRecord::Base
26
- belongs_to :fleet
27
- has_many :sailors
28
- end
29
-
30
- class Sailor < ActiveRecord::Base
31
- belongs_to :ship
32
- end
33
-
34
- test '::where on columns' do
35
- webmock(:get, "/ships", { where: { id: 10 }, limit: 100, offset: 0 }).to_return(body: [].to_json)
36
-
37
- assert_equal [], Ship.where(id: 10).to_a
38
- end
39
-
40
- test '::where column is nil' do
41
- webmock(:get, "/ships", { where: { fleet_id: nil }, limit: 100, offset: 0 }).to_return(body: [].to_json)
42
-
43
- assert_equal [], Ship.where(fleet_id: nil).to_a
44
- end
45
-
46
- test '::where on belongs_to relation' do
47
- webmock(:get, "/ships", where: {fleet: { id: {eq: 1} } }, limit: 100, offset: 0).to_return(body: [].to_json)
48
-
49
- assert_equal [], Ship.where(fleet: {id: 1}).to_a
50
- end
51
-
52
- test '::where on has_many relation' do
53
- webmock(:get, "/fleets", where: {ships: { id: {eq: 1} } }).to_return(body: [].to_json)
54
-
55
- assert_equal [], Fleet.where(ships: {id: 1}).to_a
56
- end
57
-
58
- test '::where on has_and_belongs_to_many relation' do
59
- webmock(:get, "/ships", where: {sailors: { id: {eq: 1} } }, limit: 100, offset: 0).to_return(body: [].to_json)
60
-
61
- assert_equal [], Ship.where(sailors: {id: 1}).to_a
62
- end
63
-
64
- # Polymorphic
65
- test '::where on a has_many throught a polymorphic source' do
66
- webmock(:get, "/ships", where: { nations: { id: {eq: 1} } }, limit: 10).to_return(body: [].to_json)
67
-
68
- assert_equal [], Ship.where(nations: {id: 1}).limit(10).to_a
69
- end
70
- ### end polymorphic test
71
-
72
- test '::where on nested relationship' do
73
- webmock(:get, "/fleets", where: { ships: {sailors: { id: {eq: 1} } } }, limit: 10).to_return(body: [].to_json)
74
-
75
- assert_equal [], Fleet.where(ships: {sailors: {id: 1}}).limit(10).to_a
76
- end
77
-
78
-
79
- end
@@ -1,131 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::QueryTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
-
10
- create_table "ownerships" do |t|
11
- t.string "asset_type"
12
- t.integer "asset_id"
13
- end
14
- end
15
-
16
- class Ship < ActiveRecord::Base
17
- has_many :ownerships, as: :asset
18
- end
19
-
20
- class Ownership < ActiveRecord::Base
21
- belongs_to :asset, polymorphic: true
22
- end
23
-
24
- test '::first' do
25
- webmock(:get, "/ships", { limit: 1, order: [{id: :asc}] }).to_return({
26
- body: [].to_json
27
- })
28
-
29
- assert_nil Ship.first
30
- end
31
-
32
- test '::first!' do
33
- webmock(:get, "/ships", { limit: 1, order: [{id: :asc}] }).to_return({
34
- body: [].to_json
35
- })
36
-
37
- assert_raises ActiveRecord::RecordNotFound do
38
- Ship.first!
39
- end
40
- end
41
-
42
- test '::last' do
43
- webmock(:get, "/ships", { limit: 1, order: [{id: :desc}] }).to_return({
44
- body: [].to_json
45
- })
46
-
47
- assert_nil Ship.last
48
- end
49
-
50
- test '::where on the same column multiple times with symbols and strings' do
51
- webmock(:get, "/ships", { where: [{ id: {gt: 10} }, 'AND', {id: {gt: 11}}], limit: 100, offset: 0 }).to_return(body: [].to_json)
52
-
53
- arel_table = Ship.arel_table
54
- assert_equal [], Ship.where(arel_table[:id].gt(10)).where(arel_table['id'].gt(11)).to_a
55
- end
56
-
57
- test '::where(AND CONDITION)' do
58
- webmock(:get, "/ships", { where: {id: 10, name: 'name'}, limit: 1, order: [{id: :asc}] }).to_return({
59
- body: [{id: 42}].to_json
60
- })
61
-
62
- arel_table = Ship.arel_table
63
- assert_equal 42, Ship.where(arel_table[:id].eq(10).and(arel_table[:name].eq('name'))).first.id
64
- end
65
-
66
- test '::where(OR CONDITION)' do
67
- webmock(:get, "/ships", { where: [{id: 10}, 'OR', {name: 'name'}], limit: 1, order: [{id: :asc}] }).to_return({
68
- body: [{id: 42}].to_json
69
- })
70
-
71
- arel_table = Ship.arel_table
72
- assert_equal 42, Ship.where(arel_table[:id].eq(10).or(arel_table[:name].eq('name'))).first.id
73
- end
74
-
75
- test '::where(AND & OR CONDITION)' do
76
- webmock(:get, "/ships", { where: [{id: 10}, 'AND', [{id: 10}, 'OR', {name: 'name'}]], limit: 1, order: [{id: :asc}] }).to_return({
77
- body: [{id: 42}].to_json
78
- })
79
-
80
- arel_table = Ship.arel_table
81
- assert_equal 42, Ship.where(arel_table[:id].eq(10).and(arel_table[:id].eq(10).or(arel_table[:name].eq('name')))).first.id
82
- end
83
-
84
- test '::where(....big get request turns into post...)' do
85
- name = 'q' * 3000
86
- webmock(:post, "/ships").with(
87
- headers: {'X-Http-Method-Override' => 'GET'},
88
- body: {where: { name: name }, limit: 100, offset: 0 }.to_json
89
- ).to_return(body: [{id: 42}].to_json)
90
-
91
- assert_equal 42, Ship.where(name: name)[0].id
92
- end
93
-
94
- test '::where with JOIN' do
95
- webmock(:get, "/ships", {where: { ownerships: {id: {eq: 1}} }, limit: 100, offset: 0 }).to_return({
96
- body: [{id: 42}].to_json
97
- })
98
-
99
- arel = Ownership.arel_table[:id].eq(1)
100
- assert_equal 42, Ship.joins(:ownerships).where(arel)[0].id
101
- end
102
-
103
- # Relation test
104
-
105
- test '#to_sql' do
106
- assert_equal "SELECT ships.* FROM ships WHERE ships.id = 10", Ship.where(:id => 10).to_sql
107
- end
108
-
109
- test '#to_sql binds correctly when joining' do
110
- assert_equal 'SELECT ships.* FROM ships INNER JOIN ownerships ON ownerships.asset_type = \'ActiveRecord::QueryTest::Ship\' AND ownerships.asset_id = ships.id WHERE ownerships.id = 1', Ship.joins(:ownerships).where({ ownerships: { id: 1 } }).to_sql
111
- end
112
-
113
- test '#to_sar' do
114
- assert_equal "/ships?%81%A5where%81%A2id%0A", Ship.where(:id => 10).to_sar.path
115
- end
116
-
117
- test 'bind params get eaten when joining' do
118
- uri = URI(Ship.joins(:ownerships).where({ ownerships: { id: 1 } }).to_sar.path)
119
- query = MessagePack.unpack(CGI.unescape(uri.query))
120
- assert_equal({"where"=>{"ownerships"=>{"id"=>{"eq"=>1}}}}, query)
121
- end
122
-
123
- test 'Arel::Nodes::HomogeneousIn' do
124
- webmock(:get, "/ships", { where: {id: {in: [10,12]} }, limit: 100, offset: 0 }).to_return({
125
- body: [].to_json
126
- })
127
-
128
- Ship.where(id: [10,12]).to_a
129
- end
130
-
131
- end
@@ -1,30 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActiveRecord::RPCTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- end
9
- end
10
-
11
- class Ship < ActiveRecord::Base
12
- rpc :self_destruct
13
- end
14
-
15
- test '::rpc calls custom controller function' do
16
- webmock(:get, "/ships", { limit: 1, order: [{id: :asc}] }).to_return({
17
- body: [{id: 3, name: 'Sivar'}].to_json
18
- })
19
-
20
- webmock(:post, '/ships/3/self_destruct').to_return({
21
- body: {name: 'DESTROYED'}.to_json
22
- })
23
-
24
- ship = Ship.first
25
- assert ship.self_destruct!
26
- assert_equal 'DESTROYED', ship.name
27
- assert ship.changes.empty?
28
- end
29
-
30
- end
data/test/schema_mock.rb DELETED
@@ -1,121 +0,0 @@
1
- class ActiveSupport::TestCase
2
- class Schema
3
-
4
- class Table
5
-
6
- class Column
7
-
8
- def initialize(name, type, options={})
9
- @name = name
10
- @type = type
11
- @options = options
12
- end
13
-
14
- def as_json
15
- {type: @type, primary_key: false, null: true, array: false}.merge(@options)
16
- end
17
- end
18
-
19
- attr_accessor :name, :options, :columns
20
-
21
- def initialize(name, options={}, &block)
22
- @name = name
23
- @options = options
24
- @columns = {}
25
- case options[:id]
26
- when false
27
- else
28
- integer('id', primary_key: true, null: false)
29
- end
30
-
31
- block.call(self)
32
- end
33
-
34
- def string(name, options={})
35
- @columns[name] = Column.new(name, :string, options)
36
- end
37
-
38
- def text(name, options={})
39
- @columns[name] = Column.new(name, :text, options)
40
- end
41
-
42
- def datetime(name, options={})
43
- @columns[name] = Column.new(name, :datetime, options)
44
- end
45
-
46
- def integer(name, options={})
47
- @columns[name] = Column.new(name, :integer, options)
48
- end
49
-
50
- def to_json
51
- json = @options.slice(:limit)
52
- json[:attributes] = {}
53
- @columns.each do |name, column|
54
- json[:attributes][name] = column.as_json
55
- end
56
- json.to_json
57
- end
58
-
59
- end
60
-
61
- attr_accessor :tables
62
-
63
- def initialize
64
- @tables = {}
65
- end
66
-
67
- def self.define(&block)
68
- i = new
69
- i.define(&block)
70
- i
71
- end
72
-
73
- def define(&block)
74
- instance_eval(&block)
75
- end
76
-
77
- def create_table(name, options={}, &block)
78
- @tables[name] = Table.new(name, options, &block)
79
- end
80
-
81
- end
82
-
83
- def self.schema(&block)
84
- self.class_variable_set(:@@schema, Schema.define(&block))
85
- end
86
-
87
- set_callback(:setup, :before) do
88
- if !instance_variable_defined?(:@suite_setup_run) && self.class.class_variable_defined?(:@@schema)
89
- ActiveRecord::Base.establish_connection(adapter: 'sunstone', url: 'http://example.com')
90
-
91
- req_stub = stub_request(:get, /^http:\/\/example.com/).with do |req|
92
- case req.uri.path
93
- when '/tables'
94
- true
95
- when /^\/\w+\/schema$/i
96
- true
97
- else
98
- false
99
- end
100
- end
101
-
102
- req_stub.to_return do |req|
103
- case req.uri.path
104
- when '/tables'
105
- {
106
- body: self.class.class_variable_get(:@@schema).tables.keys.to_json,
107
- headers: { 'StandardAPI-Version' => '6.0.0.29' }
108
- }
109
- when /^\/(\w+)\/schema$/i
110
- {
111
- body: self.class.class_variable_get(:@@schema).tables[$1].to_json,
112
- headers: { 'StandardAPI-Version' => '6.0.0.29' }
113
- }
114
- end
115
- end
116
-
117
- end
118
- @suite_setup_run = true
119
- end
120
-
121
- end
@@ -1,30 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Sunstone::Connection::ColumnDefinitionTest < ActiveSupport::TestCase
4
-
5
- schema do
6
- create_table "ships", limit: 100 do |t|
7
- t.string "name", limit: 255
8
- t.integer "guns", limit: 8
9
- t.integer "sailor_count"
10
- end
11
- end
12
-
13
- class Ship < ActiveRecord::Base
14
- end
15
-
16
- test "default limit on column" do
17
- assert_nil Ship.columns_hash['sailor_count'].limit
18
- end
19
-
20
- test "custom limit on column" do
21
- assert_equal 8, Ship.columns_hash['guns'].limit
22
- end
23
-
24
- test "custom limit on string column" do
25
- assert_equal 255, Ship.columns_hash['name'].limit
26
- end
27
-
28
- end
29
-
30
-
@@ -1,44 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Sunstone::Connection::ConfigurationTest < ActiveSupport::TestCase
4
-
5
- test "setting the url sets the api_key" do
6
- connection = Sunstone::Connection.new(url: 'http://my_api_key@localhost')
7
- assert_equal('my_api_key', connection.api_key)
8
- end
9
-
10
- test "setting the url sets the host" do
11
- connection = Sunstone::Connection.new(url: 'https://example.com')
12
- assert_equal('example.com', connection.host)
13
- end
14
-
15
- test "setting the url sets the port" do
16
- connection = Sunstone::Connection.new(url: 'http://localhost')
17
- assert_equal(80, connection.port)
18
-
19
- connection = Sunstone::Connection.new(url: 'https://localhost')
20
- assert_equal(443, connection.port)
21
-
22
- connection = Sunstone::Connection.new(url: 'https://localhost:4321')
23
- assert_equal(4321, connection.port)
24
- end
25
-
26
- test "setting the url sets the use_ssl option" do
27
- connection = Sunstone::Connection.new(url: 'http://localhost')
28
- assert_equal(false, connection.use_ssl)
29
-
30
- connection = Sunstone::Connection.new(url: 'https://localhost')
31
- assert_equal(true, connection.use_ssl)
32
- end
33
-
34
- test "setting the user_agent appends it to the User-Agent" do
35
- connection = Sunstone::Connection.new(url: 'http://localhost')
36
- assert_equal("Sunstone/#{Sunstone::VERSION} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} #{RUBY_PLATFORM}", connection.user_agent)
37
-
38
- connection = Sunstone::Connection.new(url: 'http://localhost', user_agent: "MyGem/3.14")
39
- assert_equal("MyGem/3.14 Sunstone/#{Sunstone::VERSION} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} #{RUBY_PLATFORM}", connection.user_agent)
40
- end
41
-
42
- end
43
-
44
-
@@ -1,37 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Sunstone::Connection::CookieStoreTest < ActiveSupport::TestCase
4
-
5
- test '#send_request(#<Net::HTTPRequest) adds cookies to the cookie store if present' do
6
- store = CookieStore::HashStore.new
7
- connection = Sunstone::Connection.new(url: "http://testhost.com")
8
- stub_request(:get, "http://testhost.com/test").to_return(:body => 'get', :headers => {'Set-Cookie' => 'foo=bar; Max-Age=3600'})
9
-
10
- Sunstone::Connection.with_cookie_store(store) { connection.get('/test') }
11
-
12
- assert_equal 1, store.instance_variable_get(:@domains).size
13
- assert_equal 1, store.instance_variable_get(:@domains)['testhost.com'].size
14
- assert_equal 1, store.instance_variable_get(:@domains)['testhost.com']['/test'].size
15
- assert_equal 'bar', store.instance_variable_get(:@domains)['testhost.com']['/test']['foo'].value
16
- end
17
-
18
- test '#send_request(#<Net::HTTPRequest) sends cookie header if cookie store is present' do
19
- store = CookieStore::HashStore.new
20
- connection = Sunstone::Connection.new(url: "http://testhost.com")
21
- stub_request(:get, "http://testhost.com/test").to_return(
22
- headers: {
23
- 'Set-Cookie' => 'foo=bar; Path="/" Max-Age=3600'
24
- },
25
- body: 'get'
26
- )
27
- cookie_stub = stub_request(:get, "http://testhost.com/verify").with { |req|
28
- req.headers['Cookie'] == 'foo=bar'
29
- }.to_return(body: 'verify')
30
-
31
- Sunstone::Connection.with_cookie_store(store) { connection.get('/test') }
32
- Sunstone::Connection.with_cookie_store(store) { connection.get('/verify') }
33
-
34
- assert_requested(cookie_stub)
35
- end
36
-
37
- end