Skip to content
Snippets Groups Projects
Commit d960c63f authored by Z.J. van de Weg's avatar Z.J. van de Weg
Browse files

Improve session tests

parent 429c9220
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -13,7 +13,7 @@ module Mattermost
# This class however skips the button click, and also the approval phase to
# speed up the process and keep it without manual action and get a session
# going.
class Mattermost
class Session
include Doorkeeper::Helpers::Controller
include HTTParty
 
Loading
Loading
@@ -27,8 +27,10 @@ module Mattermost
 
def with_session
raise NoSessionError unless create
yield
result = yield
destroy
result
end
 
# Next methods are needed for Doorkeeper
Loading
Loading
@@ -85,7 +87,7 @@ module Mattermost
end
 
def request_token
@request_token ||= if @token_uri
@request_token ||= begin
response = get(@token_uri, follow_redirects: false)
response.headers['token'] if 200 <= response.code && response.code < 400
end
Loading
Loading
require 'spec_helper'
 
describe Mattermost::Mattermost do
describe Mattermost::Session do
let(:user) { create(:user) }
 
subject { described_class.new('http://localhost:8065', user) }
Loading
Loading
@@ -12,29 +12,55 @@ describe Mattermost::Mattermost do
it { is_expected.to respond_to(:strategy) }
 
describe '#with session' do
let(:location) { 'http://location.tld' }
let!(:stub) do
WebMock.stub_request(:get, 'http://localhost:8065/api/v3/oauth/gitlab/login').
to_return(headers: { 'location' => 'http://mylocation.com' }, status: 307)
to_return(headers: { 'location' => location }, status: 307)
end
 
context 'without oauth uri' do
it 'makes a request to the oauth uri' do
expect { subject.with_session }.to raise_error(Mattermost::NoSessionError)
end
end
context 'with oauth_uri' do
let!(:doorkeeper) do
Doorkeeper::Application.create(name: "GitLab Mattermost",
redirect_uri: "http://localhost:8065/signup/gitlab/complete\nhttp://localhost:8065/login/gitlab/complete",
scopes: "")
end
context 'without token_uri' do
it 'can not create a session' do
expect do
subject.with_session
end.to raise_error(Mattermost::NoSessionError)
end
end
 
context 'with oauth_uri' do
let!(:doorkeeper) do
Doorkeeper::Application.create(name: "GitLab Mattermost",
redirect_uri: "http://localhost:8065/signup/gitlab/complete\nhttp://localhost:8065/login/gitlab/complete",
scopes: "")
context 'with token_uri' do
let(:state) { "eyJhY3Rpb24iOiJsb2dpbiIsImhhc2giOiIkMmEkMTAkVC9wYVlEaTdIUS8vcWdKRmdOOUllZUptaUNJWUlvNVNtNEcwU2NBMXFqelNOVmVPZ1cxWUsifQ%3D%3D" }
let(:location) { "http://locahost:8065/oauth/authorize?response_type=code&client_id=#{doorkeeper.uid}&redirect_uri=http%3A%2F%2Flocalhost:8065%2Fsignup%2Fgitlab%2Fcomplete&state=#{state}" }
before do
WebMock.stub_request(:get, /http:\/\/localhost:8065\/signup\/gitlab\/complete*/).
to_return(headers: { 'token' => 'thisworksnow' }, status: 202)
end
it 'can setup a session' do
expect(subject).to receive(:destroy)
subject.with_session { 1 + 1 }
end
 
context 'without token_uri' do
it 'can not create a session' do
expect do
subject.with_session
end.to raise_error(Mattermost::NoSessionError)
end
it 'returns the value of the block' do
WebMock.stub_request(:post, "http://localhost:8065/api/v3/users/logout").
to_return(headers: { 'token' => 'thisworksnow' }, status: 200)
value = subject.with_session { 1 + 1 }
expect(value).to be(2)
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment