access_spec.rb revision 745541d1ed9a97715ee21919e3dc495a1add55c0
e59faf65ce864fe95dc00f5d52b8323cdbd0608aTimo Sirainenrequire 'spec_helper'
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainendescribe 'Repository Access' do
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen context 'fetching repositories' do
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen let(:user) { create :user }
dd3ccdbb29dad006f7781ea138a5ba39727963c4Timo Sirainen let!(:repository_pub_r) { create :repository, user: user,
a338794c56fc9674121e262fcb67c3dc1da31436Timo Sirainen access: 'public_r' }
419be6cd72f6e11705576bbba683b29c32eaa762Timo Sirainen let!(:repository_pub_rw) { create :repository, user: user,
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen access: 'public_rw' }
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen let!(:repository_priv_r) { create :repository, user: user,
dd3ccdbb29dad006f7781ea138a5ba39727963c4Timo Sirainen access: 'private_r' }
c4390dad33b03dd51ba2a475f550347c86ebdb9aTimo Sirainen let!(:repository_priv_rw) { create :repository, user: user,
dd3ccdbb29dad006f7781ea138a5ba39727963c4Timo Sirainen access: 'private_rw' }
c2ebc8f28b5504f280cd5d4adfe57ed70f9a7d83Timo Sirainen
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen %w(_r _rw).each do |access_modifier|
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen it "should fetch the public#{access_modifier} repository" do
c2ebc8f28b5504f280cd5d4adfe57ed70f9a7d83Timo Sirainen expect(Repository.pub.map(&:access).
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen include?("public#{access_modifier}")).to be_truthy
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen end
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen
458acd7b39c84bae0d18c36ff9ddff9a49b4ae4aTimo Sirainen it "should not fetch the private#{access_modifier} repository" do
78a5b3e697af5db96fe0dffed600b0d6370bb8e5Timo Sirainen expect(Repository.pub.map(&:access).
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen include?("private#{access_modifier}")).to be_falsy
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen end
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen end
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen end
c2ebc8f28b5504f280cd5d4adfe57ed70f9a7d83Timo Sirainen
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen context 'private repository' do
c2ebc8f28b5504f280cd5d4adfe57ed70f9a7d83Timo Sirainen let(:ontology_version) { create :ontology_version }
c2ebc8f28b5504f280cd5d4adfe57ed70f9a7d83Timo Sirainen let(:repository) { ontology_version.repository }
c2ebc8f28b5504f280cd5d4adfe57ed70f9a7d83Timo Sirainen before do
3b22894b8805b186c73d8b754001e8d7e944be85Timo Sirainen repository.access = 'private_rw'
3b22894b8805b186c73d8b754001e8d7e944be85Timo Sirainen repository.save
3b22894b8805b186c73d8b754001e8d7e944be85Timo Sirainen end
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen
eed0a07ecb946ec9d021f5b413fb33eb36e135fdTimo Sirainen context 'without access token' do
eed0a07ecb946ec9d021f5b413fb33eb36e135fdTimo Sirainen it 'should not have a token yet' do
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen expect(repository.access_tokens).to be_empty
315ce5be539bfe8bc7777ab0654499c49583cea2Timo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen context 'after generate_access_token' do
89502bb187e8285b2a155559894ca80374ac3ae7Timo Sirainen let!(:access_token) { ontology_version.generate_access_token }
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen it 'should generate a token' do
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen expect(repository.access_tokens).not_to be_empty
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen it 'should associate with the generated token' do
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen expect(repository.access_tokens.first).to eq(access_token)
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen it 'should save the token' do
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen expect(repository.access_tokens.first.persisted?).to be_truthy
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen end
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainenend
eed03830015b7138b9d4522e72bef650aa24b45fTimo Sirainen