Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
614d0a4f
Commit
614d0a4f
authored
Apr 22, 2017
by
Liang Ding
Committed by
Vanessa
Apr 22, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✅
#12274 添加单元测试以便排查 bug
parent
e27ae23c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
165 additions
and
8 deletions
+165
-8
src/main/java/org/b3log/solo/processor/console/CategoryConsole.java
...ava/org/b3log/solo/processor/console/CategoryConsole.java
+16
-5
src/test/java/org/b3log/solo/processor/MockDispatcherServlet.java
.../java/org/b3log/solo/processor/MockDispatcherServlet.java
+3
-3
src/test/java/org/b3log/solo/processor/console/CategoryConsoleTestCase.java
...b3log/solo/processor/console/CategoryConsoleTestCase.java
+146
-0
No files found.
src/main/java/org/b3log/solo/processor/console/CategoryConsole.java
View file @
614d0a4f
...
@@ -50,7 +50,7 @@ import java.util.Set;
...
@@ -50,7 +50,7 @@ import java.util.Set;
* Category console request processing.
* Category console request processing.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.
0.1, Apr 1
, 2017
* @version 1.1.
1.1, Apr 22
, 2017
* @since 2.0.0
* @since 2.0.0
*/
*/
@RequestProcessor
@RequestProcessor
...
@@ -276,6 +276,12 @@ public class CategoryConsole {
...
@@ -276,6 +276,12 @@ public class CategoryConsole {
@RequestProcessing
(
value
=
"/console/category/"
,
method
=
HTTPRequestMethod
.
PUT
)
@RequestProcessing
(
value
=
"/console/category/"
,
method
=
HTTPRequestMethod
.
PUT
)
public
void
updateCategory
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
public
void
updateCategory
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
throws
Exception
{
throws
Exception
{
if
(!
userQueryService
.
isAdminLoggedIn
(
request
))
{
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
return
;
}
final
JSONRenderer
renderer
=
new
JSONRenderer
();
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
context
.
setRenderer
(
renderer
);
...
@@ -293,7 +299,6 @@ public class CategoryConsole {
...
@@ -293,7 +299,6 @@ public class CategoryConsole {
final
List
<
JSONObject
>
tags
=
new
ArrayList
<>();
final
List
<
JSONObject
>
tags
=
new
ArrayList
<>();
final
Set
<
String
>
deduplicate
=
new
HashSet
<>();
final
Set
<
String
>
deduplicate
=
new
HashSet
<>();
for
(
int
i
=
0
;
i
<
tagTitles
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
tagTitles
.
length
;
i
++)
{
String
tagTitle
=
StringUtils
.
trim
(
tagTitles
[
i
]);
String
tagTitle
=
StringUtils
.
trim
(
tagTitles
[
i
]);
if
(
StringUtils
.
isBlank
(
tagTitle
))
{
if
(
StringUtils
.
isBlank
(
tagTitle
))
{
...
@@ -401,6 +406,12 @@ public class CategoryConsole {
...
@@ -401,6 +406,12 @@ public class CategoryConsole {
@RequestProcessing
(
value
=
"/console/category/"
,
method
=
HTTPRequestMethod
.
POST
)
@RequestProcessing
(
value
=
"/console/category/"
,
method
=
HTTPRequestMethod
.
POST
)
public
void
addCategory
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
public
void
addCategory
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
throws
Exception
{
throws
Exception
{
if
(!
userQueryService
.
isAdminLoggedIn
(
request
))
{
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
return
;
}
final
JSONRenderer
renderer
=
new
JSONRenderer
();
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
context
.
setRenderer
(
renderer
);
...
@@ -529,15 +540,15 @@ public class CategoryConsole {
...
@@ -529,15 +540,15 @@ public class CategoryConsole {
@RequestProcessing
(
value
=
"/console/categories/*/*/*"
/* Requests.PAGINATION_PATH_PATTERN */
,
method
=
HTTPRequestMethod
.
GET
)
@RequestProcessing
(
value
=
"/console/categories/*/*/*"
/* Requests.PAGINATION_PATH_PATTERN */
,
method
=
HTTPRequestMethod
.
GET
)
public
void
getCategories
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
public
void
getCategories
(
final
HttpServletRequest
request
,
final
HttpServletResponse
response
,
final
HTTPRequestContext
context
)
throws
Exception
{
throws
Exception
{
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
if
(!
userQueryService
.
isAdminLoggedIn
(
request
))
{
if
(!
userQueryService
.
isAdminLoggedIn
(
request
))
{
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
response
.
sendError
(
HttpServletResponse
.
SC_FORBIDDEN
);
return
;
return
;
}
}
final
JSONRenderer
renderer
=
new
JSONRenderer
();
context
.
setRenderer
(
renderer
);
try
{
try
{
final
String
requestURI
=
request
.
getRequestURI
();
final
String
requestURI
=
request
.
getRequestURI
();
final
String
path
=
requestURI
.
substring
((
Latkes
.
getContextPath
()
+
"/console/categories/"
).
length
());
final
String
path
=
requestURI
.
substring
((
Latkes
.
getContextPath
()
+
"/console/categories/"
).
length
());
...
...
src/test/java/org/b3log/solo/processor/MockDispatcherServlet.java
View file @
614d0a4f
...
@@ -37,7 +37,7 @@ import org.b3log.latke.servlet.renderer.HTTP500Renderer;
...
@@ -37,7 +37,7 @@ import org.b3log.latke.servlet.renderer.HTTP500Renderer;
* Mock dispatcher servlet for unit tests.
* Mock dispatcher servlet for unit tests.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.
0, Nov 1, 2016
* @version 1.0.0.
1, Apr 22, 2017
* @since 1.7.0
* @since 1.7.0
*/
*/
public
class
MockDispatcherServlet
{
public
class
MockDispatcherServlet
{
...
@@ -45,7 +45,7 @@ public class MockDispatcherServlet {
...
@@ -45,7 +45,7 @@ public class MockDispatcherServlet {
/**
/**
* the holder of all the sys-handler.
* the holder of all the sys-handler.
*/
*/
p
ublic
static
final
List
<
Handler
>
SYS_HANDLER
=
new
ArrayList
<
Handler
>();
p
rivate
static
final
List
<
Handler
>
SYS_HANDLER
=
new
ArrayList
<
>();
public
void
init
()
throws
ServletException
{
public
void
init
()
throws
ServletException
{
SYS_HANDLER
.
add
(
new
RequestPrepareHandler
());
SYS_HANDLER
.
add
(
new
RequestPrepareHandler
());
...
@@ -55,7 +55,7 @@ public class MockDispatcherServlet {
...
@@ -55,7 +55,7 @@ public class MockDispatcherServlet {
SYS_HANDLER
.
add
(
new
MethodInvokeHandler
());
SYS_HANDLER
.
add
(
new
MethodInvokeHandler
());
}
}
p
rotected
void
service
(
final
HttpServletRequest
req
,
final
HttpServletResponse
resp
)
throws
ServletException
,
IOException
{
p
ublic
void
service
(
final
HttpServletRequest
req
,
final
HttpServletResponse
resp
)
throws
ServletException
,
IOException
{
final
HTTPRequestContext
httpRequestContext
=
new
HTTPRequestContext
();
final
HTTPRequestContext
httpRequestContext
=
new
HTTPRequestContext
();
httpRequestContext
.
setRequest
(
req
);
httpRequestContext
.
setRequest
(
req
);
...
...
src/test/java/org/b3log/solo/processor/console/CategoryConsoleTestCase.java
0 → 100644
View file @
614d0a4f
package
org
.
b3log
.
solo
.
processor
.
console
;
import
org.apache.commons.lang.StringUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.model.User
;
import
org.b3log.solo.AbstractTestCase
;
import
org.b3log.solo.model.Category
;
import
org.b3log.solo.processor.MockDispatcherServlet
;
import
org.b3log.solo.service.InitService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.json.JSONObject
;
import
org.testng.Assert
;
import
org.testng.annotations.Test
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
import
java.io.BufferedReader
;
import
java.io.PrintWriter
;
import
java.io.StringReader
;
import
java.io.StringWriter
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
when
;
/**
* {@link CategoryConsole} test case.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.0, Apr 22, 2017
* @since 2.1.0
*/
@Test
(
suiteName
=
"processor"
)
public
class
CategoryConsoleTestCase
extends
AbstractTestCase
{
/**
* Init.
*
* @throws Exception exception
*/
@Test
public
void
init
()
throws
Exception
{
final
InitService
initService
=
getInitService
();
final
JSONObject
requestJSONObject
=
new
JSONObject
();
requestJSONObject
.
put
(
User
.
USER_EMAIL
,
"test@gmail.com"
);
requestJSONObject
.
put
(
User
.
USER_NAME
,
"Admin"
);
requestJSONObject
.
put
(
User
.
USER_PASSWORD
,
"pass"
);
initService
.
init
(
requestJSONObject
);
final
UserQueryService
userQueryService
=
getUserQueryService
();
Assert
.
assertNotNull
(
userQueryService
.
getUserByEmail
(
"test@gmail.com"
));
}
/**
* addCategory.
*
* @throws Exception exception
*/
@Test
(
dependsOnMethods
=
"init"
)
public
void
addCategory
()
throws
Exception
{
final
HttpServletRequest
request
=
mock
(
HttpServletRequest
.
class
);
when
(
request
.
getServletContext
()).
thenReturn
(
mock
(
ServletContext
.
class
));
when
(
request
.
getRequestURI
()).
thenReturn
(
"/console/category/"
);
when
(
request
.
getMethod
()).
thenReturn
(
"POST"
);
final
JSONObject
adminUser
=
getUserQueryService
().
getAdmin
();
final
HttpSession
httpSession
=
mock
(
HttpSession
.
class
);
when
(
httpSession
.
getAttribute
(
User
.
USER
)).
thenReturn
(
adminUser
);
when
(
request
.
getSession
(
false
)).
thenReturn
(
httpSession
);
final
JSONObject
requestJSON
=
new
JSONObject
();
requestJSON
.
put
(
Category
.
CATEGORY_T_TAGS
,
"Solo"
);
requestJSON
.
put
(
Category
.
CATEGORY_TITLE
,
"分类1"
);
requestJSON
.
put
(
Category
.
CATEGORY_URI
,
"cate1"
);
final
BufferedReader
reader
=
new
BufferedReader
(
new
StringReader
(
requestJSON
.
toString
()));
when
(
request
.
getReader
()).
thenReturn
(
reader
);
final
MockDispatcherServlet
dispatcherServlet
=
new
MockDispatcherServlet
();
dispatcherServlet
.
init
();
final
StringWriter
stringWriter
=
new
StringWriter
();
final
PrintWriter
printWriter
=
new
PrintWriter
(
stringWriter
);
final
HttpServletResponse
response
=
mock
(
HttpServletResponse
.
class
);
when
(
response
.
getWriter
()).
thenReturn
(
printWriter
);
dispatcherServlet
.
service
(
request
,
response
);
final
String
content
=
stringWriter
.
toString
();
Assert
.
assertTrue
(
StringUtils
.
contains
(
content
,
"sc\":true"
));
}
/**
* updateCategory.
*
* @throws Exception exception
*/
@Test
(
dependsOnMethods
=
"addCategory"
)
public
void
updateCategory
()
throws
Exception
{
final
HttpServletRequest
request
=
mock
(
HttpServletRequest
.
class
);
when
(
request
.
getServletContext
()).
thenReturn
(
mock
(
ServletContext
.
class
));
when
(
request
.
getRequestURI
()).
thenReturn
(
"/console/category/"
);
when
(
request
.
getMethod
()).
thenReturn
(
"PUT"
);
final
JSONObject
adminUser
=
getUserQueryService
().
getAdmin
();
final
HttpSession
httpSession
=
mock
(
HttpSession
.
class
);
when
(
httpSession
.
getAttribute
(
User
.
USER
)).
thenReturn
(
adminUser
);
when
(
request
.
getSession
(
false
)).
thenReturn
(
httpSession
);
JSONObject
category
=
getCategoryQueryService
().
getByTitle
(
"分类1"
);
final
JSONObject
requestJSON
=
new
JSONObject
();
requestJSON
.
put
(
Category
.
CATEGORY_T_TAGS
,
"Solo"
);
requestJSON
.
put
(
Keys
.
OBJECT_ID
,
category
.
optString
(
Keys
.
OBJECT_ID
));
requestJSON
.
put
(
Category
.
CATEGORY_TITLE
,
"新的分类1"
);
final
BufferedReader
reader
=
new
BufferedReader
(
new
StringReader
(
requestJSON
.
toString
()));
when
(
request
.
getReader
()).
thenReturn
(
reader
);
final
MockDispatcherServlet
dispatcherServlet
=
new
MockDispatcherServlet
();
dispatcherServlet
.
init
();
final
StringWriter
stringWriter
=
new
StringWriter
();
final
PrintWriter
printWriter
=
new
PrintWriter
(
stringWriter
);
final
HttpServletResponse
response
=
mock
(
HttpServletResponse
.
class
);
when
(
response
.
getWriter
()).
thenReturn
(
printWriter
);
dispatcherServlet
.
service
(
request
,
response
);
final
String
content
=
stringWriter
.
toString
();
Assert
.
assertTrue
(
StringUtils
.
contains
(
content
,
"sc\":true"
));
category
=
getCategoryQueryService
().
getByTitle
(
"分类1"
);
Assert
.
assertNull
(
category
);
category
=
getCategoryQueryService
().
getByTitle
(
"新的分类1"
);
Assert
.
assertNotNull
(
category
);
//Assert.assertEquals(category.optInt(Category.CATEGORY_TAG_CNT), 1); // https://github.com/b3log/solo/issues/12274
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment