require 'spec_helper' describe 'yopass' do it 'expect give the website' do get '/' expect(last_response.body).to match(/Share Secrets Securely/) end it 'expect complain about invalid lifetime' do post '/', 'lifetime' => 'foo' expect(last_response.body).to match(/Invalid lifetime/) end it 'expect complain about missing secret' do post '/', 'lifetime' => '1h', 'secret' => '' expect(last_response.body).to match(/No secret submitted/) end it 'expect complain about secret being to long' do post '/', 'lifetime' => '1h', 'secret' => '0' * 1000000 expect(last_response.body).to match(/This site is meant to store secrets not novels/) end it 'expect complain about not being able to connect to memcached' do allow_any_instance_of(Memcached).to receive(:set).and_raise(Memcached::ServerIsMarkedDead) post '/', 'lifetime' => '1h', 'secret' => '0' * 100 expect(last_response.body).to match(/Unable to contact memcached/) end it 'expect store secret' do allow_any_instance_of(Memcached).to receive(:set).and_return true post '/', 'lifetime' => '1h', 'secret' => '0' * 100 expect(last_response.body).to match(/http:\/\/127.0.0.1:4567/) end it 'expect receive secret' do allow_any_instance_of(Memcached).to receive(:get).and_return("\xD5\x9E\xF7\xB1\xA0\xEC\xD6\xBD\xCA\x00nW\xAD\xB3\xF4\xDA") allow_any_instance_of(Memcached).to receive(:delete).and_return true get '/8937c6de9fb7b0ba9b7652b769743b4e/3af71378a' expect(last_response.body).to match(/hello world/) end it 'expect raise Memcached::NotFound' do allow_any_instance_of(Memcached).to receive(:get).and_raise(Memcached::NotFound) get '/mykey/123' expect(last_response.body).to match(/Secret does not exist/) end end