Skip to content

Commit 3057460

Browse files
committed
Merge remote-tracking branch 'AleksSPb/gh213_suspicious_activities_null_string'
Fix #213
2 parents 3a2a28d + 66a5ccd commit 3057460

File tree

5 files changed

+74
-16
lines changed

5 files changed

+74
-16
lines changed

src/main/java/ru/mystamps/web/entity/SuspiciousActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public class SuspiciousActivity {
6464
@Column(length = IP_LENGTH, nullable = false)
6565
private String ip;
6666

67-
@Column(name = "referer_page", length = REFERER_PAGE_LENGTH, nullable = false)
67+
@Column(name = "referer_page", length = REFERER_PAGE_LENGTH)
6868
private String refererPage;
6969

70-
@Column(name = "user_agent", length = USER_AGENT_LENGTH, nullable = false)
70+
@Column(name = "user_agent", length = USER_AGENT_LENGTH)
7171
private String userAgent;
7272

7373
}

src/main/java/ru/mystamps/web/service/SiteServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ private void logEvent(
104104
activity.setUser(user);
105105

106106
activity.setIp(StringUtils.defaultString(ip));
107-
activity.setRefererPage(abbreviateRefererPage(StringUtils.defaultString(referer)));
108-
activity.setUserAgent(abbreviateUserAgent(StringUtils.defaultString(agent)));
107+
activity.setRefererPage(StringUtils.stripToNull(abbreviateRefererPage(referer)));
108+
activity.setUserAgent(StringUtils.stripToNull(abbreviateUserAgent(agent)));
109109

110110
suspiciousActivities.add(activity);
111111
}

src/main/resources/liquibase/version/0.4.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@
99
<include file="0.4/2015-06-22--image_url.xml" relativeToChangelogFile="true" />
1010
<include file="0.4/2015-07-07--salt_and_hash.xml" relativeToChangelogFile="true" />
1111
<include file="0.4/2015-10-14--http-method.xml" relativeToChangelogFile="true" />
12+
<include file="0.4/2015-11-13--nullable_columns.xml" relativeToChangelogFile="true" />
1213

1314
</databaseChangeLog>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<databaseChangeLog
3+
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
6+
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">
7+
8+
<changeSet id="allow-nullable-values-to-suspicious_activities-table" author="AleksSPb" context="scheme">
9+
10+
<dropNotNullConstraint
11+
columnDataType="VARCHAR(255)"
12+
columnName="referer_page"
13+
tableName="suspicious_activities"/>
14+
15+
<dropNotNullConstraint
16+
columnDataType="VARCHAR(255)"
17+
columnName="user_agent"
18+
tableName="suspicious_activities"/>
19+
20+
</changeSet>
21+
22+
<changeSet id="update-empty-values-to-null-in-suspicious_activities-table" author="AleksSPb" context="test-data, prod-data">
23+
24+
<!-- Be caution: there is no rollback! -->
25+
<sql>
26+
UPDATE suspicious_activities
27+
SET referer_page = NULL
28+
WHERE TRIM(referer_page) = ''
29+
</sql>
30+
31+
<!-- Be caution: there is no rollback! -->
32+
<sql>
33+
UPDATE suspicious_activities
34+
SET user_agent = NULL
35+
WHERE TRIM(user_agent) = ''
36+
</sql>
37+
38+
</changeSet>
39+
40+
</databaseChangeLog>
41+

src/test/groovy/ru/mystamps/web/service/SiteServiceImplTest.groovy

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,18 @@ class SiteServiceImplTest extends Specification {
183183
})
184184
}
185185

186-
def "logAboutAbsentPage() should pass empty string to dao for unknown referer"() {
186+
def "logAboutAbsentPage() should pass null to dao for unknown referer"(String refererPage) {
187187
when:
188-
service.logAboutAbsentPage(TEST_PAGE, TEST_METHOD, null, null, null, null)
188+
service.logAboutAbsentPage(TEST_PAGE, TEST_METHOD, null, null, refererPage, null)
189189
then:
190190
1 * suspiciousActivityDao.add({ SuspiciousActivity activity ->
191-
assert activity?.refererPage?.empty
191+
assert activity?.refererPage == null
192192
return true
193193
})
194+
where: refererPage | _
195+
' ' | _
196+
'' | _
197+
null | _
194198
}
195199

196200
def "logAboutAbsentPage() should pass user agent to dao"() {
@@ -216,14 +220,18 @@ class SiteServiceImplTest extends Specification {
216220
})
217221
}
218222

219-
def "logAboutAbsentPage() should pass empty string to dao for unknown user agent"() {
223+
def "logAboutAbsentPage() should pass null to dao for unknown user agent"(String userAgent) {
220224
when:
221-
service.logAboutAbsentPage(TEST_PAGE, TEST_METHOD, null, null, null, null)
225+
service.logAboutAbsentPage(TEST_PAGE, TEST_METHOD, null, null, null, userAgent)
222226
then:
223227
1 * suspiciousActivityDao.add({ SuspiciousActivity activity ->
224-
assert activity?.userAgent?.empty
228+
assert activity?.userAgent == null
225229
return true
226230
})
231+
where: userAgent | _
232+
' ' | _
233+
'' | _
234+
null | _
227235
}
228236

229237
//
@@ -353,14 +361,18 @@ class SiteServiceImplTest extends Specification {
353361
})
354362
}
355363

356-
def "logAboutFailedAuthentication() should pass empty string to dao for unknown referer"() {
364+
def "logAboutFailedAuthentication() should pass null to dao for unknown referer"(String refererPage) {
357365
when:
358-
service.logAboutFailedAuthentication(TEST_PAGE, TEST_METHOD, null, null, null, null, null)
366+
service.logAboutFailedAuthentication(TEST_PAGE, TEST_METHOD, null, null, refererPage, null, null)
359367
then:
360368
1 * suspiciousActivityDao.add({ SuspiciousActivity activity ->
361-
assert activity?.refererPage?.empty
369+
assert activity?.refererPage == null
362370
return true
363371
})
372+
where: refererPage | _
373+
' ' | _
374+
'' | _
375+
null | _
364376
}
365377

366378
def "logAboutFailedAuthentication() should pass abbreviated referer when it's too long"() {
@@ -387,14 +399,18 @@ class SiteServiceImplTest extends Specification {
387399
})
388400
}
389401

390-
def "logAboutFailedAuthentication() should pass empty string to dao for unknown user agent"() {
402+
def "logAboutFailedAuthentication() should pass null to dao for unknown user agent"(String userAgent) {
391403
when:
392-
service.logAboutFailedAuthentication(TEST_PAGE, TEST_METHOD, null, null, null, null, null)
404+
service.logAboutFailedAuthentication(TEST_PAGE, TEST_METHOD, null, null, null, userAgent, null)
393405
then:
394406
1 * suspiciousActivityDao.add({ SuspiciousActivity activity ->
395-
assert activity?.userAgent?.empty
407+
assert activity?.userAgent == null
396408
return true
397409
})
410+
where: userAgent | _
411+
' ' | _
412+
'' | _
413+
null | _
398414
}
399415

400416
def "logAboutFailedAuthentication() should pass abbreviated user agent when it's too long"() {

0 commit comments

Comments
 (0)