oi-api-ruby 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.env.sample +2 -0
- data/.gitignore +3 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +35 -0
- data/Rakefile +9 -0
- data/api_issues.md +89 -0
- data/lib/oi_api.rb +12 -0
- data/lib/oi_api/client.rb +98 -0
- data/lib/oi_api/client/advertisers.rb +31 -0
- data/lib/oi_api/client/auto_responders.rb +35 -0
- data/lib/oi_api/client/balances.rb +15 -0
- data/lib/oi_api/client/cards.rb +33 -0
- data/lib/oi_api/client/charges.rb +15 -0
- data/lib/oi_api/client/data_transfers.rb +31 -0
- data/lib/oi_api/client/offers.rb +32 -0
- data/lib/oi_api/client/reports.rb +15 -0
- data/lib/oi_api/client/subscriptions.rb +23 -0
- data/lib/oi_api/configuration.rb +50 -0
- data/lib/oi_api/lookup_tables.rb +42 -0
- data/lib/oi_api/version.rb +3 -0
- data/oi-api-ruby.gemspec +31 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertiser/it_should_behave_like_GET_resource/returns_200_OK.yml +157 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertiser/it_should_behave_like_GET_resource/returns_HTTParty_Response.yml +157 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertiser/it_should_behave_like_GET_resource/returns_the_resource.yml +157 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertiser/it_should_behave_like_GET_resource/when_advertiser_id_not_found/returns_404.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertiser/it_should_behave_like_GET_resource/when_advertiser_id_not_found/returns_not_found_error_message.yml +117 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertisers/it_should_behave_like_GET_resources/returns_200_OK.yml +157 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertisers/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +237 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_advertisers/it_should_behave_like_GET_resources/returns_all_resources.yml +237 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_create_advertiser/it_should_behave_like_POST_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +117 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_create_advertiser/it_should_behave_like_POST_resource/bad_request/returns_an_error_message.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_create_advertiser/it_should_behave_like_POST_resource/bad_request/returns_an_error_status.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_create_advertiser/it_should_behave_like_POST_resource/returns_201_created.yml +118 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_create_advertiser/it_should_behave_like_POST_resource/returns_a_success_message.yml +78 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_create_advertiser/it_should_behave_like_POST_resource/returns_a_success_status.yml +118 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/deletes_a_data_transfer.yml +153 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/returns_200_OK.yml +116 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/returns_the_correct_message.yml +196 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/returns_the_correct_status.yml +116 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/when_advertiser_not_found/returns_404.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/when_advertiser_not_found/returns_not_found_error_message.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_delete_advertiser/it_should_behave_like_DELETE_resource/when_advertiser_not_found/returns_not_found_error_status.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_reports/it_should_behave_like_GET_resources/returns_200_OK.yml +42 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_reports/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +42 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_reports/it_should_behave_like_GET_resources/returns_all_resources.yml +42 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +116 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/bad_request/returns_an_error_message.yml +156 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/bad_request/returns_an_error_status.yml +156 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/returns_200_OK.yml +155 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/returns_the_correct_message.yml +155 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/returns_the_correct_status.yml +195 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/when_advertiser_not_found/returns_404.yml +117 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/when_advertiser_not_found/returns_error_status.yml +77 -0
- data/spec/cassettes/OiApi_Client_Advertisers/_update_advertiser/it_should_behave_like_PUT_resource/when_advertiser_not_found/returns_not_found_error_message.yml +77 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_all_auto_responders/it_should_behave_like_GET_resources/returns_200_OK.yml +593 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_all_auto_responders/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +593 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_all_auto_responders/it_should_behave_like_GET_resources/returns_all_resources.yml +593 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders/it_should_behave_like_GET_resources/returns_200_OK.yml +273 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +273 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders/it_should_behave_like_GET_resources/returns_all_resources.yml +273 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders_no_offer_id/it_should_behave_like_GET_resources/returns_200_OK.yml +593 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders_no_offer_id/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +673 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders_no_offer_id/it_should_behave_like_GET_resources/returns_all_resources.yml +516 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders_with_offer_id/it_should_behave_like_GET_resources/returns_200_OK.yml +273 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders_with_offer_id/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +354 -0
- data/spec/cassettes/OiApi_Client_AutoResponders/_auto_responders_with_offer_id/it_should_behave_like_GET_resources/returns_all_resources.yml +354 -0
- data/spec/cassettes/OiApi_Client_Balances/_balance/it_should_behave_like_GET_resources/returns_200_OK.yml +78 -0
- data/spec/cassettes/OiApi_Client_Balances/_balance/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +78 -0
- data/spec/cassettes/OiApi_Client_Balances/_balance/it_should_behave_like_GET_resources/returns_all_resources.yml +78 -0
- data/spec/cassettes/OiApi_Client_Balances/_balance/returns_a_balance.yml +78 -0
- data/spec/cassettes/OiApi_Client_Cards/_card/it_should_behave_like_GET_resource/returns_200_OK.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_card/it_should_behave_like_GET_resource/returns_HTTParty_Response.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_card/it_should_behave_like_GET_resource/returns_the_resource.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_card/it_should_behave_like_GET_resource/when_card_id_not_found/returns_404.yml +79 -0
- data/spec/cassettes/OiApi_Client_Cards/_card/it_should_behave_like_GET_resource/when_card_id_not_found/returns_not_found_error_message.yml +79 -0
- data/spec/cassettes/OiApi_Client_Cards/_create_card/it_should_behave_like_POST_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +80 -0
- data/spec/cassettes/OiApi_Client_Cards/_create_card/it_should_behave_like_POST_resource/bad_request/returns_an_error_message.yml +80 -0
- data/spec/cassettes/OiApi_Client_Cards/_create_card/it_should_behave_like_POST_resource/bad_request/returns_an_error_status.yml +80 -0
- data/spec/cassettes/OiApi_Client_Cards/_create_card/it_should_behave_like_POST_resource/returns_201_created.yml +80 -0
- data/spec/cassettes/OiApi_Client_Cards/_create_card/it_should_behave_like_POST_resource/returns_a_success_message.yml +80 -0
- data/spec/cassettes/OiApi_Client_Cards/_create_card/it_should_behave_like_POST_resource/returns_a_success_status.yml +80 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/bad_request/returns_an_error_message.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/bad_request/returns_an_error_status.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/returns_200_OK.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/returns_the_correct_message.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/returns_the_correct_status.yml +117 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/when_card_not_found/returns_404.yml +79 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/when_card_not_found/returns_error_status.yml +79 -0
- data/spec/cassettes/OiApi_Client_Cards/_update_card/it_should_behave_like_PUT_resource/when_card_not_found/returns_not_found_error_message.yml +79 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_create_data_transfer/it_should_behave_like_POST_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +352 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_create_data_transfer/it_should_behave_like_POST_resource/bad_request/returns_an_error_message.yml +352 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_create_data_transfer/it_should_behave_like_POST_resource/bad_request/returns_an_error_status.yml +352 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_create_data_transfer/it_should_behave_like_POST_resource/returns_201_created.yml +352 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_create_data_transfer/it_should_behave_like_POST_resource/returns_a_success_message.yml +272 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_create_data_transfer/it_should_behave_like_POST_resource/returns_a_success_status.yml +352 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfer/it_should_behave_like_GET_resource/returns_200_OK.yml +393 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfer/it_should_behave_like_GET_resource/returns_HTTParty_Response.yml +393 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfer/it_should_behave_like_GET_resource/returns_the_resource.yml +472 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfer/it_should_behave_like_GET_resource/when_data_transfer_id_not_found/returns_404.yml +115 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfer/it_should_behave_like_GET_resource/when_data_transfer_id_not_found/returns_not_found_error_message.yml +236 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfers/it_should_behave_like_GET_resources/returns_200_OK.yml +354 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfers/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +434 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_data_transfers/it_should_behave_like_GET_resources/returns_all_resources.yml +434 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/deletes_a_data_transfer.yml +428 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/returns_200_OK.yml +390 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/returns_the_correct_message.yml +310 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/returns_the_correct_status.yml +390 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/when_data_transfer_not_found/returns_404.yml +115 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/when_data_transfer_not_found/returns_not_found_error_message.yml +195 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_delete_data_transfer/it_should_behave_like_DELETE_resource/when_data_transfer_not_found/returns_not_found_error_status.yml +115 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +390 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/bad_request/returns_an_error_message.yml +390 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/bad_request/returns_an_error_status.yml +390 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/returns_200_OK.yml +389 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/returns_the_correct_message.yml +389 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/returns_the_correct_status.yml +349 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/when_data_transfer_not_found/returns_404.yml +274 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/when_data_transfer_not_found/returns_error_status.yml +234 -0
- data/spec/cassettes/OiApi_Client_DataTransfers/_update_data_transfer/it_should_behave_like_PUT_resource/when_data_transfer_not_found/returns_not_found_error_message.yml +234 -0
- data/spec/cassettes/OiApi_Client_Offers/_create_offer/it_should_behave_like_POST_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +195 -0
- data/spec/cassettes/OiApi_Client_Offers/_create_offer/it_should_behave_like_POST_resource/bad_request/returns_an_error_message.yml +195 -0
- data/spec/cassettes/OiApi_Client_Offers/_create_offer/it_should_behave_like_POST_resource/bad_request/returns_an_error_status.yml +195 -0
- data/spec/cassettes/OiApi_Client_Offers/_create_offer/it_should_behave_like_POST_resource/returns_201_created.yml +196 -0
- data/spec/cassettes/OiApi_Client_Offers/_create_offer/it_should_behave_like_POST_resource/returns_a_success_message.yml +156 -0
- data/spec/cassettes/OiApi_Client_Offers/_create_offer/it_should_behave_like_POST_resource/returns_a_success_status.yml +196 -0
- data/spec/cassettes/OiApi_Client_Offers/_offer/it_should_behave_like_GET_resource/returns_200_OK.yml +246 -0
- data/spec/cassettes/OiApi_Client_Offers/_offer/it_should_behave_like_GET_resource/returns_HTTParty_Response.yml +246 -0
- data/spec/cassettes/OiApi_Client_Offers/_offer/it_should_behave_like_GET_resource/returns_the_resource.yml +284 -0
- data/spec/cassettes/OiApi_Client_Offers/_offer/it_should_behave_like_GET_resource/when_offer_id_not_found/returns_404.yml +115 -0
- data/spec/cassettes/OiApi_Client_Offers/_offer/it_should_behave_like_GET_resource/when_offer_id_not_found/returns_not_found_error_message.yml +195 -0
- data/spec/cassettes/OiApi_Client_Offers/_offers/it_should_behave_like_GET_resources/returns_200_OK.yml +416 -0
- data/spec/cassettes/OiApi_Client_Offers/_offers/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +457 -0
- data/spec/cassettes/OiApi_Client_Offers/_offers/it_should_behave_like_GET_resources/returns_all_resources.yml +457 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/bad_request/returns_400_bad_request_with_invalid_params.yml +194 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/bad_request/returns_an_error_message.yml +234 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/bad_request/returns_an_error_status.yml +234 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/returns_200_OK.yml +234 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/returns_the_correct_message.yml +234 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/returns_the_correct_status.yml +315 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/when_offer_not_found/returns_404.yml +154 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/when_offer_not_found/returns_error_status.yml +114 -0
- data/spec/cassettes/OiApi_Client_Offers/_update_offer/it_should_behave_like_PUT_resource/when_offer_not_found/returns_not_found_error_message.yml +114 -0
- data/spec/cassettes/OiApi_Client_Reports/_reports/it_should_behave_like_GET_resources/returns_200_OK.yml +46 -0
- data/spec/cassettes/OiApi_Client_Reports/_reports/it_should_behave_like_GET_resources/returns_HTTParty_Response.yml +46 -0
- data/spec/cassettes/OiApi_Client_Reports/_reports/it_should_behave_like_GET_resources/returns_all_resources.yml +46 -0
- data/spec/cassettes/OiApi_Client_Reports/_reports/returns_a_report_summary.yml +46 -0
- data/spec/cassettes/OiApi_Client_Reports/_reports_with_query_params/retrieves_the_last_60_days_of_data.yml +42 -0
- data/spec/oi_api/client/advertisers_spec.rb +86 -0
- data/spec/oi_api/client/auto_responders_spec.rb +55 -0
- data/spec/oi_api/client/balances_spec.rb +22 -0
- data/spec/oi_api/client/cards_spec.rb +60 -0
- data/spec/oi_api/client/charges_spec.rb +9 -0
- data/spec/oi_api/client/data_transfers_spec.rb +95 -0
- data/spec/oi_api/client/offers_spec.rb +84 -0
- data/spec/oi_api/client/reports_spec.rb +31 -0
- data/spec/oi_api/client/subscriptions_spec.rb +11 -0
- data/spec/oi_api_spec.rb +49 -0
- data/spec/shared_examples_for_delete_resource.rb +37 -0
- data/spec/shared_examples_for_get_resource.rb +33 -0
- data/spec/shared_examples_for_get_resources.rb +15 -0
- data/spec/shared_examples_for_post_resource.rb +31 -0
- data/spec/shared_examples_for_put_resource.rb +46 -0
- data/spec/spec_helper.rb +60 -0
- data/spec/support/advertisers_factory.rb +22 -0
- data/spec/support/auto_responders_factory.rb +27 -0
- data/spec/support/balances_factory.rb +12 -0
- data/spec/support/cards_factory.rb +34 -0
- data/spec/support/charges_factory.rb +16 -0
- data/spec/support/data_transfers_factory.rb +34 -0
- data/spec/support/factory.rb +48 -0
- data/spec/support/offers_factory.rb +53 -0
- data/spec/support/reports_factory.rb +12 -0
- data/spec/support/subscriptions_factory.rb +16 -0
- data/spec_output.txt +341 -0
- metadata +487 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'shared_examples_for_get_resource.rb'
|
4
|
+
require 'shared_examples_for_get_resources.rb'
|
5
|
+
require 'shared_examples_for_post_resource.rb'
|
6
|
+
|
7
|
+
RSpec.describe OiApi::Client::Subscriptions do
|
8
|
+
|
9
|
+
let(:api) { Factory.api_client }
|
10
|
+
|
11
|
+
end
|
data/spec/oi_api_spec.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe OiApi do
|
4
|
+
|
5
|
+
it 'has a version' do
|
6
|
+
expect(OiApi::VERSION).to be_instance_of(String)
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'configuration' do
|
10
|
+
|
11
|
+
context '.username' do
|
12
|
+
it 'defaults nil' do
|
13
|
+
expect(OiApi.username).to be_nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context '.password' do
|
18
|
+
it 'defaults nil' do
|
19
|
+
expect(OiApi.password).to be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context '.api_endpoint' do
|
24
|
+
it 'has a default' do
|
25
|
+
expect(OiApi.api_endpoint).to eql(OiApi::Configuration::DEFAULT_API_ENDPOINT)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context '.user_agent' do
|
30
|
+
it 'has a default' do
|
31
|
+
expect(OiApi.user_agent).to eql(OiApi::Configuration::DEFAULT_USER_AGENT)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context '.format' do
|
36
|
+
it 'has a default' do
|
37
|
+
expect(OiApi.format).to eql(OiApi::Configuration::DEFAULT_FORMAT)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context '.content_type' do
|
42
|
+
it 'has a default' do
|
43
|
+
expect(OiApi.content_type).to eql(OiApi::Configuration::DEFAULT_CONTENT_TYPE)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
RSpec.shared_examples 'DELETE resource' do |resource_name, options|
|
2
|
+
|
3
|
+
it 'returns the correct message' do
|
4
|
+
expect(response['message']).to eql("#{titleized_resource(resource_name)} Succesfully deleted")
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'returns the correct status' do
|
8
|
+
expect(response['status']).to eql('Delete Successful')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns 200 OK' do
|
12
|
+
expect(response.code).to eql 200
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'deletes a data transfer' do
|
16
|
+
response
|
17
|
+
resource_id = eval("#{resource_name}['id']")
|
18
|
+
expect(api.public_send(resource_name, resource_id).code).to eql 404
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when #{resource_name} not found" do
|
22
|
+
|
23
|
+
it 'returns not found error message' do
|
24
|
+
expect(not_found_response['message']).to eql 'Record not found'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns not found error status' do
|
28
|
+
expect(not_found_response['status']).to eql 'Request Failed'
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'returns 404' do
|
32
|
+
expect(not_found_response.code).to eql 404
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
RSpec.shared_examples 'GET resource' do |resource_name, options|
|
2
|
+
|
3
|
+
it 'returns 200 OK' do
|
4
|
+
expect(response.code).to eql 200
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'returns HTTParty::Response' do
|
8
|
+
expect(response.class).to eql HTTParty::Response
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns the resource' do
|
12
|
+
keys = Factory.public_send("valid_#{resource_name}_params".to_sym).keys.map(&:to_s)
|
13
|
+
expect(response.keys).to include *keys
|
14
|
+
end
|
15
|
+
|
16
|
+
context "when #{resource_name}_id not found" do
|
17
|
+
|
18
|
+
it 'returns not found error message' do
|
19
|
+
expect(not_found_response['message']).to eql 'Record not found'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns not found error message' do
|
23
|
+
expect(not_found_response['status']).to eql 'Retrieve Failed'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns 404' do
|
27
|
+
expect(not_found_response.code).to eql 404
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
RSpec.shared_examples 'GET resources' do |resource_name, options|
|
2
|
+
|
3
|
+
it 'returns 200 OK' do
|
4
|
+
expect(response.code).to eql 200
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'returns HTTParty::Response' do
|
8
|
+
expect(response.class).to eql HTTParty::Response
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns all resources' do
|
12
|
+
expect(response.size).to eql options[:expected_num_resources]
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
RSpec.shared_examples 'POST resource' do |resource_name, options|
|
2
|
+
|
3
|
+
it 'returns a success message' do
|
4
|
+
expect(response['message']).to eql("#{titleized_resource(resource_name)} successfully created")
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'returns a success status' do
|
8
|
+
expect(response['status']).to eql('Request Successful')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns 201 created' do
|
12
|
+
expect(response.code).to eql 201
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'bad request' do
|
16
|
+
|
17
|
+
it 'returns 400 bad request with invalid params' do
|
18
|
+
expect(bad_response.code).to eql 400
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns an error message' do
|
22
|
+
expect(bad_response['message']).to eql(bad_response_message)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns an error status' do
|
26
|
+
expect(bad_response['status']).to eql(bad_response_status)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
RSpec.shared_examples 'PUT resource' do |resource_name, options|
|
2
|
+
|
3
|
+
it "returns the correct status" do
|
4
|
+
expect(response['status']).to eql('Request Successful')
|
5
|
+
end
|
6
|
+
|
7
|
+
it "returns the correct message" do
|
8
|
+
expect(response['message']).to eql("#{titleized_resource(resource_name)} successfully updated")
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns 200 OK' do
|
12
|
+
expect(response.code).to eql 200
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'bad request' do
|
16
|
+
|
17
|
+
it 'returns 400 bad request with invalid params' do
|
18
|
+
expect(bad_response.code).to eql 400
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns an error message' do
|
22
|
+
expect(bad_response['message']).to eql(bad_response_message)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns an error status' do
|
26
|
+
expect(bad_response['status']).to eql(bad_response_status)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when #{resource_name} not found" do
|
31
|
+
|
32
|
+
it 'returns 404' do
|
33
|
+
expect(not_found_response.code).to eql 404
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns not found error message' do
|
37
|
+
expect(not_found_response['message']).to eql "#{titleized_resource(resource_name)} not found"
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'returns error status' do
|
41
|
+
expect(not_found_response['status']).to eql 'Update Failed'
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib', 'oi_api')
|
2
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
3
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__), 'support')
|
4
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'dotenv'
|
7
|
+
Dotenv.load
|
8
|
+
|
9
|
+
require 'oi_api'
|
10
|
+
require 'rspec'
|
11
|
+
require 'vcr'
|
12
|
+
require 'pry'
|
13
|
+
require 'support/factory'
|
14
|
+
|
15
|
+
VCR.configure do |c|
|
16
|
+
c.allow_http_connections_when_no_cassette = true
|
17
|
+
c.hook_into :webmock
|
18
|
+
c.cassette_library_dir = 'spec/cassettes'
|
19
|
+
c.configure_rspec_metadata!
|
20
|
+
|
21
|
+
c.filter_sensitive_data('<USERNAME>') do |interaction|
|
22
|
+
CGI.escape(Factory.test_oi_username)
|
23
|
+
end
|
24
|
+
|
25
|
+
c.filter_sensitive_data('<PASSWORD>') do |interaction|
|
26
|
+
CGI.escape(Factory.test_oi_password)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
31
|
+
RSpec.configure do |config|
|
32
|
+
|
33
|
+
config.expect_with :rspec do |expectations|
|
34
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
35
|
+
end
|
36
|
+
|
37
|
+
config.mock_with :rspec do |mocks|
|
38
|
+
mocks.verify_partial_doubles = true
|
39
|
+
end
|
40
|
+
|
41
|
+
config.order = :random
|
42
|
+
config.filter_run :focus
|
43
|
+
config.run_all_when_everything_filtered = true
|
44
|
+
config.disable_monkey_patching!
|
45
|
+
config.warnings = false
|
46
|
+
|
47
|
+
if config.files_to_run.one?
|
48
|
+
# Use the documentation formatter for detailed output,
|
49
|
+
# unless a formatter has already been configured
|
50
|
+
# (e.g. via a command-line flag).
|
51
|
+
config.default_formatter = 'doc'
|
52
|
+
end
|
53
|
+
|
54
|
+
config.profile_examples = 10
|
55
|
+
Kernel.srand config.seed
|
56
|
+
end
|
57
|
+
|
58
|
+
def titleized_resource(resource_name)
|
59
|
+
resource_name.to_s.split('_').map(&:capitalize).join
|
60
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module AdvertisersFactory
|
2
|
+
|
3
|
+
def valid_advertiser_params(params = {})
|
4
|
+
{
|
5
|
+
'name': "new advertiser #{random_string}",
|
6
|
+
'status_id': 1,
|
7
|
+
'category_id': 1010
|
8
|
+
}.merge(params)
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_advertiser(params = {})
|
12
|
+
_params = valid_advertiser_params.merge(params)
|
13
|
+
api_client.create_advertiser(_params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete_all_advertisers
|
17
|
+
api_client.advertisers.each do |advertiser|
|
18
|
+
api_client.delete_advertiser(advertiser['id'])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module AutoRespondersFactory
|
2
|
+
|
3
|
+
def valid_auto_responder_params(params = {})
|
4
|
+
{
|
5
|
+
status_id: 1,
|
6
|
+
subject: 'Here\'s a good subject line',
|
7
|
+
from_name: 'Our Company',
|
8
|
+
body_html: 'some html here',
|
9
|
+
body_text: 'some text here'
|
10
|
+
}.merge(params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_auto_responder(params = {})
|
14
|
+
offer_id = if params.has_key?(:offer_id)
|
15
|
+
params.delete(:offer_id)
|
16
|
+
else
|
17
|
+
create_offer['id']
|
18
|
+
end
|
19
|
+
|
20
|
+
_params = valid_auto_responder_params(params)
|
21
|
+
api_client.create_auto_responder(offer_id, _params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete_all_auto_responders
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module CardsFactory
|
2
|
+
|
3
|
+
def valid_card_params(params = {})
|
4
|
+
{
|
5
|
+
number: 0000111122223333,
|
6
|
+
exp_month: 12,
|
7
|
+
exp_year: 16,
|
8
|
+
cvc: 111,
|
9
|
+
name: 'John Tester',
|
10
|
+
address_line1: '123 Elm Street',
|
11
|
+
address_line2: 'Apt 2',
|
12
|
+
address_city: 'Rochester',
|
13
|
+
address_zip: 14605,
|
14
|
+
address_state: 'NY',
|
15
|
+
address_country: 'US',
|
16
|
+
default: 'true'
|
17
|
+
}.merge(params)
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_card(params = {})
|
21
|
+
advertiser_id = if params.has_key?(:advertiser_id)
|
22
|
+
params.delete(:advertiser_id)
|
23
|
+
else
|
24
|
+
create_advertiser['id']
|
25
|
+
end
|
26
|
+
|
27
|
+
_params = valid_card_params(params)
|
28
|
+
api_client.create_card(advertiser_id, _params)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_all_cards
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module DataTransfersFactory
|
2
|
+
|
3
|
+
def valid_data_transfer_params(params ={})
|
4
|
+
offer_id = if params.has_key?(:offer_id)
|
5
|
+
params.delete(:offer_id)
|
6
|
+
else
|
7
|
+
create_offer['id']
|
8
|
+
end
|
9
|
+
|
10
|
+
{
|
11
|
+
name: "DT for Special Product 1 #{random_string}",
|
12
|
+
status_id: 1,
|
13
|
+
type: 'http',
|
14
|
+
offer_id: offer_id,
|
15
|
+
dt_info: {
|
16
|
+
base_url: 'http://www.someclientbaseurl.com',
|
17
|
+
method: 'POST'
|
18
|
+
},
|
19
|
+
data_fields: [
|
20
|
+
{ email: '#{EM}' },
|
21
|
+
{ first_name: '#{FN}' },
|
22
|
+
{ last_name: '#{LN}' },
|
23
|
+
{ zip: '#{PO}' },
|
24
|
+
{ gender: '#{G}' }
|
25
|
+
]
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_data_transfer(params = {})
|
30
|
+
_params = valid_data_transfer_params(params)
|
31
|
+
api_client.create_data_transfer(_params[:offer_id], _params)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|