openstax_salesforce 3.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -46
  3. data/Rakefile +2 -5
  4. data/config/initializers/openstax_salesforce.rb +9 -38
  5. data/db/migrate/0_install_openstax_salesforce.rb +1 -0
  6. data/db/migrate/1_drop_openstax_salesforce_users.rb +14 -0
  7. data/lib/openstax/salesforce/active_force.rb +0 -4
  8. data/lib/openstax/salesforce/client.rb +11 -17
  9. data/lib/openstax/salesforce/remote/campaign.rb +0 -2
  10. data/lib/openstax/salesforce/remote/campaign_member.rb +0 -1
  11. data/lib/openstax/salesforce/remote/opportunity.rb +0 -2
  12. data/lib/openstax/salesforce/remote/term_year.rb +0 -2
  13. data/lib/openstax/salesforce/remote/tutor_course_period.rb +0 -2
  14. data/lib/openstax/salesforce/spec_helpers.rb +119 -26
  15. data/lib/openstax/salesforce/version.rb +1 -1
  16. data/lib/openstax_salesforce.rb +13 -29
  17. data/lib/tasks/openstax_salesforce_tasks.rake +1 -26
  18. metadata +6 -179
  19. data/app/controllers/openstax/salesforce/application_controller.rb +0 -7
  20. data/app/controllers/openstax/salesforce/settings_controller.rb +0 -20
  21. data/app/helpers/openstax/salesforce/application_helper.rb +0 -11
  22. data/app/models/openstax/salesforce/user.rb +0 -31
  23. data/app/views/openstax/salesforce/settings/show.html.erb +0 -33
  24. data/config/initializers/omniauth.rb +0 -8
  25. data/config/routes.rb +0 -11
  26. data/lib/openstax/salesforce/spec_helpers/salesforce_proxy.rb +0 -121
  27. data/lib/openstax/salesforce/user_missing.rb +0 -3
  28. data/spec/client_spec.rb +0 -10
  29. data/spec/dummy/README.md +0 -28
  30. data/spec/dummy/Rakefile +0 -6
  31. data/spec/dummy/app/assets/javascripts/application.js +0 -13
  32. data/spec/dummy/app/assets/stylesheets/application.css +0 -15
  33. data/spec/dummy/app/controllers/application_controller.rb +0 -5
  34. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  35. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  36. data/spec/dummy/bin/bundle +0 -3
  37. data/spec/dummy/bin/rails +0 -4
  38. data/spec/dummy/bin/rake +0 -4
  39. data/spec/dummy/bin/setup +0 -29
  40. data/spec/dummy/config/application.rb +0 -25
  41. data/spec/dummy/config/boot.rb +0 -5
  42. data/spec/dummy/config/database.yml +0 -25
  43. data/spec/dummy/config/environment.rb +0 -5
  44. data/spec/dummy/config/environments/development.rb +0 -41
  45. data/spec/dummy/config/environments/production.rb +0 -79
  46. data/spec/dummy/config/environments/test.rb +0 -42
  47. data/spec/dummy/config/initializers/assets.rb +0 -11
  48. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  49. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -3
  50. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  51. data/spec/dummy/config/initializers/inflections.rb +0 -16
  52. data/spec/dummy/config/initializers/mime_types.rb +0 -4
  53. data/spec/dummy/config/initializers/session_store.rb +0 -3
  54. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  55. data/spec/dummy/config/locales/en.yml +0 -23
  56. data/spec/dummy/config/routes.rb +0 -4
  57. data/spec/dummy/config/secrets.yml +0 -22
  58. data/spec/dummy/config.ru +0 -4
  59. data/spec/dummy/db/schema.rb +0 -25
  60. data/spec/dummy/db/test.sqlite3 +0 -0
  61. data/spec/dummy/log/test.log +0 -2673
  62. data/spec/dummy/public/404.html +0 -67
  63. data/spec/dummy/public/422.html +0 -67
  64. data/spec/dummy/public/500.html +0 -66
  65. data/spec/dummy/public/favicon.ico +0 -0
  66. data/spec/factories/user.rb +0 -17
  67. data/spec/openstax/salesforce/controllers/application_controller_spec.rb +0 -22
  68. data/spec/openstax/salesforce/controllers/settings_controller_spec.rb +0 -80
  69. data/spec/openstax/salesforce/remote/opportunity_spec.rb +0 -11
  70. data/spec/openstax/salesforce/remote/term_year_spec.rb +0 -81
  71. data/spec/openstax/salesforce/remote/tutor_course_period_spec.rb +0 -30
  72. data/spec/openstax/salesforce/spec_helpers_spec.rb +0 -31
  73. data/spec/rails_helper.rb +0 -99
  74. data/spec/routing_spec.rb +0 -9
  75. data/spec/spec_helper.rb +0 -86
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 642a295664f442b241aebad664e8be049d7502b7214692b68e2c78453878b9d5
4
- data.tar.gz: 226065fdabfaa97921ac1421fc2a7c695d14bcb00c0df14f030d98b5d7fa25ea
3
+ metadata.gz: 1891856e6a19e2b9751c9982a4ff21edb8195877f9ae5c7f37a0c10b5a0671e6
4
+ data.tar.gz: 05e146e80fe6385684ba0058b824475c2bfdac63c4941c53efebfa72bf7435db
5
5
  SHA512:
