learn-web 1.5.1 → 1.5.2

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
- SHA1:
3
- metadata.gz: 57601e58d79acf1f7e97a20d74209ac26dd75eb8
4
- data.tar.gz: 85aafb16da082c6bb109b44828469c03065394db
2
+ SHA256:
3
+ metadata.gz: 1c8a4ccdaa67f5a0a8215220e4fb82eb336975eb5667898ec519de72cd59fe67
4
+ data.tar.gz: 9e993f17ca4d284b6edb9fd9b26508acf196f8617bf534ceec58500c41f1ec1e
5
5
  SHA512:
6
- metadata.gz: ee33c4a4cbb3ead94299f182597a90ef720360f5b2fff9deaedb05d790bcfaf68e884f11c73d14d37f9b3640e9c09841cb24be2590d22af12c7ab80c225a59ed
7
- data.tar.gz: 5611bb9569683b6fda87904cb6a1c7bf4340e023dc7fedf280445ccdc688af6c1be599c8632b6bae3ebb4514692d0e3e18eca96b641d9bb96c487b77555b25c1
6
+ metadata.gz: 1a8242ed8d224d33e036fd4536ddd856af795f179431df531b813789b9b6c6761eff5049047b3c21761400de01c24390edaa9a3c9aeb516e5e7040d236726a82
7
+ data.tar.gz: b6339d5b79ed045569d9b4a13ef6a2b51791f1f900224a0b4c012d7394f8fe9a9a1bee7dcf7506af811c1a37471b861dbe45568149cc1099a35aaff4b3c4c040
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/Guardfile ADDED
@@ -0,0 +1,42 @@
1
+ guard :rspec, cmd: "bundle exec rspec" do
2
+ require "guard/rspec/dsl"
3
+ dsl = Guard::RSpec::Dsl.new(self)
4
+
5
+ # RSpec files
6
+ rspec = dsl.rspec
7
+ watch(rspec.spec_helper) { rspec.spec_dir }
8
+ watch(rspec.spec_support) { rspec.spec_dir }
9
+ watch(rspec.spec_files)
10
+
11
+ # Ruby files
12
+ ruby = dsl.ruby
13
+ dsl.watch_spec_files_for(ruby.lib_files)
14
+
15
+ # Rails files
16
+ rails = dsl.rails(view_extensions: %w(erb haml slim))
17
+ dsl.watch_spec_files_for(rails.app_files)
18
+ dsl.watch_spec_files_for(rails.views)
19
+
20
+ watch(rails.controllers) do |m|
21
+ [
22
+ rspec.spec.call("routing/#{m[1]}_routing"),
23
+ rspec.spec.call("controllers/#{m[1]}_controller"),
24
+ rspec.spec.call("acceptance/#{m[1]}")
25
+ ]
26
+ end
27
+
28
+ # Rails config changes
29
+ watch(rails.spec_helper) { rspec.spec_dir }
30
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
31
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
32
+
33
+ # Capybara features specs
34
+ watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
35
+ watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
36
+
37
+ # Turnip features and steps
38
+ watch(%r{^spec/acceptance/(.+)\.feature$})
39
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
40
+ Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
41
+ end
42
+ end
data/Rakefile CHANGED
@@ -1,2 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
+ task :console do
4
+ require 'pry'
5
+ load 'lib/learn_web.rb'
6
+ Pry.start
7
+ end
data/learn-web.gemspec CHANGED
@@ -19,6 +19,9 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.7"
21
21
  spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "pry", "~> 0.11.3"
23
+ spec.add_development_dependency "rspec", "~> 3.8.0"
24
+ spec.add_development_dependency "guard-rspec", "~> 4.7.0"
22
25
 
23
26
  spec.add_runtime_dependency "faraday", "~> 0.9"
24
27
  spec.add_runtime_dependency "oj", "~> 2.9"
