socky 0.1.3 → 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.
- data/CHANGELOG.textile +9 -0
- data/Rakefile +4 -0
- data/VERSION +1 -1
- data/lib/socky.rb +12 -0
- data/lib/socky/connection.rb +49 -14
- data/lib/socky/connection/authentication.rb +27 -7
- data/lib/socky/connection/finders.rb +54 -43
- data/lib/socky/message.rb +30 -12
- data/lib/socky/misc.rb +22 -0
- data/lib/socky/net_request.rb +5 -0
- data/lib/socky/options.rb +18 -7
- data/lib/socky/options/config.rb +20 -14
- data/lib/socky/options/parser.rb +5 -0
- data/lib/socky/runner.rb +29 -18
- data/spec/em-websocket_spec.rb +3 -4
- data/spec/socky/connection/authentication_spec.rb +27 -16
- data/spec/socky/connection/finders_spec.rb +44 -44
- data/spec/socky/connection_spec.rb +5 -5
- data/spec/socky/message_spec.rb +43 -76
- data/spec/socky/net_request_spec.rb +0 -1
- data/spec/socky/runner_spec.rb +7 -3
- data/spec/{stallion.rb → support/stallion.rb} +0 -0
- metadata +21 -7
| @@ -103,7 +103,7 @@ describe Socky::Connection do | |
| 103 103 | 
             
                it "#send_data should send message by socket in json format" do
         | 
| 104 104 | 
             
                  @connection.socket.stub!(:send)
         | 
| 105 105 | 
             
                  @connection.socket.should_receive(:send).with({:test => "abstract"}.to_json)
         | 
| 106 | 
            -
                  @connection.send_data | 
| 106 | 
            +
                  @connection.send(:send_data, {:test => "abstract"})
         | 
| 107 107 | 
             
                end
         | 
| 108 108 | 
             
                it "#disconnect should close connection after writing" do
         | 
| 109 109 | 
             
                  @connection.socket.stub!(:close_connection_after_writing)
         | 
| @@ -113,7 +113,7 @@ describe Socky::Connection do | |
| 113 113 | 
             
                context "#add_to_pool" do
         | 
| 114 114 | 
             
                  it "should add self to class connection list if self isn't already on list or self isn't admin" do
         | 
| 115 115 | 
             
                    @connection.stub!(:admin).and_return(false)
         | 
| 116 | 
            -
                    @connection.add_to_pool
         | 
| 116 | 
            +
                    @connection.send(:add_to_pool)
         | 
| 117 117 | 
             
                    described_class.connections.should include(@connection)
         | 
| 118 118 | 
             
                    described_class.connections.should have(1).item
         | 
| 119 119 | 
             
                  end
         | 
| @@ -121,20 +121,20 @@ describe Socky::Connection do | |
| 121 121 | 
             
                    described_class.connections << @connection
         | 
| 122 122 | 
             
                    described_class.connections.should have(1).item
         | 
| 123 123 | 
             
                    @connection.stub!(:admin).and_return(false)
         | 
| 124 | 
            -
                    @connection.add_to_pool
         | 
| 124 | 
            +
                    @connection.send(:add_to_pool)
         | 
| 125 125 | 
             
                    described_class.connections.should include(@connection)
         | 
| 126 126 | 
             
                    described_class.connections.should have(1).item
         | 
| 127 127 | 
             
                  end
         | 
| 128 128 | 
             
                  it "should not add self to class connection list if self is admin" do
         | 
| 129 129 | 
             
                    @connection.stub!(:admin).and_return(true)
         | 
| 130 | 
            -
                    @connection.add_to_pool
         | 
| 130 | 
            +
                    @connection.send(:add_to_pool)
         | 
| 131 131 | 
             
                    described_class.connections.should_not include(@connection)
         | 
| 132 132 | 
             
                  end
         | 
| 133 133 | 
             
                end
         | 
| 134 134 | 
             
                it "#remove_from_pool should delete self from class connection list" do
         | 
| 135 135 | 
             
                  described_class.connections << @connection
         | 
| 136 136 | 
             
                  described_class.connections.should have(1).item
         | 
| 137 | 
            -
                  @connection.remove_from_pool
         | 
| 137 | 
            +
                  @connection.send(:remove_from_pool)
         | 
| 138 138 | 
             
                  described_class.connections.should_not include(@connection)
         | 
| 139 139 | 
             
                  described_class.connections.should have(0).items
         | 
| 140 140 | 
             
                end
         | 
    
        data/spec/socky/message_spec.rb
    CHANGED
    
    | @@ -47,89 +47,56 @@ describe Socky::Message do | |
| 47 47 | 
             
              context "instance" do
         | 
| 48 48 | 
             
                before(:each) { @message = described_class.new(@connection, {}.to_json) }
         | 
| 49 49 | 
             
                context "#process" do
         | 
| 50 | 
            -
                   | 
| 51 | 
            -
                    @message.stub!(: | 
| 52 | 
            -
                    @message.stub!(:broadcast)
         | 
| 53 | 
            -
                    @message.should_receive(:broadcast)
         | 
| 54 | 
            -
                    @message.process
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                  it "should not distinguish between string and symbol in command" do
         | 
| 57 | 
            -
                    @message.stub!(:params).and_return({:command => 'broadcast'})
         | 
| 58 | 
            -
                    @message.stub!(:broadcast)
         | 
| 59 | 
            -
                    @message.should_receive(:broadcast)
         | 
| 60 | 
            -
                    @message.process
         | 
| 61 | 
            -
                  end
         | 
| 62 | 
            -
                  it "should call #query if message command is :query" do
         | 
| 63 | 
            -
                    @message.stub!(:params).and_return({:command => :query})
         | 
| 64 | 
            -
                    @message.stub!(:query)
         | 
| 65 | 
            -
                    @message.should_receive(:query)
         | 
| 66 | 
            -
                    @message.process
         | 
| 50 | 
            +
                  before(:each) do
         | 
| 51 | 
            +
                    @message.stub!(:send_message)
         | 
| 67 52 | 
             
                  end
         | 
| 68 53 | 
             
                  it "should raise error if message command is nil" do
         | 
| 69 54 | 
             
                    @message.stub!(:params).and_return({:command => nil})
         | 
| 70 | 
            -
                    lambda {@message.process}.should raise_error | 
| 55 | 
            +
                    lambda {@message.process}.should raise_error(Socky::SockyError, "unknown command")
         | 
| 71 56 | 
             
                  end
         | 
| 72 57 | 
             
                  it "should raise error if message command is neither :broadcast nor :query" do
         | 
| 73 | 
            -
                    @message.stub!(:params).and_return({:command =>  | 
| 74 | 
            -
                    lambda {@message.process}.should raise_error | 
| 75 | 
            -
                  end
         | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
                context "#broadcast" do
         | 
| 78 | 
            -
                  it "should select target connections basing on params" do
         | 
| 79 | 
            -
                    @message.stub!(:params).and_return({:some => :abstract})
         | 
| 80 | 
            -
                    @message.stub!(:send_message)
         | 
| 81 | 
            -
                    Socky::Connection.should_receive(:find).with({:some => :abstract})
         | 
| 82 | 
            -
                    @message.broadcast
         | 
| 83 | 
            -
                  end
         | 
| 84 | 
            -
                  it "should call #send_message with message body and connection list" do
         | 
| 85 | 
            -
                    @message.stub!(:params).and_return({:body => "some message"})
         | 
| 86 | 
            -
                    Socky::Connection.stub!(:find).and_return(["first","second"])
         | 
| 87 | 
            -
                    @message.should_receive(:send_message).with("some message", ["first", "second"])
         | 
| 88 | 
            -
                    @message.broadcast
         | 
| 89 | 
            -
                  end
         | 
| 90 | 
            -
                end
         | 
| 91 | 
            -
                context "#query" do
         | 
| 92 | 
            -
                  it "should call #query_show_connections if message type is :show_connections" do
         | 
| 93 | 
            -
                    @message.stub!(:params).and_return({:type => :show_connections})
         | 
| 94 | 
            -
                    @message.stub!(:query_show_connections)
         | 
| 95 | 
            -
                    @message.should_receive(:query_show_connections)
         | 
| 96 | 
            -
                    @message.query
         | 
| 58 | 
            +
                    @message.stub!(:params).and_return({:command => :invalid})
         | 
| 59 | 
            +
                    lambda {@message.process}.should raise_error(Socky::SockyError, "unknown command")
         | 
| 97 60 | 
             
                  end
         | 
| 98 | 
            -
                  it "should not distinguish between string and symbol in  | 
| 99 | 
            -
                    @message.stub!(:params).and_return({: | 
| 100 | 
            -
                    @message. | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
                   | 
| 115 | 
            -
             | 
| 116 | 
            -
                     | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
                     | 
| 120 | 
            -
                     | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 123 | 
            -
                     | 
| 124 | 
            -
                     | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 129 | 
            -
             | 
| 130 | 
            -
             | 
| 61 | 
            +
                  it "should not distinguish between string and symbol in command" do
         | 
| 62 | 
            +
                    @message.stub!(:params).and_return({:command => 'broadcast'})
         | 
| 63 | 
            +
                    lambda {@message.process}.should_not raise_error(Socky::SockyError, "unknown command")
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
                  context ":broadcast" do
         | 
| 66 | 
            +
                    it "should select target connections basing on params" do
         | 
| 67 | 
            +
                      @message.stub!(:params).and_return({:command => :broadcast, :some => :abstract})
         | 
| 68 | 
            +
                      Socky::Connection.should_receive(:find).with(:some => :abstract)
         | 
| 69 | 
            +
                      @message.process
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
                    it "should send_message with message body and connection list" do
         | 
| 72 | 
            +
                      @message.stub!(:params).and_return({:command => :broadcast, :body => "some message"})
         | 
| 73 | 
            +
                      Socky::Connection.stub!(:find).and_return(["first","second"])
         | 
| 74 | 
            +
                      @message.should_receive(:send_message).with("some message", ["first", "second"])
         | 
| 75 | 
            +
                      @message.process
         | 
| 76 | 
            +
                    end
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
                  context ":query" do
         | 
| 79 | 
            +
                    it "should raise error if query type is nil" do
         | 
| 80 | 
            +
                      @message.stub!(:params).and_return(:command => :query, :type => nil)
         | 
| 81 | 
            +
                      lambda{ @message.process }.should raise_error(Socky::SockyError, "unknown query type")
         | 
| 82 | 
            +
                    end
         | 
| 83 | 
            +
                    it "should raise error if query type is invalid" do
         | 
| 84 | 
            +
                      @message.stub!(:params).and_return(:command => :query, :type => :invalid)
         | 
| 85 | 
            +
                      lambda{ @message.process }.should raise_error(Socky::SockyError, "unknown query type")
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
                    it "should not distinguish between string and symbol in command" do
         | 
| 88 | 
            +
                      @message.stub!(:params).and_return({:command => :query, :type => "show_connections"})
         | 
| 89 | 
            +
                      lambda {@message.process}.should_not raise_error(Socky::SockyError, "unknown query type")
         | 
| 90 | 
            +
                    end
         | 
| 91 | 
            +
                    context "=> :show_connections" do
         | 
| 92 | 
            +
                      it "should return current connection list to creator" do
         | 
| 93 | 
            +
                        @message.stub!(:params).and_return(:command => :query, :type => :show_connections)
         | 
| 94 | 
            +
                        Socky::Connection.stub!(:find_all).and_return(["find results"])
         | 
| 95 | 
            +
                        @connection.should_receive(:send_message).with(["find results"])
         | 
| 96 | 
            +
                        @message.process
         | 
| 97 | 
            +
                      end
         | 
| 98 | 
            +
                    end
         | 
| 131 99 | 
             
                  end
         | 
| 132 100 | 
             
                end
         | 
| 133 | 
            -
             | 
| 134 101 | 
             
              end
         | 
| 135 102 | 
             
            end
         | 
    
        data/spec/socky/runner_spec.rb
    CHANGED
    
    | @@ -30,9 +30,13 @@ describe Socky::Runner do | |
| 30 30 | 
             
                end
         | 
| 31 31 | 
             
                context "#new" do
         | 
| 32 32 | 
             
                  it "should prepare options from args" do
         | 
| 33 | 
            -
                     | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 33 | 
            +
                    begin
         | 
| 34 | 
            +
                      described_class.new(["-c", File.dirname(__FILE__) + "/../files/default.yml"])
         | 
| 35 | 
            +
                      Socky.options.class.should eql(Hash)
         | 
| 36 | 
            +
                      Socky.options.should_not be_empty
         | 
| 37 | 
            +
                    ensure
         | 
| 38 | 
            +
                      Socky.options = nil
         | 
| 39 | 
            +
                    end
         | 
| 36 40 | 
             
                  end
         | 
| 37 41 | 
             
                end
         | 
| 38 42 | 
             
              end
         | 
| 
            File without changes
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: socky
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 23
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0. | 
| 8 | 
            +
              - 2
         | 
| 9 | 
            +
              - 0
         | 
| 10 | 
            +
              version: 0.2.0
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Bernard Potocki
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2010- | 
| 18 | 
            +
            date: 2010-10-03 00:00:00 +02:00
         | 
| 19 19 | 
             
            default_executable: socky
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -48,6 +48,20 @@ dependencies: | |
| 48 48 | 
             
                    version: "0"
         | 
| 49 49 | 
             
              type: :runtime
         | 
| 50 50 | 
             
              version_requirements: *id002
         | 
| 51 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 52 | 
            +
              name: json
         | 
| 53 | 
            +
              prerelease: false
         | 
| 54 | 
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         | 
| 55 | 
            +
                none: false
         | 
| 56 | 
            +
                requirements: 
         | 
| 57 | 
            +
                - - ">="
         | 
| 58 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 59 | 
            +
                    hash: 3
         | 
| 60 | 
            +
                    segments: 
         | 
| 61 | 
            +
                    - 0
         | 
| 62 | 
            +
                    version: "0"
         | 
| 63 | 
            +
              type: :runtime
         | 
| 64 | 
            +
              version_requirements: *id003
         | 
| 51 65 | 
             
            description: Socky is a WebSocket server and client for Ruby on Rails
         | 
| 52 66 | 
             
            email: b.potocki@imanel.org
         | 
| 53 67 | 
             
            executables: 
         | 
| @@ -89,7 +103,7 @@ files: | |
| 89 103 | 
             
            - spec/socky/runner_spec.rb
         | 
| 90 104 | 
             
            - spec/socky_spec.rb
         | 
| 91 105 | 
             
            - spec/spec_helper.rb
         | 
| 92 | 
            -
            - spec/stallion.rb
         | 
| 106 | 
            +
            - spec/support/stallion.rb
         | 
| 93 107 | 
             
            has_rdoc: true
         | 
| 94 108 | 
             
            homepage: http://github.com/imanel/socky_gem
         | 
| 95 109 | 
             
            licenses: []
         | 
| @@ -138,4 +152,4 @@ test_files: | |
| 138 152 | 
             
            - spec/socky/runner_spec.rb
         | 
| 139 153 | 
             
            - spec/socky_spec.rb
         | 
| 140 154 | 
             
            - spec/spec_helper.rb
         | 
| 141 | 
            -
            - spec/stallion.rb
         | 
| 155 | 
            +
            - spec/support/stallion.rb
         |