turksatkablo_cli 0.1.4 → 0.2.0

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: 1230eb0c37e81a750dac3f03c0e635b6f778e8d8
4
- data.tar.gz: b79102395e62f1f9a992376f7472400094944f08
3
+ metadata.gz: b19ab32c3aae669255dfdf8167dfd170b2c615f0
4
+ data.tar.gz: 7b6fa7332994494a2a18dfa0516d66dcd93e7e55
5
5
  SHA512:
6
- metadata.gz: a490e09b11ba616bb24d4ce2f8163e400a41eaaa2e02ecbfe052e317d0938c85cc83c9351270e32bc32e8282fa5b78ba95a2481c9cee119c0f007b0b4ebaa35c
7
- data.tar.gz: ffe7d6086cb40e455c8e82641cc706aff80efe25817136c9427d92a876aaa21303e4db657fa0ec314cf9353472bb9a7d20a0a14dd8fdeda528419b1391bab84b
6
+ metadata.gz: 706d9059ccddc262168fae94f222897c680112daefde5d868a00e7ad37dd3c14b2fca65491e957f4d602c1b38b67dfbe6e2e4cd4a74900073fe17d769b8c9f75
7
+ data.tar.gz: c7bfac791558500ea4f8039949ee0e2554e4ef131d5d38066d806da93aaf12c80f0a119192342db31a85c912f48edb454d87407a0d0af638a2605c1fcaaf213c
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/README.md CHANGED
@@ -11,7 +11,7 @@ A command-line interface for the Turksat Kablo Online Islemler - https://online.
11
11
 
12
12
  ## Setup
13
13
 
14
- turksatkablo_cli is built with Ruby, so you'll need a working Ruby 2.1.0>= environment to use it. You can find Ruby installation instructions [here](https://www.ruby-lang.org/en/installation/).
14
+ turksatkablo_cli is built with Ruby, so you'll need a working Ruby 2.2.0>= environment to use it. You can find Ruby installation instructions [here](https://www.ruby-lang.org/en/installation/).
15
15
 
16
16
 
17
17
  1. Install via rubygems
@@ -41,14 +41,19 @@ turksatkablo musterino # Müşteri no - kısa kodu mn
41
41
  turksatkablo ozet # Hizmetler genel durum - kısa kodu o
