spec/papers_spec.rb in papers-1.1.0 vs spec/papers_spec.rb in papers-1.2.0

- old
+ new

@@ -16,25 +16,20 @@ expect(validator.valid?).to be_true end it 'detects mismatched gems' do Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ - 'javascripts' => {}, - 'gems' => { - 'foo-1.2' => { - 'license' => 'MIT', - 'license_url' => nil, - 'project_url' => nil - }, - 'baz-1.3' => { - 'license' => 'BSD', - 'license_url' => nil, - 'project_url' => nil - } - } - }) - Papers::Gem.stub(:introspected).and_return(['bar-1.2', 'baz-1.3']) + 'javascripts' => {}, + 'gems' => { + 'foo-1.2' => { 'license' => 'MIT' }, + 'baz-1.3' => { 'license' => 'BSD' } + } + }) + Bundler.stub_chain(:load, :specs).and_return([ + double(name: 'bar', version: '1.2', licenses: ['MIT']), + double(name: 'baz', version: '1.3', licenses: ['BSD']) + ]) expect(validator.valid?).to be_false expect(validator.errors).to eq([ 'bar-1.2 is included in the application, but not in the manifest', @@ -48,99 +43,115 @@ Papers::Configuration.any_instance.stub(:validate_javascript?).and_return(false) Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ 'javascripts' => {}, 'gems' => { - 'foo-1.2' => { - 'license' => 'MIT', - 'license_url' => nil, - 'project_url' => nil - }, - 'baz-1.3' => { - 'license' => 'BSD', - 'license_url' => nil, - 'project_url' => nil - } + 'foo-1.2' => { 'license' => 'MIT' }, + 'baz-1.3' => { 'license' => 'BSD' } } }) - Papers::Gem.stub(:introspected).and_return(['foo-1.2', 'baz-1.2']) + Bundler.stub_chain(:load, :specs).and_return([ + double(name: 'foo', version: '1.2', licenses: ['MIT']), + double(name: 'baz', version: '1.2', licenses: ['BSD']) + ]) expect(validator.valid?).to be_false expect(validator.errors).to eq([ 'baz-1.2 is included in the application, but not in the manifest', 'baz-1.3 is included in the manifest, but not in the application' ]) validator.valid? end + it 'detects omitted gem versions' do + Papers::Configuration.any_instance.stub(:validate_javascript?).and_return(false) + + Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ + 'javascripts' => {}, + 'gems' => { + 'foo' => { 'license' => 'MIT' }, + 'baz-1.2' => { 'license' => 'BSD' } + } + }) + Bundler.stub_chain(:load, :specs).and_return([ + double(name: 'foo', version: '1.2', licenses: ['MIT']), + double(name: 'baz', version: '1.2', licenses: ['BSD']) + ]) + + expect(validator).not_to be_valid + + expect(validator.errors).to eq([ + 'foo-1.2 is included in the application, but not in the manifest', + 'foo is included in the manifest, but not in the application' + ]) + validator.valid? + end + it 'is OK with matching gem sets' do Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ 'javascripts' => {}, 'gems' => { - 'foo-1.2' => { - 'license' => 'MIT', - 'license_url' => nil, - 'project_url' => nil - }, - 'baz-1.3' => { - 'license' => 'BSD', - 'license_url' => nil, - 'project_url' => nil - } - }, + 'foo-1.2' => { 'license' => 'MIT' }, + 'baz-1.2' => { 'license' => 'BSD' } + } }) - Papers::Gem.stub(:introspected).and_return(['foo-1.2', 'baz-1.3']) + Bundler.stub_chain(:load, :specs).and_return([ + double(name: 'foo', version: '1.2', licenses: ['MIT']), + double(name: 'baz', version: '1.2', licenses: ['BSD']) + ]) expect(validator.valid?).to be_true end + it 'is OK with whitelisting gem versions on a specific license' do + Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ + 'javascripts' => {}, + 'gems' => { + 'foo' => { 'license' => 'MIT' }, + 'baz' => { 'license' => 'BSD' } + } + }) + Bundler.stub_chain(:load, :specs).and_return([ + double(name: 'foo', version: '1.2', licenses: ['MIT']), + double(name: 'baz', version: '1.2', licenses: ['BSD']) + ]) + Papers::Configuration.any_instance.stub(:version_whitelisted_license).and_return('MIT') + + expect(validator).not_to be_valid + expect(validator.errors).to eq([ + 'baz-1.2 is included in the application, but not in the manifest', + 'baz is included in the manifest, but not in the application' + ]) + end + it 'is OK with matching gem sets but complain about a license issue' do Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ 'javascripts' => {}, 'gems' => { - 'foo-1.2' => { - 'license' => 'MIT', - 'license_url' => nil, - 'project_url' => nil - }, - 'baz-1.3' => { - 'license' => 'GPL', - 'license_url' => nil, - 'project_url' => nil - } - }, + 'foo-1.2' => { 'license' => 'MIT' }, + 'baz-1.3' => { 'license' => 'GPL' } + } }) - Papers::Gem.stub(:introspected).and_return(['foo-1.2', 'baz-1.3']) + Bundler.stub_chain(:load, :specs).and_return([ + double(name: 'foo', version: '1.2', licenses: ['MIT']), + double(name: 'baz', version: '1.3', licenses: ['GPL']) + ]) - expect(validator.valid?).to be_false + expect(validator).not_to be_valid expect(validator.errors).to eq([ 'baz-1.3 is licensed under GPL, which is not whitelisted' ]) - - validator.valid? end it 'displays gem licenses in a pretty format without versions' do Papers::LicenseValidator.any_instance.stub(:manifest).and_return({ 'javascripts' => {}, 'gems' => { - 'foo-1.2' => { - 'license' => 'MIT', - 'license_url' => nil, - 'project_url' => nil - }, - 'baz-1.3' => { - 'license' => 'BSD', - 'license_url' => nil, - 'project_url' => nil - }, - 'with-hyphens-1.4' => { - 'license' => 'MIT', - 'license_url' => nil, - 'project_url' => nil - } + 'foo-1.2' => { 'license' => 'MIT' }, + 'baz-1.3' => { 'license' => 'BSD' }, + 'with-hyphens-1.4' => { 'license' => 'MIT' } }, }) expect(validator.pretty_gem_list).to eq([ {