diff --git a/app/app/services/pinwheel_service.rb b/app/app/services/pinwheel_service.rb index a996fb5f..dfe0e8f6 100644 --- a/app/app/services/pinwheel_service.rb +++ b/app/app/services/pinwheel_service.rb @@ -56,13 +56,25 @@ def fetch_paystubs(account_id:) end def create_link_token(end_user_id:, response_type:, id:) - @http.post(build_url(USER_TOKENS_ENDPOINT), { + params = { org_name: "Verify.gov", required_jobs: [ "paystubs" ], end_user_id: end_user_id, - skip_intro_screen: true, - "#{response_type}_id": id - }.to_json).body + skip_intro_screen: true + } + + case response_type.presence + when "employer" + params["employer_id"] = id + when "platform" + params["platform_id"] = id + when nil + # do nothing + else + raise "Invalid `response_type`: #{response_type}" + end + + @http.post(build_url(USER_TOKENS_ENDPOINT), params.to_json).body end def fetch_webhook_subscriptions diff --git a/app/app/views/cbv_flows/_employer.html.erb b/app/app/views/cbv_flows/_employer.html.erb index e9bcf4b2..3f58e428 100644 --- a/app/app/views/cbv_flows/_employer.html.erb +++ b/app/app/views/cbv_flows/_employer.html.erb @@ -36,4 +36,15 @@ <% end %> + +

Employer not listed?

+ <% end %> diff --git a/app/config/locales/en.yml b/app/config/locales/en.yml index 0c1ef162..85bda9d0 100644 --- a/app/config/locales/en.yml +++ b/app/config/locales/en.yml @@ -28,6 +28,7 @@ en: header: Get payment info from your employer. results: Results search: Search + search_by_payroll_provider: Search for payroll provider select: Select subheader: Search for an employer entry: diff --git a/app/spec/controllers/api/pinwheel_controller_spec.rb b/app/spec/controllers/api/pinwheel_controller_spec.rb new file mode 100644 index 00000000..1f080467 --- /dev/null +++ b/app/spec/controllers/api/pinwheel_controller_spec.rb @@ -0,0 +1,41 @@ +require "rails_helper" + +RSpec.describe Api::PinwheelController do + include PinwheelApiHelper + + context "#create_token" do + let(:cbv_flow) { CbvFlow.create(case_number: "TEST123") } + let(:valid_params) do + { + pinwheel: { response_type: "employer", id: "123" } + } + end + + before do + session[:cbv_flow_id] = cbv_flow.id + stub_create_token_response + end + + it "creates a link token with Pinwheel" do + post :create_token, params: valid_params + + expect(JSON.parse(response.body)) + .to include("token" => be_a(String)) + end + + describe "when the button is pressed without an employer or ID" do + let(:valid_params) do + { + pinwheel: { response_type: "", id: "" } + } + end + + it "still creates a link token with Pinwheel" do + post :create_token, params: valid_params + + expect(JSON.parse(response.body)) + .to include("token" => be_a(String)) + end + end + end +end diff --git a/app/spec/services/pinwheel_service_spec.rb b/app/spec/services/pinwheel_service_spec.rb index aef7059a..46380bbf 100644 --- a/app/spec/services/pinwheel_service_spec.rb +++ b/app/spec/services/pinwheel_service_spec.rb @@ -25,6 +25,13 @@ response = service.create_link_token(end_user_id: end_user_id, response_type: 'employer', id: 'fake_id') expect(response['data']['id']).to eq(end_user_id) end + + context "with an empty response_type and id" do + it 'returns a user token' do + response = service.create_link_token(end_user_id: end_user_id, response_type: '', id: '') + expect(response['data']['id']).to eq(end_user_id) + end + end end describe "#verify_webhook_signature" do