42
42
  ```
43
43
 
44
- ### Changelog
45
-
46
- + 0.1.4 – Fix retry_authenticate and authenticated? methods, login details could not be saved when base url was not reachable
44
+ ## Changelog
45
+ + 0.2.0 – Add `RSpec` and `environment` tests, required `ruby` version updated (2.2.0 >=), `nokogiri` version updated (has a known critical severity security vulnerability in version range < 1.8.1)
46
+ + 0.1.4 – Fix retry_authenticate and authenticated? methods (login details could not be saved after the retry_authenticate method)
47
47
  + 0.1.3 – Modernize multiple classes, add `ozet`, `hizmetler`, `musterino`, `kampanya`, `anlikborc` commands
48
48
  + 0.1.2 – Modernize Agent and Auth classes, ability to save user's encrypted login details, add `kota` command.
49
49
  + 0.1.1 – Build app skeleton, implement basic authentication
50
50
  + 0.1.0 - Initial version.
51
51
 
52
+ ### Development
53
+ ```bash
54
+ bundle exec rspec -fd spec
55
+ ```
56
+
52
57
  ### Contributing
53
58
 
54
59
  turksatkablo_cli is open source, and contributions are very welcome!
data/bin/turksatkablo CHANGED
@@ -1,13 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  ## encoding: utf-8
3
3
 
4
- if RUBY_VERSION < '2.1.0'
5
- abort "turksatkablo_cli requires Ruby 2.1.0 or higher"
6
- end
7
-
8
4
  lib_dir = File.expand_path("../../lib", __FILE__)
9
5
  $LOAD_PATH.unshift lib_dir if File.directory?(lib_dir)
10
6
 
7
+ require 'turksatkablo_cli/online_operations/helpers'
8
+ require 'turksatkablo_cli/online_operations/enums'
9
+
10
+ TurksatkabloCli::OnlineOperations::Helpers.check_ruby_version
11
+ TurksatkabloCli::OnlineOperations::Helpers.check_is_installed?("phantomjs", TurksatkabloCli::OnlineOperations::Enums::PHANTOM_JS_REQUIRED)
12
+
11
13
  require 'turksatkablo_cli'
12
14
 
13
15
  # catch control-c and exit
@@ -20,11 +22,7 @@ end
20
22
  at_exit{
21
23
  # cleanup temp files
22
24
  # close open connections
23
- begin
24
25
  Capybara.current_session.driver.quit
25
- rescue Exception => e
26
- abort "turksatkablo_cli requires phantomjs https://github.com/rokumatsumoto/turksatkablo_cli#setup"
27
- end
28
26
  }
29
27
 
30
28
  TurksatkabloCli.main
@@ -5,11 +5,7 @@ require 'capybara/poltergeist'
5
5
  # See more options at https://github.com/teampoltergeist/poltergeist#customization
6
6
  options = { js_errors: false, phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes'] }
7
7
  Capybara.register_driver :poltergeist do |app|
8
- begin
9
8
  Capybara::Poltergeist::Driver.new(app, options)
10
- rescue Exception => e
11
- abort "turksatkablo_cli requires phantomjs https://github.com/rokumatsumoto/turksatkablo_cli#setup"
12
- end
13
9
  end
14
10
 
15
11
  # Configure Capybara to use Poltergeist as the driver
@@ -1,5 +1,3 @@
1
- require 'turksatkablo_cli/online_operations/helpers'
2
- require 'turksatkablo_cli/online_operations/enums'
3
1
  require 'turksatkablo_cli/online_operations/version'
4
2
  require 'turksatkablo_cli/base'
5
3
  require 'turksatkablo_cli/online_operations/agent'
@@ -5,7 +5,7 @@ module TurksatkabloCli
5
5
  class Agent
6
6
  include Helpers
7
7
  attr_accessor :login_choose, :username, :password, :radio_btn_value,
8
- :fail_login_attempt, :session, :has_logged_in, :auth
8
+ :fail_login_attempt, :session, :has_logged_in
9
9
 
10
10
  def initialize
11
11
  @session = Capybara::Session.new(:poltergeist)
@@ -17,7 +17,6 @@ module TurksatkabloCli
17
17
 
18
18
  def initialize
19
19
  @path = File.join(File.expand_path('~'), FILE_NAME)
20
-
21
20
  @login_data = get
22
21
  end
23
22
 
@@ -28,7 +28,7 @@ module TurksatkabloCli
28
28
  desc "kota", "Kalan kota - kısa kodu k"
29
29
  def kota
30
30
  if agent.authenticated?
31
- puts @session.find(:css, "div.circle-container div.toplam span").text + " GB AKN Kaldı."
31
+ @session.find(:css, "div.circle-container div.toplam p").all("span, sub").map(&:text).each { |val| puts val }
32
32
  end
33
33
  end
34
34
  map "k" => "kota"
@@ -22,6 +22,8 @@ module TurksatkabloCli
22
22
  define :KAMPANYA_ADI, "KAMPANYA ADI"
23
23
  define :TAAHHUT_BAS_TRH, "TAAHHÜT BAŞLANGIÇ TARİHİ"
24
24
  define :TAAHHUT_BIT_TRH, "TAAHHÜT BİTİŞ TARİHİ"
25
+
26
+ define :PHANTOM_JS_REQUIRED, "turksatkablo_cli requires phantomjs https://github.com/rokumatsumoto/turksatkablo_cli#setup"
25
27
  end
26
28
  end
27
29
  end
@@ -1,16 +1,10 @@
1
1
  require 'open3'
2
2
  require 'net/ping'
3
3
 
4
-
5
4
  module TurksatkabloCli
6
5
  module OnlineOperations
7
6
  module Helpers
8
7
 
9
- def run(*commands)
10
- stdin, stdout, stderr, w = Open3.popen3(*commands)
11
- [stdout.gets(nil), stderr.gets(nil), w.value]
12
- end
13
-
14
8
  def internet_connection?
15
9
  begin
16
10
  Net::Ping::External.new("8.8.8.8").ping?
@@ -41,6 +35,32 @@ module TurksatkabloCli
41
35
  puts "\n"
42
36
  end
43
37
 
38
+ def self.check_ruby_version(ruby_version = RUBY_VERSION)
39
+ if ruby_version < '2.2.0'
40
+ abort "turksatkablo_cli requires Ruby 2.2.0 or higher"
41
+ else
42
+ ruby_version
43
+ end
44
+ end
45
+
46
+ def self.check_is_installed?(command, err_msg)
47
+ if which(command)
48
+ true
49
+ else
50
+ abort(err_msg)
51
+ end
52
+ end
53
+
54
+ def self.which(command)
55
+ exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
56
+ ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
57
+ exts.each { |ext|
58
+ exe = File.join(path, "#{command}#{ext}")
59
+ return exe if File.executable?(exe) && !File.directory?(exe)
60
+ }
61
+ end
62
+ return nil
63
+ end
44
64
 
45
65
  end
46
66
  end
@@ -1,5 +1,5 @@
1
1
  module TurksatkabloCli
2
2
  module OnlineOperations
3
- VERSION = "0.1.4"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -0,0 +1,23 @@
1
+ RSpec.describe "environment" do
2
+
3
+ it "ruby version is >= 2.2.0" do
4
+ expect(TurksatkabloCli::OnlineOperations::Helpers.check_ruby_version("2.4.2")).to be >= "2.1.0"
5
+ end
6
+
7
+ it "ruby version is < 2.2.0" do
8
+ expect { TurksatkabloCli::OnlineOperations::Helpers.check_ruby_version("2.1.0") }.to raise_error(SystemExit)
9
+ end
10
+
11
+ it "phantomjs needs to be in path" do
12
+ expect(TurksatkabloCli::OnlineOperations::Helpers.check_is_installed?("phantomjs", TurksatkabloCli::OnlineOperations::Enums::PHANTOM_JS_REQUIRED)).to be_truthy
13
+ end
14
+
15
+ it "ruby is in path" do
16
+ expect(TurksatkabloCli::OnlineOperations::Helpers.which("ruby")).to be_instance_of(String)
17
+ end
18
+
19
+ it "phantom_jsx is not in path" do
20
+ expect { TurksatkabloCli::OnlineOperations::Helpers.check_is_installed?("phantom_jsx", "phantom_jsx is not in path") }.to raise_error(SystemExit)
21
+ end
22
+
23
+ end
@@ -0,0 +1,24 @@
1
+
2
+
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+
6
+ require 'rspec'
7
+ require 'turksatkablo_cli/online_operations/helpers'
8
+ require 'turksatkablo_cli/online_operations/enums'
9
+
10
+ module SpecHelper
11
+ end
12
+
13
+ RSpec.configure do |config|
14
+ config.expect_with :rspec do |expectations|
15
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
16
+ end
17
+
18
+ config.mock_with :rspec do |mocks|
19
+ mocks.verify_partial_doubles = true
20
+ end
21
+
22
+ config.shared_context_metadata_behavior = :apply_to_host_groups
23
+ config.include(SpecHelper)
24
+ end
@@ -27,16 +27,16 @@ Gem::Specification.new do |spec|
27
27
  # f.match(%r{^(test|spec|features)/})
28
28
  # end
29
29
 
30
- spec.required_ruby_version = '>= 2.1.0'
30
+ spec.required_ruby_version = '>= 2.2.0'
31
31
  spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
32
32
  spec.files = `git ls-files`.split("\n")
33
33
  spec.require_paths = ["lib"]
34
34
  spec.add_development_dependency "bundler", "~> 1.16"
35
35
  spec.add_development_dependency "rake", "~> 10.0"
36
+ spec.add_development_dependency 'rspec', '~> 3.0'
36
37
 
37
38
  spec.add_runtime_dependency "thor", '~> 0.20.0'
38
39
  spec.add_runtime_dependency 'highline', '~> 1.7', '>= 1.7.8'
39
- spec.add_runtime_dependency 'nokogiri', '1.7.1'
40
40
  spec.add_runtime_dependency 'rack', '1.6.8'
41
41
  spec.add_runtime_dependency 'rack-test', '0.7.0'
42
42
  spec.add_runtime_dependency 'net-ping', '~> 2.0', '>= 2.0.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turksatkablo_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samet Gunaydin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-02 00:00:00.000000000 Z
11
+ date: 2017-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,20 +86,6 @@ dependencies:
72
86
  - - ">="
73
87
  - !ruby/object:Gem::Version
74
88
  version: 1.7.8
75
- - !ruby/object:Gem::Dependency
76
- name: nokogiri
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - '='
80
- - !ruby/object:Gem::Version
81
- version: 1.7.1
82
- type: :runtime
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - '='
87
- - !ruby/object:Gem::Version
88
- version: 1.7.1
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rack
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -219,6 +219,7 @@ extensions: []
219
219
  extra_rdoc_files: []
220
220
  files:
221
221
  - ".gitignore"
222
+ - ".rspec"
222
223
  - CODE_OF_CONDUCT.md
223
224
  - Gemfile
224
225
  - LICENSE.txt
@@ -237,6 +238,8 @@ files:
237
238
  - lib/turksatkablo_cli/online_operations/enums.rb
238
239
  - lib/turksatkablo_cli/online_operations/helpers.rb
239
240
  - lib/turksatkablo_cli/online_operations/version.rb
241
+ - spec/helper_spec.rb
242
+ - spec/spec_helper.rb
240
243
  - turksatkablo_cli.gemspec
241
244
  homepage: https://github.com/rokumatsumoto/turksatkablo_cli
242
245
  licenses:
@@ -251,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
254
  requirements:
252
255
  - - ">="
253
256
  - !ruby/object:Gem::Version
254
- version: 2.1.0
257
+ version: 2.2.0
255
258
  required_rubygems_version: !ruby/object:Gem::Requirement
256
259
  requirements:
257
260
  - - ">="