6
- metadata.gz: 331d883ba687b7420ced572bc000d9ebe9cf181c1c8296c4b99b1f58cfb2221d2ff54927aaaf1d02eaa0991a49ee87336addd22909d95849638854ca3a8ea086
7
- data.tar.gz: 1faddc1b36e3e2825369c5415c32fd9cb1e675c074d11c0110f7b9acf0b145544fe7df056c070c74c3a6b9a6a37c9e6df127b7b25c8690419363b688dd633a81
6
+ metadata.gz: 7bcee3d33ea59128302bc97e8ff9695cabefd98af6ba1b0388a12749b4e7692ed53446bd1791aa99c9ab43dde3f166f896879850bb3c7b7dca68a0e1b7a0df96
7
+ data.tar.gz: 32062d09ecb6b86ab30cd0964a5bc6f7aa76fa55f49bcf5888877f358c54ce784a46b790477152a78ccc0643d4c32462815f0f8519354c6b33429f5e412f7057
data/README.md CHANGED
@@ -4,17 +4,15 @@
4
4
  [![Build Status](https://travis-ci.org/openstax/openstax_salesforce.svg?branch=master)](https://travis-ci.org/openstax/openstax_salesforce)
5
5
  [![Code Climate](https://codeclimate.com/github/openstax/openstax_salesforce/badges/gpa.svg)](https://codeclimate.com/github/openstax/openstax_salesforce)
6
6
 
7
- OpenStax::Salesforce is a Rails engine used by OpenStax projects to communicate with the OpenStax Salesforce instance.
7
+ OpenStax::Salesforce is a Rails engine used by OpenStax projects to communicate
8
+ with the OpenStax Salesforce instance.
8
9
 
9
10
  ## Installation
10
11
 
11
- Add these line to your application's Gemfile:
12
+ Add this line to your application's Gemfile:
12
13
 
13
14
  ```rb
14
15
  gem 'openstax_salesforce'
15
-
16
- # ActiveForce fork that supports Ruby >= 2.1 and stubbable stdout
17
- gem 'active_force', git: 'https://github.com/openstax/active_force', ref: '7caac17'
18
16
  ```
19
17
 
20
18
  And then execute:
@@ -29,65 +27,38 @@ Or install it yourself:
29
27
  $ gem install openstax_salesforce
30
28
  ```
31
29
 
32
- Then execute the following command to copy the necessary migration and the initializer to your application:
30
+ Then execute the following command to copy the necessary initializer to your application:
33
31
 
34
32
  ```sh
35
33
  $ rake openstax_salesforce:install
36
34
  ```
37
35
 
38
- And then migrate your database:
39
-
40
- ```sh
41
- $ rake db:migrate
42
- ```
43
-
44
- Also add OpenStax::Salesforce to your application's routes:
45
-
46
- ```rb
47
- mount OpenStax::Salesforce::Engine, at: "/salesforce"
48
- OpenStax::Salesforce.set_top_level_routes(self)
49
- ```
50
-
51
- The `set_top_level_routes` should be called at the top level inside `routes.rb`. It adds oauth callback
52
- routes at the top level.
53
-
54
- And provide a link on your site for administrators to access the engine.
55
-
56
- ```erb
57
- <%= link_to 'Salesforce Setup', openstax_salesforce_path %>
58
- ```
59
-
60
36
  ## Configuration
61
37
 
62
38
  After installation, the initializer for OpenStax::Salesforce will be located under
63
- `config/initializers/openstax_salesforce.rb`. Make sure to configure it to suit
64
- your needs. Pay particular attention to `authenticate_admin_proc`,
65
- as you will be unable to access the setup pages until this proc is setup to return
66
- `true` for your admins.
39
+ `config/initializers/openstax_salesforce.rb`. Make sure to configure it to suit your needs.
40
+
41
+ You will need the following information from Salesforce:
42
+ - Your username (append .sandboxname if using a sandbox)
43
+ - Your password
44
+ - Your security token
45
+ - Connected App's client key
46
+ - Connected App's client secret
47
+ Enter all the above information in the initializer, secrets.yml or environment variables.
67
48
 
68
49
  ## Testing
69
50
 
70
- From the gem's main folder, run `bundle install`,
71
- `bundle exec rake db:migrate` and then
72
- `bundle exec rake` to run all the specs.
51
+ From the gem's main folder, run `bundle install` and then `bundle exec rake` to run all the specs.
73
52
 
74
- ## Specs in Parent App
53
+ ### Specs in Parent App
75
54
 
76
- There's a helper you can include in your parent app's salesforce specs. It isn't automatically
77
- required by this engine, so you have to do it manually in your spec:
55
+ There's a helper you can include in your parent app's salesforce specs.
56
+ It isn't automatically required by this engine, so you have to do it manually in your spec:
78
57
 
79
58
  ```ruby
80
59
  require 'openstax/salesforce/spec_helper'
81
60
  ```
82
61
 
83
- If the oauth token in `OpenStax::Salesforce::User.first` expires, you can update it with
84
-
85
- ```ruby
86
- OpenStax::Salesforce::User.first.refresh_oauth_token!
87
- ```
88
-
89
- and then copy that token into your spec setup.
90
-
91
62
  ## Contributing
92
63
 
93
64
  1. Fork it
data/Rakefile CHANGED
@@ -14,9 +14,6 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
- load 'rails/tasks/engine.rake'
19
-
20
17
  load 'rails/tasks/statistics.rake'
21
18
 
22
19
  Bundler::GemHelper.install_tasks
@@ -25,6 +22,6 @@ require 'rspec/core'
25
22
  require 'rspec/core/rake_task'
26
23
 
27
24
  desc 'Run all specs in spec directory (excluding plugin specs)'
28
- RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
25
+ RSpec::Core::RakeTask.new :spec
29
26
 
30
- task :default => :spec
27
+ task default: :spec
@@ -2,45 +2,16 @@
2
2
  # also be copied to the application's initializers by running the install
3
3
  # task. Because this code can get run multiple times, make sure to only put
4
4
  # code here that is amenable to that.
5
-
6
5
  OpenStax::Salesforce.configure do |config|
7
- # Layout to be used for OpenStax::Salesforce's controllers
8
- config.layout = 'application'
9
-
10
- # Proc called with an argument of the controller where this is called.
11
- # This proc is called when a user tries to access the engine's controllers.
12
- # Should raise an exception, render or redirect unless the user is a manager
13
- # or admin. The default renders 403 Forbidden for all users.
14
- config.authenticate_admin_proc = ->(controller) {
15
- controller.head(:forbidden)
16
- }
17
-
18
- # Consumer key and secret for connecting to the Salesforce app
19
- config.salesforce_client_key = 'put_real_key_value_here'
20
- config.salesforce_client_secret = 'put_real_secret_value_here'
21
-
22
- # Uncomment this to override the login site for sandbox instances; ok to be nil
23
- # config.salesforce_login_site = 'https://test.salesforce.com'
6
+ salesforce_secrets = Rails.application.secrets.salesforce
24
7
 
25
- # The following sandbox tokens are used for specs to connect to a sandbox Salesforce
26
- # instance.
27
- if Rails.env.test?
28
- config.sandbox_oauth_token = 'put_real_value_here'
29
- config.sandbox_refresh_token = 'put_real_value_here'
30
- config.sandbox_instance_url = 'put_real_value_here'
31
- end
8
+ # Username, client id, instance url and private key for connecting to the Salesforce app
9
+ config.username = salesforce_secrets[:username]
10
+ config.password = salesforce_secrets[:password]
11
+ config.security_token = salesforce_secrets[:security_token]
12
+ config.consumer_key = salesforce_secrets[:consumer_key]
13
+ config.consumer_secret = salesforce_secrets[:consumer_secret]
32
14
 
33
- # Change this to true if you want to call the omniauth setup on your own
34
- config.skip_automatic_omniauth_setup = false
35
-
36
- # If `check_sandbox_instance_url` is true (default), the spec helper that
37
- # uses the instance URL will checks that the URL starts with "cs", which
38
- # indicates that the instance is a sandbox.
39
- config.check_sandbox_instance_url = true
40
-
41
- # A way to customize page headings. Sometimes apps fold the page heading
42
- # into the layout in different ways.
43
- config.page_heading_proc = ->(view, text) { "<h2>#{text}</h2>".html_safe }
15
+ config.api_version = salesforce_secrets.fetch :api_version, '37.0'
16
+ config.login_domain = salesforce_secrets.fetch :login_domain, 'test.salesforce.com'
44
17
  end
45
-
46
-
@@ -1,3 +1,4 @@
1
+ # TODO: Remove after all servers have been migrated
1
2
  class InstallOpenStaxSalesforce < ActiveRecord::Migration[4.2]
2
3
  def change
3
4
  create_table :openstax_salesforce_users do |t|
@@ -0,0 +1,14 @@
1
+ # TODO: Remove after all servers have been migrated
2
+ class DropOpenStaxSalesforceUsers < ActiveRecord::Migration[4.2]
3
+ def change
4
+ drop_table :openstax_salesforce_users do |t|
5
+ t.string :name
6
+ t.string :uid, null: false
7
+ t.string :oauth_token, null: false
8
+ t.string :refresh_token, null: false
9
+ t.string :instance_url, null: false
10
+
11
+ t.timestamps null: false
12
+ end
13
+ end
14
+ end
@@ -1,9 +1,7 @@
1
1
  # Monkey patching
2
2
 
3
3
  module ActiveForce
4
-
5
4
  class << self
6
-
7
5
  # Use a lazy setting of the client so that migrations etc are in place
8
6
  # to allow the Client to be successfully instantiated.
9
7
  alias_method :original_sfdc_client, :sfdc_client
@@ -17,7 +15,6 @@ module ActiveForce
17
15
  def clear_sfdc_client!
18
16
  self.sfdc_client = nil
19
17
  end
20
-
21
18
  end
22
19
 
23
20
  class SObject
@@ -34,5 +31,4 @@ module ActiveForce
34
31
  # access to the original implementation
35
32
  singleton_class.send(:alias_method, :original_query, :query)
36
33
  end
37
-
38
34
  end
@@ -1,25 +1,19 @@
1
1
  module OpenStax::Salesforce
2
2
  class Client < ::Restforce::Data::Client
3
-
4
3
  def initialize
5
- user = OpenStax::Salesforce::User.first
6
-
7
- raise(UserMissing, "The Salesforce client was requested but no user is available.") if user.nil?
4
+ configuration = OpenStax::Salesforce.configuration
8
5
 
9
- client_key = OpenStax::Salesforce.configuration.salesforce_client_key
10
- client_secret = OpenStax::Salesforce.configuration.salesforce_client_secret
6
+ configuration.validate!
11
7
 
12
- raise(IllegalState, "The Salesforce key is missing") if client_key.nil?
13
- raise(IllegalState, "The Salesforce secret is missing") if client_secret.nil?
14
-
15
- super(host: OpenStax::Salesforce.configuration.salesforce_login_domain,
16
- oauth_token: user.oauth_token,
17
- refresh_token: user.refresh_token,
18
- instance_url: user.instance_url,
19
- client_id: client_key,
20
- client_secret: client_secret,
21
- api_version: '37.0')
8
+ super(
9
+ username: configuration.username,
10
+ password: configuration.password,
11
+ security_token: configuration.security_token,
12
+ client_id: configuration.consumer_key,
13
+ client_secret: configuration.consumer_secret,
14
+ api_version: configuration.api_version,
15
+ host: configuration.login_domain
16
+ )
22
17
  end
23
-
24
18
  end
25
19
  end
@@ -1,10 +1,8 @@
1
1
  module OpenStax::Salesforce::Remote
2
2
  class Campaign < ActiveForce::SObject
3
-
4
3
  field :is_active, from: "IsActive", as: :boolean
5
4
  field :name, from: "Name"
6
5
 
7
6
  self.table_name = 'Campaign'
8
-
9
7
  end
10
8
  end
@@ -1,6 +1,5 @@
1
1
  module OpenStax::Salesforce::Remote
2
2
  class CampaignMember < ActiveForce::SObject
3
-
4
3
  field :campaign_id, from: "CampaignId"
5
4
  field :contact_id, from: "ContactId"
6
5
  field :accounts_uuid, from: "accounts_uuid__c"
@@ -1,6 +1,5 @@
1
1
  module OpenStax::Salesforce::Remote
2
2
  class Opportunity < ActiveForce::SObject
3
-
4
3
  field :term_year, from: "TermYear__c"
5
4
  field :book_name, from: "Book_Text__c"
6
5
  field :contact_id, from: "Contact__c"
@@ -11,6 +10,5 @@ module OpenStax::Salesforce::Remote
11
10
  def term_year_object
12
11
  @term_year_object ||= OpenStax::Salesforce::Remote::TermYear.from_string(term_year)
13
12
  end
14
-
15
13
  end
16
14
  end
@@ -1,6 +1,5 @@
1
1
  module OpenStax::Salesforce::Remote
2
2
  class TermYear
3
-
4
3
  # TermYear strings in Salesforce look like:
5
4
  # 2015 - 16 Fall
6
5
  # 2015 - 16 Spring
@@ -75,6 +74,5 @@ module OpenStax::Salesforce::Remote
75
74
  end
76
75
 
77
76
  class ParseError < StandardError; end
78
-
79
77
  end
80
78
  end
@@ -1,6 +1,5 @@
1
1
  module OpenStax::Salesforce::Remote
2
2
  class TutorCoursePeriod < ActiveForce::SObject
3
-
4
3
  field :num_teachers, from: "Active_Teachers__c", as: :int
5
4
  field :base_year, from: "Base_Year__c", as: :int
6
5
  field :book_name, from: "Book_Name__c"
@@ -44,6 +43,5 @@ module OpenStax::Salesforce::Remote
44
43
 
45
44
  STATUS_APPROVED = "Approved"
46
45
  STATUS_ARCHIVED = "ArchivedPeriod"
47
-
48
46
  end
49
47
  end
@@ -1,30 +1,4 @@
1
- require 'openstax/salesforce/spec_helpers/salesforce_proxy'
2
-
3
1
  module OpenStax::Salesforce::SpecHelpers
4
-
5
- def load_salesforce_user
6
- clear_salesforce_user
7
-
8
- config = OpenStax::Salesforce.configuration
9
- sf_user = OpenStax::Salesforce::User.new
10
-
11
- sf_user.name = "some name"
12
- sf_user.uid = "whatever"
13
- sf_user.oauth_token = config.sandbox_oauth_token
14
- sf_user.refresh_token = config.sandbox_refresh_token
15
- sf_user.instance_url = config.sandbox_instance_url.tap do |url|
16
- if config.check_sandbox_instance_url && !url.match(/\/\/cs/)
17
- raise "Salesforce sandbox instance URL (#{url}) does not have the expected form!"
18
- end
19
- end
20
-
21
- sf_user.save!
22
- end
23
-
24
- def clear_salesforce_user
25
- OpenStax::Salesforce::User.destroy_all
26
- end
27
-
28
2
  # Uses knowledge of how `SalesforceProxy` methods create new SF records using its
29
3
  # `unique_token` to create the conditions you'd otherwise have to manually set
30
4
  # when calling `limit_salesforce_queries`.
@@ -81,4 +55,123 @@ module OpenStax::Salesforce::SpecHelpers
81
55
  end
82
56
  end
83
57
 
58
+ class SalesforceProxy
59
+ include OpenStax::Salesforce::Remote
60
+
61
+ def initialize
62
+ # For cassette consistency, to ensure specs always get new tokens
63
+ ActiveForce.clear_sfdc_client!
64
+ end
65
+
66
+ # Used to filter records to the scope of one spec
67
+ def reset_unique_token(token = SecureRandom.hex(10))
68
+ @unique_token = token
69
+ end
70
+
71
+ def clear_unique_token
72
+ @unique_token = nil
73
+ end
74
+
75
+ def new_contact(first_name: nil, last_name: nil, school_name: "JP University",
76
+ email: nil, email_alt: nil, faculty_verified: nil, school_type: nil)
77
+ ensure_schools_exist([school_name])
78
+
79
+ Contact.new(
80
+ first_name: first_name || Faker::Name.first_name,
81
+ last_name: last_name!(last_name),
82
+ school_id: school_id(school_name),
83
+ email: email,
84
+ email_alt: email_alt,
85
+ faculty_verified: faculty_verified,
86
+ school_type: school_type
87
+ ).tap do |contact|
88
+ if !contact.save
89
+ raise "Could not save SF contact: #{contact.errors}"
90
+ end
91
+ end
92
+ end
93
+
94
+ def new_lead(email:, status: nil, last_name: nil, source: nil, school_name: "JP University")
95
+ Lead.new(
96
+ email: email,
97
+ status: status,
98
+ last_name: last_name!(last_name),
99
+ school: school_name,
100
+ source: source
101
+ ).tap do |lead|
102
+ if !lead.save
103
+ raise "Could not save SF lead: #{lead.errors}"
104
+ end
105
+ end
106
+ end
107
+
108
+ def new_campaign(name: SecureRandom.hex(8))
109
+ Campaign.new(
110
+ name: name
111
+ ).tap do |campaign|
112
+ if !campaign.save
113
+ raise "Could not save SF Campaign: #{campaign.errors}"
114
+ end
115
+ end
116
+ end
117
+
118
+ def new_campaign_member(contact_id:, campaign_id:)
119
+ CampaignMember.new(
120
+ contact_id: contact_id,
121
+ campaign_id: campaign_id
122
+ ).tap do |campaign_member|
123
+ if !campaign_member.save
124
+ raise "Could not save SF Campaign Member: #{campaign_member.errors}"
125
+ end
126
+ end
127
+ end
128
+
129
+ def last_name!(input)
130
+ "#{input || Faker::Name.last_name}#{@unique_token if @unique_token.present?}"
131
+ end
132
+
133
+ def ensure_books_exist(book_names)
134
+ book_names.each do |book_name|
135
+ if books.none? {|bb| bb.name == book_name}
136
+ book = Book.new(name: book_name)
137
+ book.save!
138
+ books.push(book)
139
+ end
140
+ end
141
+ end
142
+
143
+ def ensure_schools_exist(school_names)
144
+ school_names.compact.each do |school_name|
145
+ if schools.none? {|ss| ss.name == school_name}
146
+ school = School.new(name: school_name)
147
+ school.save!
148
+ schools.push(school)
149
+ end
150
+ end
151
+ end
152
+
153
+ def books
154
+ @books ||= Book.all
155
+ end
156
+
157
+ def book(name)
158
+ books.find { |bb| bb.name == name }
159
+ end
160
+
161
+ def book_id(name)
162
+ book(name).id
163
+ end
164
+
165
+ def schools
166
+ @schools ||= School.all
167
+ end
168
+
169
+ def school_id(name)
170
+ school(name).try(:id)
171
+ end
172
+
173
+ def school(name)
174
+ schools.find { |ss| ss.name == name }
175
+ end
176
+ end
84
177
  end
@@ -1,5 +1,5 @@
1
1
  module OpenStax
2
2
  module Salesforce
3
- VERSION = "3.1.0"
3
+ VERSION = '4.0.0'
4
4
  end
5
5
  end
@@ -1,11 +1,9 @@
1
1
  require "restforce"
2
2
  require "active_force"
3
- require "omniauth-salesforce"
4
3
 
5
4
  require "openstax/salesforce/active_force"
6
5
 
7
6
  require "openstax/salesforce/engine"
8
- require "openstax/salesforce/user_missing"
9
7
  require "openstax/salesforce/client"
10
8
 
11
9
  require "openstax/salesforce/remote/term_year"
@@ -20,7 +18,6 @@ require "openstax/salesforce/remote/campaign_member"
20
18
 
21
19
  module OpenStax
22
20
  module Salesforce
23
-
24
21
  def self.configure
25
22
  yield configuration
26
23
  end
@@ -31,40 +28,27 @@ module OpenStax
31
28
 
32
29
  # See `config/initializers/openstax_salesforce.rb` for documentation on options
33
30
  class Configuration
34
- attr_accessor :layout
35
- attr_accessor :authenticate_admin_proc
36
- attr_accessor :salesforce_client_key
37
- attr_accessor :salesforce_client_secret
38
- attr_writer :salesforce_login_site
39
- attr_accessor :sandbox_oauth_token
40
- attr_accessor :sandbox_refresh_token
41
- attr_accessor :sandbox_instance_url
42
- attr_accessor :check_sandbox_instance_url
43
- attr_accessor :skip_automatic_omniauth_setup
44
- attr_accessor :page_heading_proc
31
+ attr_writer :api_version, :login_domain
32
+ attr_accessor :username, :password, :security_token, :consumer_key, :consumer_secret
45
33
 
46
- def salesforce_login_site
47
- @salesforce_login_site || "https://login.salesforce.com"
34
+ def api_version
35
+ @api_version ||= '37.0'
48
36
  end
49
37
 
50
- def salesforce_client_options
51
- { site: salesforce_login_site }
38
+ def login_domain
39
+ @login_domain ||= 'test.salesforce.com'
52
40
  end
53
41
 
54
- def salesforce_login_domain
55
- Addressable::URI.parse(salesforce_login_site).host
42
+ def validate!
43
+ raise(IllegalState, "The Salesforce username is missing") if username.nil?
44
+ raise(IllegalState, "The Salesforce password is missing") if password.nil?
45
+ raise(IllegalState, "The Salesforce security token is missing") if security_token.nil?
46
+ raise(IllegalState, "The Salesforce consumer key is missing") if consumer_key.nil?
47
+ raise(IllegalState, "The Salesforce consumer secret is missing") if consumer_secret.nil?
56
48
  end
57
49
  end
58
50
 
59
- def self.set_top_level_routes(router)
60
- router.match '/auth/salesforce/callback',
61
- to: 'openstax/salesforce/settings#callback',
62
- via: [:get, :post]
63
- end
64
-
65
- def self.ready_for_api_usage?
66
- OpenStax::Salesforce::User.any?
51
+ module Remote
67
52
  end
68
-
69
53
  end
70
54
  end
@@ -1,8 +1,3 @@
1
- OPENSTAX_SALESFORCE_COPY_PATHS = [
2
- 'views',
3
- 'controllers'
4
- ]
5
-
6
1
  namespace :openstax_salesforce do
7
2
  namespace :install do
8
3
  desc 'Copy initializers from openstax_salesforce to application'
@@ -18,30 +13,10 @@ namespace :openstax_salesforce do
18
13
  end
19
14
  end
20
15
 
21
- namespace :copy do
22
- OPENSTAX_SALESFORCE_COPY_PATHS.each do |path|
23
- name = File.basename(path)
24
- desc "Copy #{name} from openstax_salesforce to application"
25
- task name.to_sym do
26
- cp_r File.expand_path("../../../app/#{path}/openstax/salesforce", __FILE__),
27
- "app/#{path}",
28
- verbose: false
29
- print "Copied #{name} from openstax_salesforce\n"
30
- end
31
- end
32
- end
33
-
16
+ # TODO: Remove after all servers have been migrated
34
17
  desc 'Copy migrations from openstax_salesforce to application'
35
18
  task :install do
36
19
  Rake::Task['openstax_salesforce:install:initializers'].invoke
37
20
  Rake::Task['openstax_salesforce:install:migrations'].invoke
38
21
  end
39
-
40
- desc 'Copy all customizable files from openstax_salesforce to application'
41
- task :copy do
42
- OPENSTAX_SALESFORCE_COPY_PATHS.each do |path|
43
- Rake::Task["openstax_salesforce:copy:#{File.basename(path)}"].invoke
44
- end
45
- end
46
22
  end
47
-