BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
4b23764d
Commit
4b23764d
authored
Dec 15, 2016
by
Z.J. van de Weg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve session tests
parent
429c9220
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
6 deletions
+35
-6
session.rb
lib/mattermost/session.rb
+6
-3
session_spec.rb
spec/lib/mattermost/session_spec.rb
+29
-3
No files found.
lib/mattermost/
mattermost
.rb
→
lib/mattermost/
session
.rb
View file @
4b23764d
...
...
@@ -13,13 +13,14 @@ 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
attr_accessor
:current_resource_owner
def
initialize
(
uri
,
current_user
)
# Sets the base uri for HTTParty, so we can use paths
self
.
class
.
base_uri
(
uri
)
@current_resource_owner
=
current_user
...
...
@@ -27,8 +28,10 @@ module Mattermost
def
with_session
raise
NoSessionError
unless
create
yield
result
=
yield
destroy
result
end
# Next methods are needed for Doorkeeper
...
...
@@ -85,7 +88,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
...
...
spec/lib/mattermost/
mattermost
_spec.rb
→
spec/lib/mattermost/
session
_spec.rb
View file @
4b23764d
require
'spec_helper'
describe
Mattermost
::
Mattermost
do
describe
Mattermost
::
Session
do
let
(
:user
)
{
create
(
:user
)
}
subject
{
described_class
.
new
(
'http://localhost:8065'
,
user
)
}
# Needed for door
man
to function
# Needed for door
keeper
to function
it
{
is_expected
.
to
respond_to
(
:current_resource_owner
)
}
it
{
is_expected
.
to
respond_to
(
:request
)
}
it
{
is_expected
.
to
respond_to
(
:authorization
)
}
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
...
...
@@ -36,6 +38,30 @@ describe Mattermost::Mattermost do
end
.
to
raise_error
(
Mattermost
::
NoSessionError
)
end
end
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
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
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment