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([
{