Skip to content

Commit

Permalink
Merge pull request #181 from AtlasOfLivingAustralia/epic/cognito/180-…
Browse files Browse the repository at this point in the history
…admin-reset-of-password-contains-special-characters

#180  fix symbol character set used in temporary password generation
  • Loading branch information
brucehyslop authored Nov 29, 2023
2 parents b4cee1f + f842565 commit 9779529
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ branches:
only:
- dev
- master
- hotfix
- /^hotfix.*$/
- grails3
- experimental_jwt
- /^feature.*$/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright (C) 2022 Atlas of Living Australia
* All Rights Reserved.
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*/

package au.org.ala.userdetails

import au.org.ala.ws.security.JwtProperties
import grails.converters.JSON
import grails.testing.gorm.DataTest
import grails.testing.web.controllers.ControllerUnitTest

class PropertyControllerSpec extends UserDetailsSpec implements ControllerUnitTest<PropertyController>, DataTest{

def profileService = Mock(ProfileService)

static doWithSpring = {
jwtProperties(JwtProperties) {
enabled = true
fallbackToLegacyBehaviour = true
}
authorisedSystemService(UserDetailsSpec.Authorised)
}

private User user

void setupSpec() {
mockDomains(User, Role, UserRole, UserProperty)
}

void setup() {
registerMarshallers()
user = createUser()
controller.profileService = profileService
}

void "Get user property"() {
when:
request.method = 'GET'
params.alaId = Long.toString(user.id)
params.name = "prop1"
controller.getProperty()

then:
1 * profileService.getUserProperty(user, 'prop1') >> { [ new UserProperty(user: user, name: 'prop1', value:
user.userProperties.find {it.name == "prop1"}.value)] }

def deserializedJson = JSON.parse(response.text)
deserializedJson[0].name == 'prop1'
deserializedJson[0].value == user.userProperties.find {it.name == "prop1"}.value
}

void "Save user property"() {
when:
request.method = 'POST'
params.alaId = Long.toString(user.id)
params.name = "city"
params.value = "city"
controller.saveProperty()

then:
1 * profileService.saveUserProperty(user, 'city', 'city') >> { new UserProperty(user: user, name: 'city', value:'city') }

def deserializedJson = JSON.parse(response.text)
deserializedJson.name == 'city'
deserializedJson.value == 'city'
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@

package au.org.ala.userdetails

import au.org.ala.auth.EnglishCustomCharacterData
import au.org.ala.auth.PasswordResetFailedException
import au.org.ala.users.IUser
import au.org.ala.users.UserRecord
import au.org.ala.auth.PasswordPolicy
import au.org.ala.cas.encoding.BcryptPasswordEncoder
import au.org.ala.cas.encoding.LegacyPasswordEncoder
Expand Down Expand Up @@ -244,7 +244,7 @@ class PasswordService {
ruleGroup.rules.add(new CharacterRule(EnglishCharacterData.Digit, policy.charGroupMinDigit))
}
if (policy.charGroupMinSpecial > 0) {
ruleGroup.rules.add(new CharacterRule(EnglishCharacterData.Special, policy.charGroupMinSpecial))
ruleGroup.rules.add(new CharacterRule(EnglishCustomCharacterData.Special, policy.charGroupMinSpecial))
}
}

Expand Down

0 comments on commit 9779529

Please sign in to comment.