peas-cli 0.4.0 → 0.6.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 +4 -4
 - data/Gemfile +2 -2
 - data/VERSION +1 -1
 - data/lib/peas/api.rb +10 -3
 - data/lib/peas/commands/admin.rb +1 -1
 - data/lib/peas/commands/logs.rb +2 -2
 - data/lib/peas/config.rb +1 -1
 - data/lib/peas/git.rb +1 -1
 - data/peas-cli.gemspec +3 -3
 - data/spec/cli_spec.rb +24 -20
 - data/spec/spec_helper.rb +19 -7
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ff6bd17390d126df42251a27d4b7cbf3ecee90e9
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d57aad2e837e5aa3eeca287cd631d4cb23c0600c
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2e13f14149f6ec04c6775781978b705b84b3492b5ba73551c8a2cba4e7a02652a98b012438a3f3bc39fd48682d2e0697d930ba5ea718266e2f719f46dcffdd05
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b6b6557852a4cee0b445071fec9f79f220848123324bded6fe121c112bd2a25b47cfd7baa4c059ff5729b71757805046cb2c5eaa97fd76d6374d0f524a9fbd50
         
     | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.6.0
         
     | 
    
        data/lib/peas/api.rb
    CHANGED
    
    | 
         @@ -1,8 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'httparty'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'socket'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'openssl'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            class API
         
     | 
| 
       5 
6 
     | 
    
         
             
              include HTTParty
         
     | 
| 
      
 7 
     | 
    
         
            +
              # TODO: Don't want to genuine SSL cert errors, say if there's a CA root cert
         
     | 
| 
      
 8 
     | 
    
         
            +
              default_options.update(verify: false) # Ignore self-signed SSL error
         
     | 
| 
       6 
9 
     | 
    
         | 
| 
       7 
10 
     | 
    
         
             
              LONG_POLL_TIMEOUT = 10 * 60
         
     | 
| 
       8 
11 
     | 
    
         
             
              LONG_POLL_INTERVAL = 0.5
         
     | 
| 
         @@ -51,7 +54,11 @@ class API 
     | 
|
| 
       51 
54 
     | 
    
         
             
              end
         
     | 
| 
       52 
55 
     | 
    
         | 
| 
       53 
56 
     | 
    
         
             
              def self.switchboard_connection
         
     | 
| 
       54 
     | 
    
         
            -
                TCPSocket.new Peas.host, Peas::SWITCHBOARD_PORT
         
     | 
| 
      
 57 
     | 
    
         
            +
                socket = TCPSocket.new Peas.host, Peas::SWITCHBOARD_PORT
         
     | 
| 
      
 58 
     | 
    
         
            +
                ssl = OpenSSL::SSL::SSLSocket.new socket
         
     | 
| 
      
 59 
     | 
    
         
            +
                ssl.sync_close = true
         
     | 
| 
      
 60 
     | 
    
         
            +
                ssl.connect
         
     | 
| 
      
 61 
     | 
    
         
            +
                ssl
         
     | 
| 
       55 
62 
     | 
    
         
             
              end
         
     | 
| 
       56 
63 
     | 
    
         | 
| 
       57 
64 
     | 
    
         
             
              # Stream the output of a Switchboard job
         
     | 
| 
         @@ -86,7 +93,7 @@ class API 
     | 
|
| 
       86 
93 
     | 
    
         | 
| 
       87 
94 
     | 
    
         
             
              # Create 2 threads to allow raw TTY to be sent at the same time as outputting
         
     | 
| 
       88 
95 
     | 
    
         
             
              # data from the socket.
         
     | 
| 
       89 
     | 
    
         
            -
              def self.duplex_socket 
     | 
| 
      
 96 
     | 
    
         
            +
              def self.duplex_socket(socket)
         
     | 
| 
       90 
97 
     | 
    
         
             
                threads = []
         
     | 
| 
       91 
98 
     | 
    
         | 
| 
       92 
