I created a new rails application and followed the installation instructions for rspec-rails here - https://github.com/rspec/rspec-rails I then created (copied from the interwebs) the following module in my app/lib directory.
require 'openssl' require 'base64' module Cipher def self.encrypt(key, data) data += 'A' # Add 'A' suffix to support empty data cipher(:encrypt, key, data) end def self.decrypt(key, text) data = cipher(:decrypt, key, text) data[0...-1] # Remove the 'A' suffix end def self.encrypt_base64(key, data) blowfish_string = self.encrypt(key, data) Base64.encode64(blowfish_string) end def self.decrypt_base64(key, base64_string) blowfish_string = Base64.decode64(base64_string) self.decrypt(key, blowfish_string) end private def self.cipher(mode, key, data) cipher = OpenSSL::Cipher::Cipher.new('bf-cbc').send(mode) cipher.key = Digest::SHA256.digest(key) cipher.update(data) << cipher.final end end
Then I created the following spec file.
require 'rails_helper' Rspec.describe Ciper do describe "cipher encrypts data" do let(:key) { 'secret key' } it "encrypts a string" do original = '' encrypted = Cipher.encrypt(key, original) decrypted = Cipher.decrypt(key, encrypted) expect(decrypted).to equal original end end end
When I try to run the spec I get the following error
/Users/user/RubymineProjects/skeleton/spec/lib/cipher_spec.rb:3:in `<top (required)>': uninitialized constant Rspec (NameError) from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1226:in `load' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1224:in `each' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/configuration.rb:1224:in `load_spec_files' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:97:in `setup' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:85:in `run' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:70:in `run' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/runner.rb:38:in `invoke' from /Users/user/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.2.0/exe/rspec:4:in `<top (required)>' from /Users/user/.rvm/gems/ruby-2.2.0/bin/rspec:23:in `load' from /Users/user/.rvm/gems/ruby-2.2.0/bin/rspec:23:in `<top (required)>' from -e:1:in `load' from -e:1:in `<main>' Process finished with exit code 1 Empty test suite.
I'm not sure what I'm doing wrong here. Can anyone offer some insight on what I can try? Thanks!
From the error:
uninitialized constant Rspec (NameError)
In your Cipher spec, you have misspelled RSpec
as Rspec
. Ruby identifiers are case-sensitive, and you haven't defined Rspec
, hence the error.
I was getting this error because rubymine was trying to run "tests" instead of "rspecs". When I changed the run configuration to run an RSpec instead of a Test everything worked fine.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With