@@ -72,14 +72,54 @@ public void propertySourceOrder() {
7272 }
7373
7474 @ Test
75- public void activeProfiles () {
75+ public void activeProfilesIsEmptyByDefault () {
7676 assertThat (environment .getActiveProfiles ().length , is (0 ));
77+ }
78+
79+ @ Test
80+ public void defaultProfilesContainsDefaultProfileByDefault () {
81+ assertThat (environment .getDefaultProfiles ().length , is (1 ));
82+ assertThat (environment .getDefaultProfiles ()[0 ], equalTo ("default" ));
83+ }
84+
85+ @ Test
86+ public void setActiveProfiles () {
7787 environment .setActiveProfiles ("local" , "embedded" );
7888 String [] activeProfiles = environment .getActiveProfiles ();
7989 assertThat (Arrays .asList (activeProfiles ), hasItems ("local" , "embedded" ));
8090 assertThat (activeProfiles .length , is (2 ));
8191 }
8292
93+ @ Test (expected =IllegalArgumentException .class )
94+ public void setActiveProfiles_withNullProfileArray () {
95+ environment .setActiveProfiles ((String [])null );
96+ }
97+
98+ @ Test (expected =IllegalArgumentException .class )
99+ public void setActiveProfiles_withNullProfile () {
100+ environment .setActiveProfiles ((String )null );
101+ }
102+
103+ @ Test (expected =IllegalArgumentException .class )
104+ public void setActiveProfiles_withEmptyProfile () {
105+ environment .setActiveProfiles ("" );
106+ }
107+
108+ @ Test (expected =IllegalArgumentException .class )
109+ public void setDefaultProfiles_withNullProfileArray () {
110+ environment .setDefaultProfiles ((String [])null );
111+ }
112+
113+ @ Test (expected =IllegalArgumentException .class )
114+ public void setDefaultProfiles_withNullProfile () {
115+ environment .setDefaultProfiles ((String )null );
116+ }
117+
118+ @ Test (expected =IllegalArgumentException .class )
119+ public void setDefaultProfiles_withEmptyProfile () {
120+ environment .setDefaultProfiles ("" );
121+ }
122+
83123 @ Test
84124 public void reservedDefaultProfile () {
85125 assertThat (environment .getDefaultProfiles (), equalTo (new String []{RESERVED_DEFAULT_PROFILE_NAME }));
@@ -100,23 +140,20 @@ public void getActiveProfiles_systemPropertiesEmpty() {
100140
101141 @ Test
102142 public void getActiveProfiles_fromSystemProperties () {
103- assertThat (environment .getActiveProfiles ().length , is (0 ));
104143 System .setProperty (ACTIVE_PROFILES_PROPERTY_NAME , "foo" );
105144 assertThat (Arrays .asList (environment .getActiveProfiles ()), hasItem ("foo" ));
106145 System .getProperties ().remove (ACTIVE_PROFILES_PROPERTY_NAME );
107146 }
108147
109148 @ Test
110149 public void getActiveProfiles_fromSystemProperties_withMultipleProfiles () {
111- assertThat (environment .getActiveProfiles ().length , is (0 ));
112150 System .setProperty (ACTIVE_PROFILES_PROPERTY_NAME , "foo,bar" );
113151 assertThat (Arrays .asList (environment .getActiveProfiles ()), hasItems ("foo" , "bar" ));
114152 System .getProperties ().remove (ACTIVE_PROFILES_PROPERTY_NAME );
115153 }
116154
117155 @ Test
118156 public void getActiveProfiles_fromSystemProperties_withMulitpleProfiles_withWhitespace () {
119- assertThat (environment .getActiveProfiles ().length , is (0 ));
120157 System .setProperty (ACTIVE_PROFILES_PROPERTY_NAME , " bar , baz " ); // notice whitespace
121158 assertThat (Arrays .asList (environment .getActiveProfiles ()), hasItems ("bar" , "baz" ));
122159 System .getProperties ().remove (ACTIVE_PROFILES_PROPERTY_NAME );
@@ -142,10 +179,26 @@ public void setDefaultProfiles() {
142179 }
143180
144181 @ Test (expected =IllegalArgumentException .class )
145- public void acceptsProfiles_mustSpecifyAtLeastOne () {
182+ public void acceptsProfiles_withEmptyArgumentList () {
146183 environment .acceptsProfiles ();
147184 }
148185
186+ @ Test (expected =IllegalArgumentException .class )
187+ public void acceptsProfiles_withNullArgumentList () {
188+ environment .acceptsProfiles ((String [])null );
189+ }
190+
191+ @ Test (expected =IllegalArgumentException .class )
192+ public void acceptsProfiles_withNullArgument () {
193+ environment .acceptsProfiles ((String )null );
194+ }
195+
196+ @ Test (expected =IllegalArgumentException .class )
197+ public void acceptsProfiles_withEmptyArgument () {
198+ environment .acceptsProfiles ("" );
199+ }
200+
201+
149202 @ Test
150203 public void acceptsProfiles_activeProfileSetProgrammatically () {
151204 assertThat (environment .acceptsProfiles ("p1" , "p2" ), is (false ));
@@ -174,6 +227,30 @@ public void acceptsProfiles_defaultProfile() {
174227 assertThat (environment .acceptsProfiles ("p1" ), is (true ));
175228 }
176229
230+ @ Test
231+ public void environmentSubclass_withCustomProfileValidation () {
232+ ConfigurableEnvironment env = new AbstractEnvironment () {
233+ @ Override
234+ protected void validateProfile (String profile ) {
235+ super .validateProfile (profile );
236+ if (profile .contains ("-" )) {
237+ throw new IllegalArgumentException (
238+ "Invalid profile [" + profile + "]: must not contain dash character" );
239+ }
240+ }
241+ };
242+
243+ env .addActiveProfile ("validProfile" ); // succeeds
244+
245+ try {
246+ env .addActiveProfile ("invalid-profile" );
247+ fail ("expected validation exception" );
248+ } catch (IllegalArgumentException ex ) {
249+ assertThat (ex .getMessage (),
250+ equalTo ("Invalid profile [invalid-profile]: must not contain dash character" ));
251+ }
252+ }
253+
177254 @ Test
178255 public void getSystemProperties_withAndWithoutSecurityManager () {
179256 System .setProperty (ALLOWED_PROPERTY_NAME , ALLOWED_PROPERTY_VALUE );
0 commit comments