404 in non-active users

stable
Juanfran 2015-06-16 09:04:14 +02:00
parent f2cfbdf627
commit 0da0886a20
3 changed files with 51 additions and 15 deletions

View File

@ -15,11 +15,16 @@ class ProfileController
@userService
.getUserByUserName(@routeParams.slug)
.then (user) =>
@.user = user
@.isCurrentUser = false
@._setMeta(@.user)
if !user.get('is_active')
@xhrError.notFound()
else
@.user = user
@.isCurrentUser = false
@._setMeta(@.user)
return user
.catch (xhr) =>
@xhrError.response(xhr)
return @xhrError.response(xhr)
else
@.user = @currentUserService.getUser()

View File

@ -43,7 +43,8 @@ describe "ProfileController", ->
_mockXhrErrorService = () ->
mocks.xhrErrorService = {
response: sinon.spy()
response: sinon.spy(),
notFound: sinon.spy()
}
provide.value "tgXhrErrorService", mocks.xhrErrorService
@ -76,9 +77,10 @@ describe "ProfileController", ->
mocks.routeParams.slug = "user-slug"
user = Immutable.fromJS({
username: "username"
full_name_display: "full-name-display"
bio: "bio"
username: "username",
full_name_display: "full-name-display",
bio: "bio",
is_active: true
})
mocks.translate
@ -121,9 +123,10 @@ describe "ProfileController", ->
$scope = $rootScope.$new()
user = Immutable.fromJS({
username: "username"
full_name_display: "full-name-display"
bio: "bio"
username: "username",
full_name_display: "full-name-display",
bio: "bio",
is_active: true
})
mocks.translate
@ -143,3 +146,24 @@ describe "ProfileController", ->
expect(mocks.appMetaService.setAll.withArgs("user-profile-page-title", "bio")).to.be.calledOnce
done()
)
it "non-active user", (done) ->
$scope = $rootScope.$new()
mocks.routeParams.slug = "user-slug"
user = Immutable.fromJS({
username: "username",
full_name_display: "full-name-display",
bio: "bio",
is_active: false
})
mocks.userService.getUserByUserName.withArgs(mocks.routeParams.slug).promise().resolve(user)
ctrl = $controller("Profile")
setTimeout ( ->
expect(mocks.xhrErrorService.notFound).to.be.calledOnce
done()
)

View File

@ -7,14 +7,21 @@ class xhrError extends taiga.Service
constructor: (@q, @location, @navUrls) ->
notFound: () ->
@location.path(@navUrls.resolve("not-found"))
@location.replace()
permissionDenied: () ->
@location.path(@navUrls.resolve("permission-denied"))
@location.replace()
response: (xhr) ->
if xhr
if xhr.status == 404
@location.path(@navUrls.resolve("not-found"))
@location.replace()
@.notFound()
else if xhr.status == 403
@location.path(@navUrls.resolve("permission-denied"))
@location.replace()
@.permissionDenied()
return @q.reject(xhr)