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 @userService
.getUserByUserName(@routeParams.slug) .getUserByUserName(@routeParams.slug)
.then (user) => .then (user) =>
@.user = user if !user.get('is_active')
@.isCurrentUser = false @xhrError.notFound()
@._setMeta(@.user) else
@.user = user
@.isCurrentUser = false
@._setMeta(@.user)
return user
.catch (xhr) => .catch (xhr) =>
@xhrError.response(xhr) return @xhrError.response(xhr)
else else
@.user = @currentUserService.getUser() @.user = @currentUserService.getUser()

View File

@ -43,7 +43,8 @@ describe "ProfileController", ->
_mockXhrErrorService = () -> _mockXhrErrorService = () ->
mocks.xhrErrorService = { mocks.xhrErrorService = {
response: sinon.spy() response: sinon.spy(),
notFound: sinon.spy()
} }
provide.value "tgXhrErrorService", mocks.xhrErrorService provide.value "tgXhrErrorService", mocks.xhrErrorService
@ -76,9 +77,10 @@ describe "ProfileController", ->
mocks.routeParams.slug = "user-slug" mocks.routeParams.slug = "user-slug"
user = Immutable.fromJS({ user = Immutable.fromJS({
username: "username" username: "username",
full_name_display: "full-name-display" full_name_display: "full-name-display",
bio: "bio" bio: "bio",
is_active: true
}) })
mocks.translate mocks.translate
@ -121,9 +123,10 @@ describe "ProfileController", ->
$scope = $rootScope.$new() $scope = $rootScope.$new()
user = Immutable.fromJS({ user = Immutable.fromJS({
username: "username" username: "username",
full_name_display: "full-name-display" full_name_display: "full-name-display",
bio: "bio" bio: "bio",
is_active: true
}) })
mocks.translate mocks.translate
@ -143,3 +146,24 @@ describe "ProfileController", ->
expect(mocks.appMetaService.setAll.withArgs("user-profile-page-title", "bio")).to.be.calledOnce expect(mocks.appMetaService.setAll.withArgs("user-profile-page-title", "bio")).to.be.calledOnce
done() 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) -> constructor: (@q, @location, @navUrls) ->
notFound: () ->
@location.path(@navUrls.resolve("not-found"))
@location.replace()
permissionDenied: () ->
@location.path(@navUrls.resolve("permission-denied"))
@location.replace()
response: (xhr) -> response: (xhr) ->
if xhr if xhr
if xhr.status == 404 if xhr.status == 404
@location.path(@navUrls.resolve("not-found")) @.notFound()
@location.replace()
else if xhr.status == 403 else if xhr.status == 403
@location.path(@navUrls.resolve("permission-denied")) @.permissionDenied()
@location.replace()
return @q.reject(xhr) return @q.reject(xhr)