Exemplo n.º 1
0
 def testEmptyFile(self):
     """ No file contents -> EMPTY_FILE. """
     self.fields['file'] = ''
     form = cgifactory.post(filenames=self.filenames, **self.fields)
     response = self.query(upload.main, form)
     #print(response)      
     self.assertIn('EMPTY_FILE', response)
Exemplo n.º 2
0
 def testDefault(self):
     """ No args given -> login form. """
     form = cgifactory.post()
     response = self.query(view.main, form)
     # print(response)
     self.assertIn("View Submissions", response)
     self.assertNotIn("Tamarin Error", response)
Exemplo n.º 3
0
 def testSubmittedOnlyView(self):
     """ View of single submitted file -> displays content. """
     self.createFile(tamarin.SUBMITTED_ROOT, "JohndoeA01-20200606-1200.java", "submitted content")
     form = cgifactory.post(submission="JohndoeA01-20200606-1200.java", **self.fields)
     response = self.query(view.main, form)
     # print(response)
     self.assertIn("submitted content", response)
     self.assertNotIn("Tamarin Error", response)
Exemplo n.º 4
0
 def testEmptyView(self):
     """ Login -> view of no assignments. """
     form = cgifactory.post(**self.fields)
     response = self.query(view.main, form)
     # print(response)
     self.assertIn("John Doe", response)
     self.assertIn("Not yet submitted", response)
     self.assertNotIn("Tamarin Error", response)
Exemplo n.º 5
0
 def testSubmittedOnly(self):
     """ Login -> view includes a submitted-only file. """
     self.createFile(tamarin.SUBMITTED_ROOT, "JohndoeA01-20200606-1200.java", "submitted content")
     form = cgifactory.post(**self.fields)
     response = self.query(view.main, form)
     # print(response)
     self.assertIn("John Doe", response)
     self.assertIn("Not yet graded", response)
     self.assertNotIn("Tamarin Error", response)
Exemplo n.º 6
0
 def testGraded(self):
     """ Login -> view includes a graded file. """
     self.createFile(Assignment("A01").path, "JohndoeA01-20200606-1300.java", "graded content")
     self.createFile(Assignment("A01").path, "JohndoeA01-20200606-1300-3-H.txt", "grader output")
     form = cgifactory.post(**self.fields)
     response = self.query(view.main, form)
     # print(response)
     self.assertIn("John Doe", response)
     self.assertIn("<b>Grade:</b> 3", response)
     self.assertNotIn("Tamarin Error", response)
Exemplo n.º 7
0
 def testBinaryFile(self):
     """ Binary data on a plain text assignment -> BINARY_FILE. """
     self.fields['file'] = chr(0xB0)  #fine for UTF-8, but not ascii
     tamarin.SUBMISSION_TYPES['java'].encoding = 'ascii'
     try:
         form = cgifactory.post(filenames=self.filenames, **self.fields)
         response = self.query(upload.main, form)
         #print(response)      
         self.assertIn('BINARY_FILE', response)
     finally:
         tamarin.SUBMISSION_TYPES['java'].encoding = 'utf-8'
Exemplo n.º 8
0
 def testUndefinedType(self):
     dir = 'A92-21121212-1212-quark'
     try:
         os.mkdir(os.path.join(tamarin.GRADED_ROOT, dir))
         self.filenames['file'] = 'JohndoeA92.java'
         form = cgifactory.post(filenames=self.filenames, **self.fields)
         response = self.query(upload.main, form)
         #print(response)      
         self.assertIn('UNDEFINED_TYPE', response)            
     finally:
         os.rmdir(os.path.join(tamarin.GRADED_ROOT, dir))
Exemplo n.º 9
0
 def testGraded(self):
     """ View of single graded file -> displays content. """
     self.createFile(Assignment("A01").path, "JohndoeA01-20200606-1300.java", "graded content")
     self.createFile(
         Assignment("A01").path, "JohndoeA01-20200606-1300-3-H.txt", '<div class="grader">grader output</div>'
     )
     form = cgifactory.post(submission="JohndoeA01-20200606-1300.java", **self.fields)
     response = self.query(view.main, form)
     # print(response)
     self.assertIn("graded content", response)
     self.assertIn("grader output", response)
     self.assertNotIn("Tamarin Error", response)
Exemplo n.º 10
0
 def testValidSubmission(self):
     """ A valid submission -> successfully processed. """
     outputPath = os.path.join(tamarin.UPLOADED_ROOT, 
                               self.filenames['file'])
     try:
         form = cgifactory.post(filenames=self.filenames, **self.fields)
         response = self.query(upload.main, form)
         #print(response)      
         self.assertIn('<input type="submit"', response)
         self.assertTrue(os.path.exists(outputPath), outputPath)
     finally:
         #clean up
         if os.path.exists(outputPath):
             os.remove(outputPath)      
Exemplo n.º 11
0
 def testBadFilename(self):
     """ Filename is malformed -> appropriate error. """
     tests = {
         'Johndoe?A01.txt': 'INVALID_CHARS', 
         'JohndoeA01': 'BAD_EXTENSION',
         'JohndoeA01.': 'BAD_EXTENSION',
         'Johndoea01.txt': 'BAD_ASSIGNMENT',
         'JohndoeA1.txt': 'BAD_ASSIGNMENT',
         'JohndoeA01bc.txt': 'BAD_ASSIGNMENT',
         'A01.txt': 'NO_USER_NAME', 
         'JohnDoeA01.txt': 'USERNAME_NOT_LOWERCASE',
     
         'JohndoeA01.txt': 'WRONG_EXTENSION',
         'johndoeA01.java': 'NO_INITIAL_CAP'
     }
     for name, error in tests.items():
         self.filenames['file'] = name
         form = cgifactory.post(filenames=self.filenames, **self.fields)
         response = self.query(upload.main, form)
         #print(response)      
         self.assertIn(error, response)
Exemplo n.º 12
0
 def testMissingFilename(self):
     """ Submitted file contents but not name -> NO_FILE. """
     form = cgifactory.post(**self.fields)
     response = self.query(upload.main, form)
     #print(response)      
     self.assertIn('NO_FILE_UPLOADED', response)