99 
     | 
    
         
             
                # Copy STDIN to socket
         
     | 
| 
         @@ -94,7 +101,7 @@ class API 
     | 
|
| 
       94 
101 
     | 
    
         
             
                  STDIN.raw do |stdin|
         
     | 
| 
       95 
102 
     | 
    
         
             
                    IO.copy_stream stdin, socket
         
     | 
| 
       96 
103 
     | 
    
         
             
                  end
         
     | 
| 
       97 
     | 
    
         
            -
                  socket. 
     | 
| 
      
 104 
     | 
    
         
            +
                  socket.close
         
     | 
| 
       98 
105 
     | 
    
         
             
                end
         
     | 
| 
       99 
106 
     | 
    
         | 
| 
       100 
107 
     | 
    
         
             
                # Write response to STDOUT
         
     | 
    
        data/lib/peas/commands/admin.rb
    CHANGED
    
    | 
         @@ -19,7 +19,7 @@ command :admin do |admin| 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  if args.count > 1
         
     | 
| 
       20 
20 
     | 
    
         
             
                    if args.first == 'peas.domain'
         
     | 
| 
       21 
21 
     | 
    
         
             
                      domain = args[1]
         
     | 
| 
       22 
     | 
    
         
            -
                      domain = " 
     | 
| 
      
 22 
     | 
    
         
            +
                      domain = "https://#{domain}" unless domain.start_with? 'https://'
         
     | 
| 
       23 
23 
     | 
    
         
             
                      # Update Git config
         
     | 
| 
       24 
24 
     | 
    
         
             
                      Git.sh "git config peas.domain #{domain}"
         
     | 
| 
       25 
25 
     | 
    
         
             
                      # Update file
         
     | 
    
        data/lib/peas/commands/logs.rb
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ command :logs do |c| 
     | 
|
| 
       5 
5 
     | 
    
         
             
              c.switch [:f, :follow]
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              c.action do |_global_options, options, _args|
         
     | 
| 
       8 
     | 
    
         
            -
                follow = options[:follow] ? 'follow' : ''
         
     | 
| 
       9 
     | 
    
         
            -
                API.stream_output "stream_logs.#{Git.name_from_remote} 
     | 
| 
      
 8 
     | 
    
         
            +
                follow = options[:follow] ? ' follow' : ''
         
     | 
| 
      
 9 
     | 
    
         
            +
                API.stream_output "stream_logs.#{Git.name_from_remote}#{follow}"
         
     | 
| 
       10 
10 
     | 
    
         
             
              end
         
     | 
| 
       11 
11 
     | 
    
         
             
            end
         
     | 
    
        data/lib/peas/config.rb
    CHANGED
    
    
    
        data/lib/peas/git.rb
    CHANGED
    
    | 
         @@ -25,6 +25,6 @@ class Git 
     | 
|
| 
       25 
25 
     | 
    
         
             
                remote_uri = remote unless remote_uri
         
     | 
| 
       26 
26 
     | 
    
         
             
                exit_now! "No Peas remote. I can't figure out what app this is.", 1 if remote_uri == ''
         
     | 
| 
       27 
27 
     | 
    
         
             
                parts = Addressable::URI.parse remote_uri
         
     | 
| 
       28 
     | 
    
         
            -
                parts.path.split('/').last.gsub('.git', '')
         
     | 
| 
      
 28 
     | 
    
         
            +
                parts.path.split('/').last.gsub('.git', '').downcase
         
     | 
| 
       29 
29 
     | 
    
         
             
              end
         
     | 
| 
       30 
30 
     | 
    
         
             
            end
         
     | 
    
        data/peas-cli.gemspec
    CHANGED
    
    | 
         @@ -2,16 +2,16 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         
     | 
| 
       4 
4 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       5 
     | 
    
         
            -
            # stub: peas-cli 0. 
     | 
| 
      
 5 
     | 
    
         
            +
            # stub: peas-cli 0.6.0 ruby lib
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.name = "peas-cli"
         
     | 
| 
       9 
     | 
    
         
            -
              s.version = "0. 
     | 
| 
      
 9 
     | 
    
         
            +
              s.version = "0.6.0"
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.authors = ["Tom Buckley-Houston"]
         
     | 
| 
       14 
     | 
    
         
            -
              s.date = " 
     | 
| 
      
 14 
     | 
    
         
            +
              s.date = "2015-01-03"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.description = "Peas is an open source Heroku-style PaaS written in Ruby and using Docker"
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.email = "tom@tombh.co.uk"
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.executables = ["peas"]
         
     | 
    
        data/spec/cli_spec.rb
    CHANGED
    
    | 
         @@ -18,25 +18,25 @@ describe 'Peas CLI' do 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              describe 'Settings' do
         
     | 
| 
       20 
20 
     | 
    
         
             
                it 'should set and use the domain setting' do
         
     | 
| 
       21 
     | 
    
         
            -
                  stub_request(:put, ' 
     | 
| 
      
 21 
     | 
    
         
            +
                  stub_request(:put, 'https://new-domain.com:4000/admin/settings?peas.domain=new-domain.com:4000')
         
     | 
| 
       22 
22 
     | 
    
         
             
                    .to_return(body: response_mock({}))
         
     | 
| 
       23 
     | 
    
         
            -
                  expect(Git).to receive(:sh).with("git config peas.domain  
     | 
| 
      
 23 
     | 
    
         
            +
                  expect(Git).to receive(:sh).with("git config peas.domain https://new-domain.com:4000")
         
     | 
| 
       24 
24 
     | 
    
         
             
                  cli %w(admin settings peas.domain new-domain.com:4000)
         
     | 
| 
       25 
25 
     | 
    
         
             
                  config = JSON.parse File.open('/tmp/.peas').read
         
     | 
| 
       26 
     | 
    
         
            -
                  expect(config).to eq("domain" => " 
     | 
| 
      
 26 
     | 
    
         
            +
                  expect(config).to eq("domain" => "https://new-domain.com:4000")
         
     | 
| 
       27 
27 
     | 
    
         
             
                end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                it 'should set a normal setting' do
         
     | 
| 
       30 
     | 
    
         
            -
                  stub_request(:put, ' 
     | 
| 
      
 30 
     | 
    
         
            +
                  stub_request(:put, 'https://vcap.me:4000/admin/settings?mongodb.uri=mongodb://uri')
         
     | 
| 
       31 
31 
     | 
    
         
             
                    .to_return(body: response_mock(
         
     | 
| 
       32 
     | 
    
         
            -
                      defaults: { 'peas.domain' => ' 
     | 
| 
      
 32 
     | 
    
         
            +
                      defaults: { 'peas.domain' => 'https://boss.com' },
         
     | 
| 
       33 
33 
     | 
    
         
             
                      services: {
         
     | 
| 
       34 
34 
     | 
    
         
             
                        'mongodb.uri' => 'mongodb://uri',
         
     | 
| 
       35 
35 
     | 
    
         
             
                        'postgres.uri' => 'xsgfd'
         
     | 
| 
       36 
36 
     | 
    
         
             
                      }
         
     | 
| 
       37 
37 
     | 
    
         
             
                    ))
         
     | 
| 
       38 
38 
     | 
    
         
             
                  output = cli %w(admin settings mongodb.uri mongodb://uri)
         
     | 
| 
       39 
     | 
    
         
            -
                  expect(output).to eq("Available settings\n\nDefaults:\n  peas.domain  
     | 
| 
      
 39 
     | 
    
         
            +
                  expect(output).to eq("Available settings\n\nDefaults:\n  peas.domain https://boss.com\n\nServices:\n  mongodb.uri mongodb://uri\n  postgres.uri xsgfd\n\n")
         
     | 
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
              end
         
     | 
| 
         @@ -78,6 +78,7 @@ describe 'Peas CLI' do 
     | 
|
| 
       78 
78 
     | 
    
         
             
                end
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
80 
     | 
    
         
             
                it 'should scale an app', :with_socket do
         
     | 
| 
      
 81 
     | 
    
         
            +
                  expect(@socket).to receive(:puts).with('subscribe.job_progress.123')
         
     | 
| 
       81 
82 
     | 
    
         
             
                  stub_request(
         
     | 
| 
       82 
83 
     | 
    
         
             
                    :put,
         
     | 
| 
       83 
84 
     | 
    
         
             
                    TEST_DOMAIN + '/app/test-test/scale?scaling_hash=%7B%22web%22:%223%22,%22worker%22:%222%22%7D'
         
     | 
| 
         @@ -95,10 +96,17 @@ describe 'Peas CLI' do 
     | 
|
| 
       95 
96 
     | 
    
         
             
                    output = cli %w(run FINAL COMMAND)
         
     | 
| 
       96 
97 
     | 
    
         
             
                    expect(output).to eq "tty.test-test\nFINAL COMMAND\n"
         
     | 
| 
       97 
98 
     | 
    
         
             
                  end
         
     | 
| 
       98 
     | 
    
         
            -
                   
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
                  # This one has taken me soooooo long to figure out. This is testing the ability to open up
         
     | 
| 
      
 100 
     | 
    
         
            +
                  # an SSH-like TTY, that among other things will let you interact with ncurses programs like
         
     | 
| 
      
 101 
     | 
    
         
            +
                  # VIM. So it's important that the duplex (simultaneous read/write) connections are tested.
         
     | 
| 
      
 102 
     | 
    
         
            +
                  it 'should run one-off commands with input from STDIN' do
         
     | 
| 
      
 103 
     | 
    
         
            +
                    # Using a pipe rather than a plain string means that no EOF is sent, which prematurely
         
     | 
| 
      
 104 
     | 
    
         
            +
                    # closes the connection.
         
     | 
| 
      
 105 
     | 
    
         
            +
                    read, write = IO.pipe
         
     | 
| 
      
 106 
     | 
    
         
            +
                    write.write "FINAL COMMAND\n"
         
     | 
| 
      
 107 
     | 
    
         
            +
                    # Stub the pipe into STDIN.raw to simulate typing
         
     | 
| 
       100 
108 
     | 
    
         
             
                    allow(STDIN).to receive(:raw) do |&block|
         
     | 
| 
       101 
     | 
    
         
            -
                      block.call  
     | 
| 
      
 109 
     | 
    
         
            +
                      block.call read
         
     | 
| 
       102 
110 
     | 
    
         
             
                    end
         
     | 
| 
       103 
111 
     | 
    
         
             
                    output = cli %w(run WITH STDIN)
         
     | 
| 
       104 
112 
     | 
    
         
             
                    expect(output).to eq "tty.test-test\nWITH STDIN\nFINAL COMMAND\n"
         
     | 
| 
         @@ -130,21 +138,17 @@ describe 'Peas CLI' do 
     | 
|
| 
       130 
138 
     | 
    
         
             
              end
         
     | 
| 
       131 
139 
     | 
    
         | 
| 
       132 
140 
     | 
    
         
             
              describe 'Logs' do
         
     | 
| 
       133 
     | 
    
         
            -
                it 'should stream logs' do
         
     | 
| 
       134 
     | 
    
         
            -
                  socket  
     | 
| 
       135 
     | 
    
         
            -
                  allow(socket).to receive(: 
     | 
| 
       136 
     | 
    
         
            -
                  allow(socket).to receive(:gets).and_return("Here's ya logs", "MOAR", false)
         
     | 
| 
       137 
     | 
    
         
            -
                  allow(TCPSocket).to receive(:new).and_return(socket)
         
     | 
| 
      
 141 
     | 
    
         
            +
                it 'should stream logs', :with_socket do
         
     | 
| 
      
 142 
     | 
    
         
            +
                  expect(@socket).to receive(:puts).with('stream_logs.test-test')
         
     | 
| 
      
 143 
     | 
    
         
            +
                  allow(@socket).to receive(:gets).and_return("Here's ya logs", "MOAR", false)
         
     | 
| 
       138 
144 
     | 
    
         
             
                  output = cli %w(logs)
         
     | 
| 
       139 
145 
     | 
    
         
             
                  expect(output).to eq "Here's ya logs\nMOAR\n"
         
     | 
| 
       140 
146 
     | 
    
         
             
                end
         
     | 
| 
       141 
147 
     | 
    
         
             
              end
         
     | 
| 
       142 
148 
     | 
    
         | 
| 
       143 
     | 
    
         
            -
              it 'should retrieve and output a long-running command' do
         
     | 
| 
       144 
     | 
    
         
            -
                socket  
     | 
| 
       145 
     | 
    
         
            -
                 
     | 
| 
       146 
     | 
    
         
            -
                allow(socket).to receive(:gets).and_return("doing", "something", "done", false)
         
     | 
| 
       147 
     | 
    
         
            -
                allow(TCPSocket).to receive(:new).and_return(socket)
         
     | 
| 
      
 149 
     | 
    
         
            +
              it 'should retrieve and output a long-running command', :with_socket do
         
     | 
| 
      
 150 
     | 
    
         
            +
                expect(@socket).to receive(:puts).with('subscribe.job_progress.123')
         
     | 
| 
      
 151 
     | 
    
         
            +
                allow(@socket).to receive(:gets).and_return("doing", "something", "done", false)
         
     | 
| 
       148 
152 
     | 
    
         
             
                expect(API).to receive(:puts).with "doing"
         
     | 
| 
       149 
153 
     | 
    
         
             
                expect(API).to receive(:puts).with "something"
         
     | 
| 
       150 
154 
     | 
    
         
             
                expect(API).to receive(:puts).with "done"
         
     | 
| 
         @@ -153,7 +157,7 @@ describe 'Peas CLI' do 
     | 
|
| 
       153 
157 
     | 
    
         | 
| 
       154 
158 
     | 
    
         
             
              it 'should show a warning when there is a version mismatch' do
         
     | 
| 
       155 
159 
     | 
    
         
             
                stub_request(:get, TEST_DOMAIN + '/app/test-test/config')
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
      
 160 
     | 
    
         
            +
                  .to_return(body: '{"version": "100000.1000000.100000"}')
         
     | 
| 
       157 
161 
     | 
    
         
             
                output = cli %w(config)
         
     | 
| 
       158 
162 
     | 
    
         
             
                expect(output).to include 'Your version of the CLI client is out of date'
         
     | 
| 
       159 
163 
     | 
    
         
             
              end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'stringio'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'webmock/rspec'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'openssl'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "../"))
         
     | 
| 
       6 
7 
     | 
    
         
             
            require 'lib/peas'
         
     | 
| 
         @@ -8,8 +9,12 @@ require 'lib/peas' 
     | 
|
| 
       8 
9 
     | 
    
         
             
            ENV['GLI_ENV'] = 'test'
         
     | 
| 
       9 
10 
     | 
    
         
             
            ROOT = File.join(File.expand_path(File.dirname(__FILE__)), '..')
         
     | 
| 
       10 
11 
     | 
    
         
             
            $LOAD_PATH.unshift(File.join(ROOT, 'lib'))
         
     | 
| 
       11 
     | 
    
         
            -
            TEST_DOMAIN = ' 
     | 
| 
      
 12 
     | 
    
         
            +
            TEST_DOMAIN = 'https://vcap.me:4000'
         
     | 
| 
       12 
13 
     | 
    
         
             
            SWITCHBOARD_TEST_PORT = 79345
         
     | 
| 
      
 14 
     | 
    
         
            +
            SSL_KEY_PATH = "#{ROOT}/../contrib/ssl-keys/server.key"
         
     | 
| 
      
 15 
     | 
    
         
            +
            SSL_KEY = OpenSSL::PKey::RSA.new File.read(SSL_KEY_PATH)
         
     | 
| 
      
 16 
     | 
    
         
            +
            SSL_CERT_PATH = "#{ROOT}/../contrib/ssl-keys/server.crt"
         
     | 
| 
      
 17 
     | 
    
         
            +
            SSL_CERT = OpenSSL::X509::Certificate.new File.read(SSL_CERT_PATH)
         
     | 
| 
       13 
18 
     | 
    
         | 
| 
       14 
19 
     | 
    
         
             
            RSpec.configure do |config|
         
     | 
| 
       15 
20 
     | 
    
         
             
              config.mock_with :rspec
         
     | 
| 
         @@ -20,19 +25,26 @@ RSpec.configure do |config| 
     | 
|
| 
       20 
25 
     | 
    
         
             
              end
         
     | 
| 
       21 
26 
     | 
    
         | 
| 
       22 
27 
     | 
    
         
             
              config.before(:each, :with_socket) do
         
     | 
| 
       23 
     | 
    
         
            -
                 
     | 
| 
       24 
     | 
    
         
            -
                 
     | 
| 
       25 
     | 
    
         
            -
                 
     | 
| 
      
 28 
     | 
    
         
            +
                tcp = instance_double TCPSocket
         
     | 
| 
      
 29 
     | 
    
         
            +
                allow(TCPSocket).to receive(:new).and_return(tcp)
         
     | 
| 
      
 30 
     | 
    
         
            +
                @socket = instance_double OpenSSL::SSL::SSLSocket
         
     | 
| 
      
 31 
     | 
    
         
            +
                allow(OpenSSL::SSL::SSLSocket).to receive(:new).and_return(@socket)
         
     | 
| 
      
 32 
     | 
    
         
            +
                allow(@socket).to receive(:sync_close=)
         
     | 
| 
      
 33 
     | 
    
         
            +
                allow(@socket).to receive(:connect)
         
     | 
| 
       26 
34 
     | 
    
         
             
              end
         
     | 
| 
       27 
35 
     | 
    
         | 
| 
       28 
36 
     | 
    
         
             
              config.before(:each, :with_echo_server) do
         
     | 
| 
       29 
     | 
    
         
            -
                 
     | 
| 
      
 37 
     | 
    
         
            +
                tcp_server = TCPServer.new 'vcap.me', SWITCHBOARD_TEST_PORT
         
     | 
| 
      
 38 
     | 
    
         
            +
                context = OpenSSL::SSL::SSLContext.new
         
     | 
| 
      
 39 
     | 
    
         
            +
                context.key = SSL_KEY
         
     | 
| 
      
 40 
     | 
    
         
            +
                context.cert = SSL_CERT
         
     | 
| 
       30 
41 
     | 
    
         
             
                Thread.new do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @server = OpenSSL::SSL::SSLServer.new tcp_server, context
         
     | 
| 
       31 
43 
     | 
    
         
             
                  @connection = @server.accept
         
     | 
| 
       32 
44 
     | 
    
         
             
                  begin
         
     | 
| 
       33 
45 
     | 
    
         
             
                    Timeout.timeout(2) do
         
     | 
| 
       34 
46 
     | 
    
         
             
                      while (line = @connection.gets)
         
     | 
| 
       35 
     | 
    
         
            -
                        @connection. 
     | 
| 
      
 47 
     | 
    
         
            +
                        @connection.write line
         
     | 
| 
       36 
48 
     | 
    
         
             
                        @connection.close if line.strip == 'FINAL COMMAND'
         
     | 
| 
       37 
49 
     | 
    
         
             
                      end
         
     | 
| 
       38 
50 
     | 
    
         
             
                    end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: peas-cli
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tom Buckley-Houston
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-01-03 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: gli
         
     |