spree_api 2.1.6 → 2.1.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02fd5d06ef9c3f4ff35f710a66e4d1b187d08abd
4
- data.tar.gz: f3623943eb622ff032d8ee517767233fe97dd5c1
3
+ metadata.gz: 2bdf54d9702da778a98e961e7ecaa93c91113a4e
4
+ data.tar.gz: f1527d859f7fddb7ef7cd6537dfc43fe1572b754
5
5
  SHA512:
6
- metadata.gz: 78ba1c0714fab0a471d20015f35c6cc828306b4b4a9588f8688e0c938cc56be97ee42d887db371f8bf345926c3a05049170fe5b6bcfae14f41c51a975bd70268
7
- data.tar.gz: a9b071acd933a1767c3b5686e02e15221fa8578d229c74fb6063ce6c901f16b8102e1552199b5ebd5c575ff732d61eb906e0656d134e0e98ee16da0bd6c52e68
6
+ metadata.gz: 4584dce0d9b973efebf1f7baa373f92116a1f511de54c2a0a37a9cea0ad73907f863b691e9f254563af42bd168e2ac37074b90cd12d25862ad26145fa3bcf2d5
7
+ data.tar.gz: d14f69e5834c3e9bc213c583640b7375f4f6a04ec06ee0d3eb241267aadb00847c2479cd8b62e743bdea17cb23293e9424542005459e3fcd2ef08cc56156378d
@@ -28,6 +28,7 @@ module Spree
28
28
 
29
29
  def empty
30
30
  find_order
31
+ authorize! :update, @order, order_token
31
32
  @order.empty!
32
33
  @order.update!
33
34
  render text: nil, status: 200
@@ -41,6 +42,7 @@ module Spree
41
42
 
42
43
  def show
43
44
  find_order
45
+ authorize! :show, @order, order_token
44
46
  method = "before_#{@order.state}"
45
47
  send(method) if respond_to?(method, true)
46
48
  respond_with(@order)
@@ -48,6 +50,7 @@ module Spree
48
50
 
49
51
  def update
50
52
  find_order(true)
53
+ authorize! :update, @order, order_token
51
54
  # Parsing line items through as an update_attributes call in the API will result in
52
55
  # many line items for the same variant_id being created. We must be smarter about this,
53
56
  # hence the use of the update_line_items method, defined within order_decorator.rb.
@@ -84,6 +87,7 @@ module Spree
84
87
  # https://github.com/spree/spree/blob/2-1-stable/frontend/app/controllers/spree/orders_controller.rb#L100
85
88
  def apply_coupon_code
86
89
  find_order
90
+ authorize! :update, @order, order_token
87
91
  @order.coupon_code = params[:coupon_code]
88
92
  @order.save
89
93
 
@@ -162,7 +166,6 @@ module Spree
162
166
 
163
167
  def find_order(lock = false)
164
168
  @order = Spree::Order.lock(lock).find_by!(number: params[:id])
165
- authorize! :update, @order, order_token
166
169
  end
167
170
 
168
171
  def before_delivery
@@ -39,6 +39,24 @@ describe Spree::Api::BaseController do
39
39
  end
40
40
  end
41
41
 
42
+ context "when validating based on an order token" do
43
+ let!(:order) { create :order }
44
+
45
+ context "with a correct order token" do
46
+ it "succeeds" do
47
+ api_get :index, order_token: order.token, order_id: order.number
48
+ response.status.should == 200
49
+ end
50
+ end
51
+
52
+ context "with an incorrect order token" do
53
+ it "returns unauthorized" do
54
+ api_get :index, order_token: "NOT_A_TOKEN", order_id: order.number
55
+ response.status.should == 401
56
+ end
57
+ end
58
+ end
59
+
42
60
  context "cannot make a request to the API" do
43
61
  it "without an API key" do
44
62
  api_get :index
@@ -173,7 +173,8 @@ module Spree
173
173
  order.update_column(:state, "payment")
174
174
  api_put :update, :id => order.to_param, :order_token => order.token,
175
175
  :order => { :payments_attributes => [{ :payment_method_id => @payment_method.id.to_s }],
176
- :payment_source => { @payment_method.id.to_s => { } } }
176
+ :payment_source => { @payment_method.id.to_s => { first_name: "Spree" } } }
177
+
177
178
  response.status.should == 422
178
179
  cc_errors = json_response['errors']['payments.Credit Card']
179
180
  cc_errors.should include("Number can't be blank")
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'spree/testing_support/bar_ability'
2
3
 
3
4
  module Spree
4
5
  describe Api::OrdersController do
@@ -116,6 +117,20 @@ module Spree
116
117
  response.status.should == 200
117
118
  end
118
119
 
120
+ context "with BarAbility registered" do
121
+ before { Spree::Ability.register_ability(::BarAbility) }
122
+ after { Spree::Ability.remove_ability(::BarAbility) }
123
+
124
+ it "can view an order" do
125
+ user = mock_model(Spree::LegacyUser)
126
+ user.stub(:has_spree_role?).with('bar').and_return(true)
127
+ user.stub(:has_spree_role?).with('admin').and_return(false)
128
+ controller.stub try_spree_current_user: user
129
+ api_get :show, :id => order.to_param
130
+ response.status.should == 200
131
+ end
132
+ end
133
+
119
134
  it "cannot cancel an order that doesn't belong to them" do
120
135
  order.update_attribute(:completed_at, Time.now)
121
136
  order.update_attribute(:shipment_state, "ready")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.6
4
+ version: 2.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bigg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-25 00:00:00.000000000 Z
11
+ date: 2014-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.6
19
+ version: 2.1.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.1.6
26
+ version: 2.1.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rabl
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -254,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
254
  version: '0'
255
255
  requirements: []
256
256
  rubyforge_project:
257
- rubygems_version: 2.2.2
257
+ rubygems_version: 2.2.0
258
258
  signing_key:
259
259
  specification_version: 4
260
260
  summary: Spree's API