diff --git a/test/system/submissions_test.rb b/test/system/submissions_test.rb
--- a/test/system/submissions_test.rb
+++ b/test/system/submissions_test.rb
@@ -34,6 +34,89 @@
assert_text 'You are not authorized'
end
+ test "admin view submissions" do
+ login('admin','admin')
+
+ #view own submission
+ within 'header' do
+ click_on 'Submission'
+ click_on 'View'
+ end
+ click_on 'Go'
+
+ #click the first item in the table
+ first('table a').click
+ assert_text "Source Code"
+ assert_text "Task"
+
+ #view other submission of available problem
+ within 'header' do
+ click_on 'Manage'
+ click_on 'Problem'
+ end
+
+ row = find('tr', text: 'add_full_name')
+ within row do
+ click_on 'Stat'
+ end
+
+ assert_text "Submissions"
+ within find('tr', text: 'john') do
+ first('a').click
+ end
+ assert_text "Source Code"
+ assert_text "Task"
+
+ #view other submission of unavailable problem
+ visit submission_path( submissions(:sub1_by_james) )
+ assert_text "Source Code"
+ assert_text "Task"
+ end
+
+ test "user view submissions" do
+ login('john','hello')
+
+ #view own submission
+ within 'header' do
+ click_on 'Submission'
+ click_on 'View'
+ end
+ click_on 'Go'
+
+ #click the first item in the table
+ first('table a').click
+ assert_text "Source Code"
+ assert_text "Task"
+
+ #view other submission of available problem
+ GraderConfiguration.where(key: 'right.user_view_submission').update(value: 'true')
+
+ #using direct link
+ visit submission_path( submissions(:add1_by_james) )
+ assert_text "Source Code"
+ assert_text "Task"
+
+ #view admin's submission of available problem
+ #using direct link
+ visit submission_path( submissions(:add1_by_admin) )
+ assert_text "Source Code"
+ assert_text "Task"
+
+ #view other submission of unavailable problem
+ visit submission_path( submissions(:sub1_by_james) )
+ assert_text "You are not authorized"
+
+ #view admin's submission of unavailable problem
+ login('john','hello')
+ visit submission_path( submissions(:sub1_by_admin) )
+ assert_text "You are not authorized"
+
+ #view other submission of available problem, right not allow
+ GraderConfiguration.where(key: 'right.user_view_submission').update(value: 'false')
+ login('john','hello')
+ visit submission_path( submissions(:add1_by_james) )
+ assert_text "You are not authorized"
+ end
def login(username,password)
visit root_path