Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
dd385c7c
Commit
dd385c7c
authored
Dec 15, 2016
by
Z.J. van de Weg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve session tests
parent
178638c4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
73 additions
and
3 deletions
+73
-3
lib/mattermost/session.rb
lib/mattermost/session.rb
+5
-3
spec/lib/mattermost/session_spec.rb
spec/lib/mattermost/session_spec.rb
+68
-0
No files found.
lib/mattermost/
mattermost
.rb
→
lib/mattermost/
session
.rb
View file @
dd385c7c
...
@@ -13,7 +13,7 @@ module Mattermost
...
@@ -13,7 +13,7 @@ module Mattermost
# This class however skips the button click, and also the approval phase to
# 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
# speed up the process and keep it without manual action and get a session
# going.
# going.
class
Mattermost
class
Session
include
Doorkeeper
::
Helpers
::
Controller
include
Doorkeeper
::
Helpers
::
Controller
include
HTTParty
include
HTTParty
...
@@ -27,8 +27,10 @@ module Mattermost
...
@@ -27,8 +27,10 @@ module Mattermost
def
with_session
def
with_session
raise
NoSessionError
unless
create
raise
NoSessionError
unless
create
yield
result
=
yield
destroy
destroy
result
end
end
# Next methods are needed for Doorkeeper
# Next methods are needed for Doorkeeper
...
@@ -85,7 +87,7 @@ module Mattermost
...
@@ -85,7 +87,7 @@ module Mattermost
end
end
def
request_token
def
request_token
@request_token
||=
if
@token_uri
@request_token
||=
begin
response
=
get
(
@token_uri
,
follow_redirects:
false
)
response
=
get
(
@token_uri
,
follow_redirects:
false
)
response
.
headers
[
'token'
]
if
200
<=
response
.
code
&&
response
.
code
<
400
response
.
headers
[
'token'
]
if
200
<=
response
.
code
&&
response
.
code
<
400
end
end
...
...
spec/lib/mattermost/
mattermost
_spec.rb
→
spec/lib/mattermost/
session
_spec.rb
View file @
dd385c7c
require
'spec_helper'
require
'spec_helper'
describe
Mattermost
::
Mattermost
do
describe
Mattermost
::
Session
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:user
)
{
create
(
:user
)
}
subject
{
described_class
.
new
(
'http://localhost:8065'
,
user
)
}
subject
{
described_class
.
new
(
'http://localhost:8065'
,
user
)
}
...
@@ -12,29 +12,55 @@ describe Mattermost::Mattermost do
...
@@ -12,29 +12,55 @@ describe Mattermost::Mattermost do
it
{
is_expected
.
to
respond_to
(
:strategy
)
}
it
{
is_expected
.
to
respond_to
(
:strategy
)
}
describe
'#with session'
do
describe
'#with session'
do
let
(
:location
)
{
'http://location.tld'
}
let!
(
:stub
)
do
let!
(
:stub
)
do
WebMock
.
stub_request
(
:get
,
'http://localhost:8065/api/v3/oauth/gitlab/login'
).
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
end
context
'without oauth uri'
do
context
'without oauth uri'
do
it
'makes a request to the oauth uri'
do
it
'makes a request to the oauth uri'
do
expect
{
subject
.
with_session
}.
to
raise_error
(
Mattermost
::
NoSessionError
)
expect
{
subject
.
with_session
}.
to
raise_error
(
Mattermost
::
NoSessionError
)
end
end
end
context
'with oauth_uri'
do
let!
(
:doorkeeper
)
do
Doorkeeper
::
Application
.
create
(
name:
"GitLab Mattermost"
,
redirect_uri:
"http://localhost:8065/signup/gitlab/complete
\n
http://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
context
'with token_uri'
do
let!
(
:doorkeeper
)
do
let
(
:state
)
{
"eyJhY3Rpb24iOiJsb2dpbiIsImhhc2giOiIkMmEkMTAkVC9wYVlEaTdIUS8vcWdKRmdOOUllZUptaUNJWUlvNVNtNEcwU2NBMXFqelNOVmVPZ1cxWUsifQ%3D%3D"
}
Doorkeeper
::
Application
.
create
(
name:
"GitLab Mattermost"
,
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
}
"
}
redirect_uri:
"http://localhost:8065/signup/gitlab/complete
\n
http://localhost:8065/login/gitlab/complete"
,
scopes:
""
)
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
end
context
'without token_uri'
do
it
'returns the value of the block'
do
it
'can not create a session'
do
WebMock
.
stub_request
(
:post
,
"http://localhost:8065/api/v3/users/logout"
).
expect
do
to_return
(
headers:
{
'token'
=>
'thisworksnow'
},
status:
200
)
subject
.
with_session
end
.
to
raise_error
(
Mattermost
::
NoSessionError
)
value
=
subject
.
with_session
{
1
+
1
}
end
expect
(
value
).
to
be
(
2
)
end
end
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