@@ -7,6 +7,7 @@ require 'learn_web/client/validate_repo'
7
7
  require 'learn_web/client/fork'
8
8
  require 'learn_web/client/environment'
9
9
  require 'learn_web/client/event'
10
+ require 'learn_web/client/ssh_keys'
10
11
 
11
12
  module LearnWeb
12
13
  class Client
@@ -24,6 +25,7 @@ module LearnWeb
24
25
  include LearnWeb::Client::User
25
26
  include LearnWeb::Client::Environment
26
27
  include LearnWeb::Client::Event
28
+ include LearnWeb::Client::SshKeys
27
29
 
28
30
  def initialize(token:, silent_output: false)
29
31
  @token = token
@@ -0,0 +1,22 @@
1
+ require 'learn_web/client/ssh_keys/add'
2
+
3
+ module LearnWeb
4
+ class Client
5
+ module SshKeys
6
+ def add_ssh_key_endpoint
7
+ "#{API_ROOT}/ssh_keys"
8
+ end
9
+
10
+ def add_ssh_key(key:, key_title: nil, client: nil)
11
+ response = post(
12
+ add_ssh_key_endpoint,
13
+ headers: { 'Authorization' => "Bearer #{token}" },
14
+ params: { 'key' => key, key_title: key_title }.compact,
15
+ client: client
16
+ )
17
+
18
+ LearnWeb::Client::SshKeys::Add.new(response).parse!
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,35 @@
1
+ module LearnWeb
2
+ class Client
3
+ module SshKeys
4
+ class Add
5
+ attr_reader :response
6
+ attr_accessor :data
7
+
8
+ include LearnWeb::AttributePopulatable
9
+
10
+ def initialize(response)
11
+ @response = response
12
+ end
13
+
14
+ def parse!
15
+ if response.status == 200
16
+ self.data = Oj.load(response.body, symbol_keys: true)
17
+
18
+ populate_attributes!
19
+ self
20
+ else
21
+ case response.status
22
+ when 304
23
+ puts "This key is already in use."
24
+ when 422
25
+ puts "Something went wrong. Please try again."
26
+ else
27
+ puts "Something went wrong. Please try again."
28
+ end
29
+ :error
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module LearnWeb
2
- VERSION = '1.5.1'
2
+ VERSION = '1.5.2'
3
3
  end
@@ -0,0 +1,73 @@
1
+ require 'json'
2
+
3
+ RSpec.describe LearnWeb::Client do
4
+ context "Constants" do
5
+ it "sets the LEARN_URL to learn.co" do
6
+ expect(LearnWeb::Client::LEARN_URL).to eq("https://learn.co")
7
+ end
8
+
9
+ it "sets the API_ROOT to the root" do
10
+ expect(LearnWeb::Client::API_ROOT).to eq("/api/v1")
11
+ end
12
+ end
13
+
14
+ context "Adding an ssh key" do
15
+ let(:headers) { {} }
16
+ let(:params) { {} }
17
+ let(:req_double) { double("request double", headers: headers, params: params) } # Faraday's weird api
18
+ let(:web_client) { double }
19
+ let(:client) { LearnWeb::Client.new(token: "mytoken") }
20
+
21
+ before do
22
+ allow(req_double).to receive(:url).with("/api/v1/ssh_keys")
23
+ end
24
+
25
+ it "correctly makes the request" do
26
+ expect(web_client).to receive(:post)
27
+ .and_yield(req_double)
28
+ .and_return(double(status: 200, body: {message: "Success"}.to_json))
29
+ client.add_ssh_key(key: "a valid ssh key", key_title: "LearnWeb Test Suite", client: web_client)
30
+
31
+ expect(headers).to eq({"Authorization"=>"Bearer mytoken"})
32
+ expect(params).to eq({"key"=>"a valid ssh key", :key_title=>"LearnWeb Test Suite"})
33
+ end
34
+
35
+ it "does not send a key title if not provided" do
36
+ expect(web_client).to receive(:post)
37
+ .and_yield(req_double)
38
+ .and_return(double(status: 200, body: {message: "Success"}.to_json))
39
+
40
+ client.add_ssh_key(key: "a valid ssh key", client: web_client)
41
+
42
+ expect(headers).to eq({"Authorization"=>"Bearer mytoken"})
43
+ expect(params).to eq({"key"=>"a valid ssh key"})
44
+ end
45
+
46
+ it "prints info on 304" do
47
+ expect(web_client).to receive(:post)
48
+ .and_yield(req_double)
49
+ .and_return(double(status: 304, body: {message: "womp"}.to_json))
50
+ expect do
51
+ client.add_ssh_key(key: "a valid ssh key", client: web_client)
52
+ end.to output("This key is already in use.\n").to_stdout
53
+
54
+ end
55
+ it "prints info on 422" do
56
+ expect(web_client).to receive(:post)
57
+ .and_yield(req_double)
58
+ .and_return(double(status: 422, body: {message: "womp"}.to_json))
59
+ expect do
60
+ client.add_ssh_key(key: "a valid ssh key", client: web_client)
61
+ end.to output("Something went wrong. Please try again.\n").to_stdout
62
+ end
63
+
64
+ it "prints info on anything else" do
65
+ expect(web_client).to receive(:post)
66
+ .and_yield(req_double)
67
+ .and_return(double(status: 418, body: {message: "womp"}.to_json))
68
+ expect do
69
+ client.add_ssh_key(key: "a valid ssh key", client: web_client)
70
+ end.to output("Something went wrong. Please try again.\n").to_stdout
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,13 @@
1
+ $: << '.'
2
+ require 'lib/learn_web'
3
+ RSpec.configure do |config|
4
+ config.expect_with :rspec do |expectations|
5
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
6
+ end
7
+
8
+ config.mock_with :rspec do |mocks|
9
+ mocks.verify_partial_doubles = true
10
+ end
11
+
12
+ config.shared_context_metadata_behavior = :apply_to_host_groups
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: learn-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flatiron School
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-21 00:00:00.000000000 Z
11
+ date: 2018-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,48 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.11.3
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.11.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.8.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.8.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 4.7.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 4.7.0
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: faraday
43
85
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +116,9 @@ extensions: []
74
116
  extra_rdoc_files: []
75
117
  files:
76
118
  - ".gitignore"
119
+ - ".rspec"
77
120
  - Gemfile
121
+ - Guardfile
78
122
  - LICENSE.txt
79
123
  - README.md
80
124
  - Rakefile
@@ -97,12 +141,16 @@ files:
97
141
  - lib/learn_web/client/pull_request.rb
98
142
  - lib/learn_web/client/pull_request/response.rb
99
143
  - lib/learn_web/client/request.rb
144
+ - lib/learn_web/client/ssh_keys.rb
145
+ - lib/learn_web/client/ssh_keys/add.rb
100
146
  - lib/learn_web/client/user.rb
101
147
  - lib/learn_web/client/user/me.rb
102
148
  - lib/learn_web/client/validate_repo.rb
103
149
  - lib/learn_web/client/validate_repo/slug.rb
104
150
  - lib/learn_web/response_parsable.rb
105
151
  - lib/learn_web/version.rb
152
+ - spec/learn_web/client_spec.rb
153
+ - spec/spec_helper.rb
106
154
  homepage: https://learn.co
107
155
  licenses:
108
156
  - MIT
@@ -123,8 +171,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
171
  version: '0'
124
172
  requirements: []
125
173
  rubyforge_project:
126
- rubygems_version: 2.6.14
174
+ rubygems_version: 2.7.6
127
175
  signing_key:
128
176
  specification_version: 4
129
177
  summary: An interface to Learn.co
130
- test_files: []
178
+ test_files:
179
+ - spec/learn_web/client_spec.rb
180
+ - spec/spec_helper.rb