Skip to content

Commit fa2b96c

Browse files
Rename DiscoverProviderRequest to SelectProviderRequest
1 parent 4bbf131 commit fa2b96c

File tree

10 files changed

+61
-58
lines changed

10 files changed

+61
-58
lines changed

.gitignore

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ node_modules/
33
*.swp
44
.tern-port
55
npm-debug.log
6-
config/account-template
7-
config/email-templates
8-
accounts
9-
profile
10-
inbox
11-
.acl
12-
config.json
13-
config/templates
14-
config/views
15-
settings
16-
.db/
6+
/config/account-template
7+
/config/email-templates
8+
/accounts
9+
/profile
10+
/inbox
11+
/.acl
12+
/config.json
13+
/config/templates
14+
/config/views
15+
/settings
16+
/.db
1717
.nyc_output
1818
coverage

default-views/auth/consent.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1">
66
<title>{{title}}</title>
77
<!-- Bootstrap CSS and Theme for demo purposes -->
8-
<link rel="stylesheet" href="/css/bootstrap-3.3.6.min.css">
8+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
99
<style>
1010
.title { margin-top: 2em; margin-bottom: 2em; }
1111
#authorize { margin-right: 2em; }

default-views/auth/select-provider.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</div>
1414
</div>
1515
<div class="container">
16-
<form method="post" action="/api/auth/discover">
16+
<form method="post" action="/api/auth/select-provider">
1717
<div class="form-group">
1818
<label for="webid">WebID or server URL:</label>
1919
<input type="text" class="form-control" name="webid" id="webid" placeholder="databox.me" />

lib/api/authn/webid-oidc.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const util = require('../../utils')
99
const error = require('../../http-error')
1010
const bodyParser = require('body-parser').urlencoded({ extended: false })
1111

12-
const DiscoverProviderRequest = require('../../requests/discover-provider-request')
12+
const SelectProviderRequest = require('../../requests/select-provider-request')
1313

1414
const { LoginByPasswordRequest } = require('../../requests/login-request')
1515

@@ -35,10 +35,10 @@ function middleware (oidc) {
3535
const router = express.Router('/')
3636

3737
// User-facing Authentication API
38-
router.get('/api/auth/discover', (req, res) => {
39-
res.render('auth/select-provider')
38+
router.get('/api/auth/select-provider', (req, res) => {
39+
res.render('auth/select-provider', {})
4040
})
41-
router.post('/api/auth/discover', bodyParser, discoverProvider)
41+
router.post('/api/auth/select-provider', bodyParser, selectProvider)
4242

4343
router.post(['/login', '/signin'], bodyParser, login)
4444

@@ -70,8 +70,8 @@ function middleware (oidc) {
7070
return router
7171
}
7272

73-
function discoverProvider (req, res, next) {
74-
return DiscoverProviderRequest.handle(req, res)
73+
function selectProvider (req, res, next) {
74+
return SelectProviderRequest.handle(req, res)
7575
.catch(error => {
7676
error.status = error.status || 400
7777
next(error)
@@ -151,7 +151,7 @@ function resumeUserFlow (req, res) {
151151

152152
module.exports = {
153153
middleware,
154-
discoverProvider,
154+
selectProvider,
155155
login,
156156
extractWebId,
157157
authCodeFlowCallback,

lib/create-app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ function initAuthentication (argv, app) {
210210
app.use('/', express.static(path.join(__dirname, '../static/oidc')))
211211

212212
// Initialize the WebId-OIDC authentication routes/api, including:
213-
// user-facing Solid endpoints (/login, /logout, /api/auth/discover)
213+
// user-facing Solid endpoints (/login, /logout, /api/auth/select-provider)
214214
// and OIDC-specific ones
215215
app.use('/', API.oidc.middleware(oidc))
216216

lib/handlers/error-pages.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ function redirectToLogin (req, res) {
6666
var currentUrl = util.fullUrlForReq(req)
6767
req.session.returnToUrl = currentUrl
6868
let locals = req.app.locals
69-
let loginUrl = locals.host.serverUri + '/api/auth/discover?returnToUrl=' +
69+
let loginUrl = locals.host.serverUri + '/api/auth/select-provider?returnToUrl=' +
7070
currentUrl
7171
debug('Redirecting to login: ' + loginUrl)
7272

lib/models/oidc-manager.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function fromServerConfig (argv) {
3232
let postLogoutUri = url.resolve(providerUri, '/goodbye')
3333

3434
let options = {
35+
debug,
3536
providerUri,
3637
dbPath: argv.dbPath || './db/oidc',
3738
authCallbackUri,
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const validUrl = require('valid-url')
44
const fetch = require('node-fetch')
55
const li = require('li')
66

7-
class DiscoverProviderRequest {
7+
class SelectProviderRequest {
88
/**
99
* @constructor
1010
*
@@ -47,19 +47,19 @@ class DiscoverProviderRequest {
4747

4848
/**
4949
* Factory method, creates and returns an initialized and validated instance
50-
* of DiscoverProviderRequest from a submitted POST form.
50+
* of SelectProviderRequest from a submitted POST form.
5151
*
5252
* @param [req] {HttpRequest}
5353
* @param [req.body.webid] {string}
5454
* @param [res] {HttpResponse}
5555
*
5656
* @throws {TypeError} HTTP 400 if required parameters are missing
5757
*
58-
* @return {DiscoverProviderRequest}
58+
* @return {SelectProviderRequest}
5959
*/
6060
static fromParams (req = {}, res = {}) {
6161
let body = req.body || {}
62-
let webId = DiscoverProviderRequest.normalizeUri(body.webid)
62+
let webId = SelectProviderRequest.normalizeUri(body.webid)
6363

6464
let oidcManager
6565
if (req.app && req.app.locals) {
@@ -68,7 +68,7 @@ class DiscoverProviderRequest {
6868

6969
let options = { webId, oidcManager, response: res, session: req.session }
7070

71-
let request = new DiscoverProviderRequest(options)
71+
let request = new SelectProviderRequest(options)
7272
request.validate()
7373

7474
return request
@@ -95,11 +95,11 @@ class DiscoverProviderRequest {
9595
}
9696

9797
/**
98-
* Handles the Discover Provider request. Usage:
98+
* Handles the Select Provider request. Usage:
9999
*
100100
* ```
101-
* app.post('/api/auth/discover', bodyParser, (req, res, next) => {
102-
* return DiscoverProviderRequest.handle(req, res)
101+
* app.post('/api/auth/select-provider', bodyParser, (req, res, next) => {
102+
* return SelectProviderRequest.handle(req, res)
103103
* .catch(next)
104104
* })
105105
* ```
@@ -113,12 +113,12 @@ class DiscoverProviderRequest {
113113
let request
114114

115115
try {
116-
request = DiscoverProviderRequest.fromParams(req, res)
116+
request = SelectProviderRequest.fromParams(req, res)
117117
} catch (error) {
118118
return Promise.reject(error)
119119
}
120120

121-
return request.discoverProvider()
121+
return request.selectProvider()
122122
}
123123

124124
/**
@@ -130,7 +130,7 @@ class DiscoverProviderRequest {
130130
*
131131
* @return {Promise}
132132
*/
133-
discoverProvider () {
133+
selectProvider () {
134134
return this.fetchProviderUri()
135135
.then(this.authUrlFor.bind(this))
136136
.then(authUrl => {
@@ -227,4 +227,4 @@ class DiscoverProviderRequest {
227227
}
228228
}
229229

230-
module.exports = DiscoverProviderRequest
230+
module.exports = SelectProviderRequest

test/integration/authentication-oidc.js

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@ describe('Authentication API (OIDC)', () => {
1515

1616
let aliceServerUri = 'https://localhost:7000'
1717
let aliceWebId = 'https://localhost:7000/profile/card#me'
18-
let aliceDbPath = path.join(__dirname, '../resources/db/alice')
18+
let configPath = path.join(__dirname, '../../config')
19+
let aliceDbPath = path.join(__dirname,
20+
'../resources/accounts-scenario/alice/db/oidc')
1921
let userStorePath = path.join(aliceDbPath, 'users')
2022
let aliceUserStore = UserStore.from({ path: userStorePath, saltRounds: 1 })
2123
aliceUserStore.initCollections()
2224

2325
let bobServerUri = 'https://localhost:7001'
24-
let bobDbPath = path.join(__dirname, '../resources/db/bob')
26+
let bobDbPath = path.join(__dirname,
27+
'../resources/accounts-scenario/bob/db/oidc')
2528

2629
const serverConfig = {
2730
sslKey: path.join(__dirname, '../keys/key.pem'),
@@ -30,7 +33,8 @@ describe('Authentication API (OIDC)', () => {
3033
dataBrowser: false,
3134
fileBrowser: false,
3235
webid: true,
33-
idp: false
36+
idp: false,
37+
configPath
3438
}
3539

3640
const alicePod = Solid.createServer(
@@ -67,25 +71,23 @@ describe('Authentication API (OIDC)', () => {
6771
after(() => {
6872
if (aliceServer) aliceServer.close()
6973
if (bobServer) bobServer.close()
70-
// fs.removeSync(aliceDbPath)
71-
// fs.removeSync(bobDbPath)
7274
})
7375

74-
describe('Provider Discovery (POST /api/auth/discover)', () => {
76+
describe('Provider Discovery (POST /api/auth/select-provider)', () => {
7577
it('form should load on a get', done => {
76-
alice.get('/api/auth/discover')
78+
alice.get('/api/auth/select-provider')
7779
.expect(200)
7880
.expect((res) => { res.text.match(/Provider Discovery/) })
7981
.end(done)
8082
})
8183

8284
it('should complain if WebID URI is missing', (done) => {
83-
alice.post('/api/auth/discover')
85+
alice.post('/api/auth/select-provider')
8486
.expect(400, done)
8587
})
8688

8789
it('should prepend https:// to webid, if necessary', (done) => {
88-
alice.post('/api/auth/discover')
90+
alice.post('/api/auth/select-provider')
8991
.type('form')
9092
.send({ webid: 'localhost:7000' })
9193
.expect(302, done)
@@ -95,14 +97,14 @@ describe('Authentication API (OIDC)', () => {
9597
// Fake provider, replies with 200 and no Link headers
9698
nock('https://amazingwebsite.tld').intercept('/', 'OPTIONS').reply(204)
9799

98-
alice.post('/api/auth/discover')
100+
alice.post('/api/auth/select-provider')
99101
.send('webid=https://amazingwebsite.tld/')
100102
.expect(400)
101103
.end(done)
102104
})
103105

104106
it('should redirect user to discovered provider if valid uri', (done) => {
105-
bob.post('/api/auth/discover')
107+
bob.post('/api/auth/select-provider')
106108
.send('webid=' + aliceServerUri)
107109
.expect(302)
108110
.end((err, res) => {
@@ -126,7 +128,7 @@ describe('Authentication API (OIDC)', () => {
126128
})
127129

128130
afterEach(() => {
129-
fs.removeSync(aliceDbPath)
131+
fs.removeSync(path.join(aliceDbPath, 'users/*'))
130132
})
131133

132134
it('should login and be redirected to /authorize', (done) => {
@@ -175,15 +177,15 @@ describe('Authentication API (OIDC)', () => {
175177
.end((err, res) => {
176178
if (err) return done(err)
177179
let redirectString = 'http-equiv="refresh" ' +
178-
`content="0; url=${bobServerUri}/api/auth/discover`
180+
`content="0; url=${bobServerUri}/api/auth/select-provider`
179181
expect(res.text).to.match(new RegExp(redirectString))
180182
done()
181183
})
182184
})
183185

184186
// Step 2: Alice enters her WebID URI to the Provider Discovery endpoint
185187
it('Enter webId -> redirect to provider login', (done) => {
186-
bob.post('/api/auth/discover')
188+
bob.post('/api/auth/select-provider')
187189
.send('webid=' + aliceServerUri)
188190
.expect(302)
189191
.end((err, res) => {
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,30 @@ const chai = require('chai')
44
const expect = chai.expect
55
const HttpMocks = require('node-mocks-http')
66

7-
const DiscoverProviderRequest = require('../../lib/requests/discover-provider-request')
7+
const SelectProviderRequest = require('../../lib/requests/select-provider-request')
88

9-
describe('DiscoverProviderRequest', () => {
9+
describe('SelectProviderRequest', () => {
1010
describe('normalizeWebId()', () => {
1111
it('should prepend https:// if one is missing', () => {
12-
let result = DiscoverProviderRequest.normalizeUri('localhost:8443')
12+
let result = SelectProviderRequest.normalizeUri('localhost:8443')
1313
expect(result).to.equal('https://localhost:8443')
1414
})
1515

1616
it('should return null if given a null uri', () => {
17-
let result = DiscoverProviderRequest.normalizeUri(null)
17+
let result = SelectProviderRequest.normalizeUri(null)
1818
expect(result).to.be.null
1919
})
2020

2121
it('should return a valid uri unchanged', () => {
22-
let result = DiscoverProviderRequest.normalizeUri('https://alice.example.com')
22+
let result = SelectProviderRequest.normalizeUri('https://alice.example.com')
2323
expect(result).to.equal('https://alice.example.com')
2424
})
2525
})
2626

2727
describe('fromParams()', () => {
2828
let res = HttpMocks.createResponse()
2929

30-
it('should initialize a DiscoverProviderRequest instance', () => {
30+
it('should initialize a SelectProviderRequest instance', () => {
3131
let aliceWebId = 'https://alice.example.com'
3232
let oidcManager = {}
3333
let session = {}
@@ -37,7 +37,7 @@ describe('DiscoverProviderRequest', () => {
3737
app: { locals: { oidc: oidcManager } }
3838
}
3939

40-
let request = DiscoverProviderRequest.fromParams(req, res)
40+
let request = SelectProviderRequest.fromParams(req, res)
4141
expect(request.webId).to.equal(aliceWebId)
4242
expect(request.response).to.equal(res)
4343
expect(request.oidcManager).to.equal(oidcManager)
@@ -52,7 +52,7 @@ describe('DiscoverProviderRequest', () => {
5252
}
5353

5454
try {
55-
DiscoverProviderRequest.fromParams(req, res)
55+
SelectProviderRequest.fromParams(req, res)
5656
} catch (error) {
5757
expect(error.statusCode).to.equal(500)
5858
done()
@@ -63,7 +63,7 @@ describe('DiscoverProviderRequest', () => {
6363
let req = {}
6464

6565
try {
66-
DiscoverProviderRequest.fromParams(req, res)
66+
SelectProviderRequest.fromParams(req, res)
6767
} catch (error) {
6868
expect(error.statusCode).to.equal(400)
6969
done()
@@ -79,7 +79,7 @@ describe('DiscoverProviderRequest', () => {
7979
app: { locals: { oidc: oidcManager } }
8080
}
8181

82-
let request = DiscoverProviderRequest.fromParams(req, res)
82+
let request = SelectProviderRequest.fromParams(req, res)
8383
expect(request.webId).to.equal('https://alice.example.com')
8484
})
8585
})

0 commit comments

Comments
 (0)