diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..1d7fe6d --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,15 @@ +version: 2.1 +jobs: + test: + docker: + - image: cimg/ruby:2.5 + steps: + - checkout + - run: bundle install + - run: bundle exec rake + +workflows: + version: 2 + test_workflow: + jobs: + - test \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2d642aa..68ad36a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ *.gem -Gemfile.lock +# Gemfile.lock ## Documentation cache and generated files: /.yardoc/ diff --git a/.rubocop.yml b/.rubocop.yml index f65b55b..da03d27 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -11,11 +11,15 @@ Metrics/BlockLength: Enabled: false # certificate_1 is an okay variable name -Style/VariableNumber: +Naming/VariableNumber: Enabled: false # This is used a lot across the fastlane code base for config files -Style/MethodMissing: +# Style/MethodMissing: +# Enabled: false +Lint/MissingSuper: + Enabled: false +Style/MissingRespondToMissing: Enabled: false # @@ -39,8 +43,8 @@ Style/TernaryParentheses: Enabled: false # It's better to be more explicit about the type -Style/BracesAroundHashParameters: - Enabled: false +# Style/BracesAroundHashParameters: +# Enabled: false # specs sometimes have useless assignments, which is fine Lint/UselessAssignment: @@ -48,14 +52,14 @@ Lint/UselessAssignment: - '**/spec/**/*' # We could potentially enable the 2 below: -Style/IndentHash: - Enabled: false +# Style/IndentHash: +# Enabled: false -Style/AlignHash: - Enabled: false +# Style/AlignHash: +# Enabled: false # HoundCI doesn't like this rule -Style/DotPosition: +Layout/DotPosition: Enabled: false # We allow !! as it's an easy way to convert ot boolean @@ -63,7 +67,7 @@ Style/DoubleNegation: Enabled: false # Sometimes we allow a rescue block that doesn't contain code -Lint/HandleExceptions: +Lint/SuppressedException: Enabled: false # Cop supports --auto-correct. @@ -117,7 +121,7 @@ Metrics/ClassLength: # Configuration parameters: AllowURI, URISchemes. -Metrics/LineLength: +Layout/LineLength: Max: 370 # Configuration parameters: CountKeywordArgs. @@ -157,7 +161,7 @@ Lint/ParenthesesAsGroupedExpression: # This would reject is_ in front of methods # We use `is_supported?` everywhere already -Style/PredicateName: +Naming/PredicateName: Enabled: false # We allow the $ @@ -165,7 +169,7 @@ Style/PerlBackrefs: Enabled: false # Disable '+ should be surrounded with a single space' for xcodebuild_spec.rb -Style/SpaceAroundOperators: +Layout/SpaceAroundOperators: Exclude: - '**/spec/actions_specs/xcodebuild_spec.rb' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..0064c58 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,258 @@ +PATH + remote: . + specs: + fastlane-plugin-aws_sns (0.2.0) + aws-sdk-sns (~> 1.0) + +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.3) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + artifactory (3.0.15) + ast (2.4.2) + atomos (0.1.3) + aws-eventstream (1.1.1) + aws-partitions (1.470.0) + aws-sdk-core (3.115.0) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.239.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.44.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.96.1) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.1) + aws-sdk-sns (1.41.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sigv4 (1.2.3) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.0.3) + coderay (1.1.3) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + diff-lcs (1.4.4) + digest-crc (0.6.3) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.6) + emoji_regex (3.2.2) + excon (0.82.0) + faraday (1.4.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + multipart-post (>= 1.2, < 3) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.1.0) + faraday_middleware (1.0.0) + faraday (~> 1.0) + fastimage (2.2.4) + fastlane (2.186.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.1) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (~> 2.0.0) + naturally (~> 2.2) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.6.0) + google-apis-core (~> 0.1) + google-apis-core (0.3.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (~> 0.14) + httpclient (>= 2.8.1, < 3.0) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + rexml + signet (~> 0.14) + webrick + google-apis-iamcredentials_v1 (0.4.0) + google-apis-core (~> 0.1) + google-apis-playcustomapp_v1 (0.3.0) + google-apis-core (~> 0.1) + google-apis-storage_v1 (0.4.0) + google-apis-core (~> 0.1) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.5.0) + faraday (>= 0.17.3, < 2.0) + google-cloud-errors (1.1.0) + google-cloud-storage (1.32.0) + addressable (~> 2.5) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.1) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (0.16.2) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.14) + highline (2.0.3) + http-cookie (1.0.4) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.4.0) + json (2.5.1) + jwt (2.2.3) + memoist (0.16.2) + method_source (1.0.0) + mini_magick (4.11.0) + mini_mime (1.1.0) + multi_json (1.15.0) + multipart-post (2.0.0) + nanaimo (0.3.0) + naturally (2.2.1) + os (1.1.1) + parallel (1.20.1) + parser (3.0.1.1) + ast (~> 2.4.1) + plist (3.6.0) + pry (0.14.1) + coderay (~> 1.1) + method_source (~> 1.0) + public_suffix (4.0.6) + rainbow (3.0.0) + rake (13.0.3) + regexp_parser (2.1.1) + representable (3.1.1) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rouge (2.0.7) + rspec (3.10.0) + rspec-core (~> 3.10.0) + rspec-expectations (~> 3.10.0) + rspec-mocks (~> 3.10.0) + rspec-core (3.10.1) + rspec-support (~> 3.10.0) + rspec-expectations (3.10.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.10.0) + rspec-mocks (3.10.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.10.0) + rspec-support (3.10.2) + rubocop (1.17.0) + parallel (~> 1.10) + parser (>= 3.0.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml + rubocop-ast (>= 1.7.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 3.0) + rubocop-ast (1.7.0) + parser (>= 3.0.1.1) + ruby-progressbar (1.11.0) + ruby2_keywords (0.0.4) + rubyzip (2.3.0) + security (0.1.3) + signet (0.15.0) + addressable (~> 2.3) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.1) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unicode-display_width (1.7.0) + webrick (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.19.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + x86_64-darwin-20 + x86_64-darwin-21 + +DEPENDENCIES + bundler + fastlane (>= 2.144.0) + fastlane-plugin-aws_sns! + pry + rake + rspec + rubocop + +BUNDLED WITH + 2.3.4 diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 3c3bb8d..0000000 --- a/circle.yml +++ /dev/null @@ -1,9 +0,0 @@ -test: - override: - - bundle exec rake -machine: - ruby: - version: 2.2.4 -# Enable xcode below if you need macOS -# xcode: -# version: "7.3" diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 4406765..ddf161f 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + platform :ios do lane :test do arn = aws_sns( @@ -25,7 +27,7 @@ platform :android do lane :test_gcm do arn = aws_sns( platform: 'GCM', - platform_name: 'test_app_android_2', + platform_name: 'test_app_android_2' ) puts "test_app_android ARN: #{arn}" end @@ -33,7 +35,7 @@ platform :android do lane :test_fcm do arn = aws_sns( platform: 'FCM', - platform_name: 'test_app_android_2', + platform_name: 'test_app_android_2' ) puts "test_app_android ARN: #{arn}" end diff --git a/spec/aws_sns_action_spec.rb b/spec/aws_sns_action_spec.rb index 38c1ddc..f9e9f92 100644 --- a/spec/aws_sns_action_spec.rb +++ b/spec/aws_sns_action_spec.rb @@ -1,9 +1,43 @@ -describe Fastlane::Actions::AwsSnsAction do - describe '#run' do - it 'prints a message' do - expect(Fastlane::UI).to receive(:message).with("The aws_sns plugin is working!") +describe Fastlane do + describe Fastlane::FastFile do + describe 'aws_sns' do + it 'returns the FCM Platform ARN' do + expect(Fastlane::UI).to receive(:important).with('Created String') + result = Fastlane::FastFile.new.parse(" + lane :test do + aws_sns_client = Aws::SNS::Client.new(stub_responses: true) - Fastlane::Actions::AwsSnsAction.run(nil) + arn = aws_sns({ + aws_sns_client: aws_sns_client, + platform: 'FCM', + platform_name: 'FCM_SNS_PLATFORM_APP', + platform_fcm_server_key: 'PLACEHOLDER_FCM_KEY' + }) + end + ").runner.execute(:test) + + expect(result).to eq("String") + end + + it 'raises an error if no AWS client can be created' do + expect do + Fastlane::FastFile.new.parse(" + lane :test do + + # Just in case they are set + ENV.delete('AWS_SNS_ACCESS_KEY') + ENV.delete('AWS_SNS_SECRET_ACCESS_KEY') + ENV.delete('AWS_SNS_REGION') + + arn = aws_sns({ + platform: 'FCM', + platform_name: 'FCM_SNS_PLATFORM_APP', + platform_fcm_server_key: 'PLACEHOLDER_FCM_KEY' + }) + end + ").runner.execute(:test) + end.to raise_error(FastlaneCore::Interface::FastlaneError) + end end end end