Best Python code snippet using locust
gordon_360_tests_member.py
Source:gordon_360_tests_member.py  
...65        self.token_payload = { 'username':username, 'password':password, 'grant_type':'password' }66    def test(self):67        response = api.post(self.session, self.url, self.token_payload)68        if not response.status_code == 200:69            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))70        try:71            response.json()72        except ValueError:73            self.log_error('Expected Json, got {0}.'.format(response.text))74        else:75            if not 'access_token' in response.json():76                self.log_error('Expected access token in response, got {0}.'.format(response.json()))77# # # # # # # # # # # #78# EVENTS & CLAW TESTS #79# # # # # # # # # # # #80class get_all_events___regular_member(TestCase):81    """ Verify that a regular member can get all events by type_ID82    83    Pre-Conditions:84    Valid Authentication header85    Expectaions:86    Endpoint -- api/events/25Live/type/:Event_OR_Type_ID87    Expected Status Code -- 200 OK88    Expected Respones Body -- list of all events resources89    """90    def __init__(self, session=None):91        super().__init__(session)92        self.url = hostURL + 'api/events/25Live/type/10'93    def test(self):94        response = api.get(self.session, self.url)95        if not response.status_code == 200:96            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))97        try:98            response.json()99        except ValueError:100            self.log_error('Expected Json response body, got {0}.'.format(response.text))101        else:102            if not (type(response.json()) is list):103                self.log_error('Expected list, got {0}.'.format(response.json()))104class get_all_events_multiple___regular_member(TestCase):105    """ Verify that a regular member can get all events by multiple type_ID106    107    Pre-Conditions:108    Valid Authentication header109    Expectaions:110    Endpoint -- api/events/25Live/type/:Event_OR_Type_ID111    Expected Status Code -- 200 OK112    Expected Respones Body -- list of all events resources113    """114    def __init__(self, session=None):115        super().__init__(session)116        self.url = hostURL + 'api/events/25Live/type/10$11$12$14'117    def test(self):118        response = api.get(self.session, self.url)119        if not response.status_code == 200:120            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))121        try:122            response.json()123        except ValueError:124            self.log_error('Expected Json response body, got {0}.'.format(response.text))125        else:126            if not (type(response.json()) is list):127                self.log_error('Expected list, got {0}.'.format(response.json()))128class get_all_claw___regular_member(TestCase):129    """ Verify that a regular member can get all upcoming chapel events (category_ID = 85)130    131    Pre-Conditions:132    Valid Authentication header133    Expectaions:134    Endpoint -- api/events/25Live/CLAW135    Expected Status Code -- 200 OK136    Expected Respones Body -- list of all events resources137    """138    def __init__(self, session=None):139        super().__init__(session)140        self.url = hostURL + 'api/events/25Live/CLAW'141    def test(self):142        response = api.get(self.session, self.url)143        if not response.status_code == 200:144            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))145        try:146            response.json()147        except ValueError:148            self.log_error('Expected Json response body, got {0}.'.format(response.text))149        else:150            if not (type(response.json()) is list):151                self.log_error('Expected list, got {0}.'.format(response.json()))152class get_all_25Live___regular_member(TestCase):153    """ Verify that a regular member can get all events in 25Live under predefined categories154    155    Pre-Conditions:156    Valid Authentication header157    Expectaions:158    Endpoint -- api/events/25Live/All159    Expected Status Code -- 200 OK160    Expected Respones Body -- list of all events resources161    """162    def __init__(self, session=None):163        super().__init__(session)164        self.url = hostURL + 'api/events/25Live/All'165    def test(self):166        response = api.get(self.session, self.url)167        if not response.status_code == 200:168            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))169        try:170            response.json()171        except ValueError:172            self.log_error('Expected Json response body, got {0}.'.format(response.text))173        else:174            if not (type(response.json()) is list):175                self.log_error('Expected list, got {0}.'.format(response.json()))176class get_all_25Live_by_event_id___regular_member(TestCase):177    """ Verify that a regular member can get information on specific event on 25Live178    179    Pre-Conditions:180    Valid Authentication header181    Expectaions:182    Endpoint -- api/events/25Live/All183    Expected Status Code -- 200 OK184    Expected Respones Body -- list of all events resources185    """186    def __init__(self, session=None):187        super().__init__(session)188        self.url = hostURL + 'api/events/25Live/2911'189    def test(self):190        response = api.get(self.session, self.url)191        if not response.status_code == 200:192            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))193        try:194            response.json()195        except ValueError:196            self.log_error('Expected Json response body, got {0}.'.format(response.text))197        else:198            if not (type(response.json()) is list):199                self.log_error('Expected list, got {0}.'.format(response.json()))200class get_all_25Live_by_multiple_event_id___regular_member(TestCase):201    """ Verify that a regular member can get information on specific event on 25Live202    203    Pre-Conditions:204    Valid Authentication header205    Expectaions:206    Endpoint -- api/events/25Live/All207    Expected Status Code -- 200 OK208    Expected Respones Body -- list of all events resources209    """210    def __init__(self, session=None):211        super().__init__(session)212        self.url = hostURL + 'api/events/25Live/2911$2964$3030'213    def test(self):214        response = api.get(self.session, self.url)215        if not response.status_code == 200:216            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))217        try:218            response.json()219        except ValueError:220            self.log_error('Expected Json response body, got {0}.'.format(response.text))221        else:222            if not (type(response.json()) is list):223                self.log_error('Expected list, got {0}.'.format(response.json()))224class get_all_chapel___regular_member(TestCase):225    """ Verify that a regular member can get information on chapel events attended226    227    Pre-Conditions:228    Valid Authentication header229    Expectaions:230    Endpoint -- api/events/chapel/:user_name231    Expected Status Code -- 200 OK232    Expected Respones Body -- list of all events resources233    """234    def __init__(self, session=None):235        super().__init__(session)236        self.url = hostURL + 'api/events/chapel/sam.nguyen/'237    def test(self):238        response = api.get(self.session, self.url)239        if not response.status_code == 200:240            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))241        try:242            response.json()243        except ValueError:244            self.log_error('Expected Json response body, got {0}.'.format(response.text))245        else:246            if not (type(response.json()) is list):247                self.log_error('Expected list, got {0}.'.format(response.json()))248class get_all_chapel_by_term___regular_member(TestCase):249    """ Verify that a regular member can get information on chapel events attended by specific school term250    251    Pre-Conditions:252    Valid Authentication header253    Expectaions:254    Endpoint -- api/events/chapel/:user_name255    Expected Status Code -- 200 OK256    Expected Respones Body -- list of all events resources257    """258    def __init__(self, session=None):259        super().__init__(session)260        self.url = hostURL + 'api/events/chapel/matthew.felgate/FA16'261    def test(self):262        response = api.get(self.session, self.url)263        if not response.status_code == 200:264            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))265        try:266            response.json()267        except ValueError:268            self.log_error('Expected Json response body, got {0}.'.format(response.text))269        else:270            if not (type(response.json()) is list):271                self.log_error('Expected list, got {0}.'.format(response.json()))272# # # # # # # # # # #273# MEMBERSHIP TESTS #274# # # # # # # # # # #275# class get_all_memberships___regular_member(TestCase):276#     """ Verify that a regular member can retrieve all memberships277#     Pre-conditions:278#     Valid Authentication Header.279#     Expectations:280#     Endpoint -- memberships/281#     Expected Status code -- 200 Ok282#     Expected Content -- List283#     """284#     def __init__(self, session=None):285#         super().__init__(session)286#         self.url = hostURL + 'api/memberships/'287#     def test(self):288#         response = api.get(self.session, self.url)289#         print (response)290#         print (api.get(self.session, self.url))291#         if not response.status_code == 401:292#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))293            294#         try:295#             response.json()296#         except ValueError:297#             self.log_error('Expected Json response, got >{0}<.'.format(response.text))298#         else:299#             if not (type(response.json()) is list):300#                 self.log_error('Response was not a list')301        302# class get_one_membership___regular_member(TestCase):303#     """ Retrieve a specific membership resource.304#     Pre-conditions:305#     Valid Authentication header306#     Expectations:307#     Endpoint -- api/memberships/:id308#     Expected Status Code -- 200 OK309#     Expected Content -- A Json Object with a MembershipID attribute.310#     """311#     def __init__(self , session=None):312#         super().__init__(session)313#         self.url = hostURL + 'api/memberships/'314#         self.membershipID = -1315        316#     def setup(self):317#         # Find a valid membership id318#         response = api.get(self.session, self.url)319#         if not response.status_code == 200:320#             self.log_error('Error in setup for {0}. Expected 200 OK, got {1}.'.format(self.test_name, response.status_code))321#         try:322#             response.json()323#         except ValueError:324#             self.log_error('Error in setup for {0}. Expected json response body, got {1}.'.format(self.test_name, response.text))325#         else:326#             try:327#                 self.membershipID = response.json()[0]['MembershipID']328#                 self.url = self.url + str(self.membershipID)329#             except KeyError:330#                 self.log_error('Error in setup for {0}. Expected MembershipID in response body, got {1}.'.format(self.test_name, self.response.json()))331#         #exit(1)    332#     def test(self):333#         response = api.get(self.session, self.url)334#         if not response.status_code == 200:335#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))336#         try:337#             response.json()338#         except ValueError:339#             self.log_error('Expected Json response body, got {0}.'.format(response.text))340#         else:341#             if not ('MembershipID' in response.json()):342#                 self.log_error('Expected MembershipID in jsob object, got {0}.'.format(response.json()))343# class get_all_my_memberships___regular_member(TestCase):344#     """ Verify that a regular member cannot fetch memberships associated with them. 345#         This is because they can only see the members if they are part of the group.346    347#     Pre-Conditions:348#     Valid Authentication Header.349#     Expectations:350#     Endpoints -- api/memberships/student/:id351#     Expected Status Code -- 401 Server Error352#     Expected Reponse Content -- A list of json objects353#     """354#     def __init__(self , session=None):355#         super().__init__(session)356#         self.url = hostURL + 'api/memberships/student/' + str(my_id_number)357#     def test(self):358#         response = api.get(self.session, self.url)359#         if not response.status_code == 401:360#             self.log_error('Expected 401, got {0}.'.format(response.status_code))361#         try:362#             response.json()363#         except ValueError:364#             self.log_error('Expected Json response body, got {0}.'.format(response.text))365#         else:366#             if not (type(response.json()) is list):367#                 self.log_error('Response was not a list.')368        369# class get_all_memberships_for_someone_else___regular_member(TestCase):370#     """ Verify that regular member can fetch someone else's memberships.371    372#     Pre-Conditions:373#     Valid Authentication Header.374#     Authenticated as regular member.375#     Expectations376#     Endpoint -- api/memberships/student/:id377#     Expected Status Code -- 200 OK.378#     Expected Response Content --  A list of json objects.379#     """380#     def __init__(self , session=None):381#         super().__init__(session)382#         self.url = hostURL + 'api/memberships/student/' + str(random_id_number)383#     def test(self):384#         response = api.get(self.session, self.url)385#         if not response.status_code == 200:386#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))387#         try:388#             response.json()389#         except ValueError:390#             self.log_error('Expected Json response body, got {0}.'.format(response.text))391#         else:392#             if not (type(response.json()) is list):393#                 self.log_error('Response was not a list')394    395# class get_memberships_for_an_activity___regular_member(TestCase):396#     """ Verify that a regular member can fetch memberships for an activity.397#     Pre-Conditions:398#     Valid Authentication Header.399#     Expectations:400#     Endpoint -- api/memberships/activity/:id401#     Expected Status Code -- 200 OK402#     Expected Response Content -- A list of json Objects.403#     """404#     def __init__(self , session=None):405#         super().__init__(session)406#         self.url = hostURL + 'api/memberships/activity/' + activity_code407#     def test(self):408#         response = api.get(self.session, self.url)409#         if not response.status_code == 200:410#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))411#         try:412#             response.json()413#         except ValueError:414#             self.log_error('Expected Json response body, got {0}.'.format(response.text))415#         else:416#             if not (type(response.json()) is list):417#                 self.log_error('Response was not a list.')418        419    420class get_leader_memberships_for_an_activity___regular_member(TestCase):421    """ Verify that a regular member can fetch all leaders for a specific activity.422    Pre-Conditions:423    Valid Authentication Header.424    Authenticated as regular member.425    Expectations:426    Endpoint -- api/memberships/activity/:id/leaders427    Expected Status Code -- 200 OK428    Expected Response Content -- A list of json objects.429    """430    def __init__(self , session=None):431        super().__init__(session)432        self.url = hostURL + 'api/memberships/activity/' + activity_code + '/leaders'433    def test(self):434        response = api.get(self.session, self.url)435        if not response.status_code == 200:436            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))437        try:438            response.json()439        except ValueError:440            self.log_error('Expected Json response body, got {0}.'.format(response.text))441        else:442            if not (type(response.json()) is list):443                self.log_error('Response was not a list.')444                445# class post_valid_membership___regular_member(TestCase):446#     """ Given valid membership, verify that post works.447#     Pre-conditions:448#     Valid Authentication Header.449#     Expectations:450#     Endpoints -- api/memberships/451#     Expected Statis Cpde -- 201 Created.452#     Expected Content -- A Json object with a MEMBERSHIP_ID attribute.453#     """454#     def __init__(self , session=None):455#         super().__init__(session)456#         self.url = hostURL + 'api/memberships/'457#         self.data = {458#             'ACT_CDE': activity_code,459#             'SESS_CDE' : '201501',460#             'ID_NUM': my_id_number,461#             'PART_CDE':'GUEST',462#             'BEGIN_DTE':'06/10/2016',463#             'END_DTE':'07/16/2016',464#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'465#             }466#         # We will get the actual id when we post.467#         # Setting it -1 to check later that we got an id from the post.468#         self.createdMembershipID = -1469#     def test(self):470#         response = api.postAsJson(self.session, self.url, self.data)471#         if not response.status_code == 201:472#             self.log_error('Expected 201 Created, got {0}.'.format(response.status_code))473#         try:474#             response.json()475#         except ValueError:476#             self.log_error('Expected Json response body, got {0}.'.format(response.text))477#         else:478#             try:479#                 self.createdMembershipID = response.json()['MEMBERSHIP_ID']480#             except KeyError:                481#                 self.log_error('Expected MEMBERSHIP_ID in json response, got {0}.'.format(response.json()))482                483#     def cleanup(self):484#         # We try to delete the membership we created485#         if self.createdMembershipID < 0: # The creation wasn't successful486#             self.log_error('Expected valid membership ID, got {0}.'.format(self.createdMembershipID))487#         else:488#             d = api.delete(self.session, self.url + str(self.createdMembershipID))489#             if not d.status_code == 200:490#                 self.log_error('Error in cleanup for {0}'.format(self.test_name))491#         return492# class post_membership_with_id_that_is_not_you___regular_member(TestCase):493#     """ Verify that regular member can't create a membership for someone else.494#     Pre-Conditions:495#     Valid Authentication Header.496#     Authenticated as a regular member for this Activity.497#     Expectations:498#     Endpoint -- api/memberships/499#     Expected Status Code -- 401 Unauthorized500#     Expected Content -- No Content501#     """502#     def __init__(self , session=None):503#         super().__init__(session)504#         self.url = hostURL + 'api/memberships/'505#         self.data = {506#             'ACT_CDE': activity_code,507#             'SESS_CDE' : '201501',508#             'ID_NUM': random_id_number,509#             'PART_CDE':'GUEST',510#             'BEGIN_DTE':'06/10/2016',511#             'END_DTE':'07/16/2016',512#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'513#             }514#         self.membershipID = -1515#     def setup(self):516#         # Report if there any current memberships for the Club to avoid false negatives.517#         # If I am currently a director of the club, this test should fail.518#         response = api.get(self.session, self.url + 'student/' + str(my_id_number))519#         try:520#             for membership in response.json():521#                 if(membership['ActivityCode'] == activity_code and membership['Participation'] in LEADERSHIP_POSITIONS):522#                     self.log_error('False Negative: This user is a leader for the activity we are testing.')523#         except (ValueError, KeyError):524#             self.log_error('Error in setup for {0}'.format(self.test_name))    525#     def test(self):526#         response = api.post(self.session, self.url, self.data)527#         if not response.status_code == 401:528#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))529#         if response.text:530#             self.log_error('Expected empty response body, got {0}.'.format(response.text))531#         # If the unauthorized operation went through, try to recover.532#         if response.status_code == 201:533#             self.log_error('Expected 401 Unauthorized, got 201. Will try to delete the data ...')534#             try:535#                 self.membershipID = response.json()['MEMBERSHIP_ID']536#             except (KeyError, ValueError):537#                 self.log_error('Error in test for {0}'.format(self.test_name))538#     def cleanup(self):539#         if self.membershipID > 0: # The creation went through even though it wasn't supposed to.540#             d = api.delete(self.session, self.url + str(self.membershipID))541#             if d.status_code == 200:542#                 self.log_error('Unauthorized resource was deleted.')543#             else:544#                 self.log_error('Error deleting unauthorized resource.')545        546# class post_non_guest_membership___regular_member(TestCase):547#     """ Verify that regular member can not create a non-guest membership.548#     Pre-Conditions:549#     Authentication Header is Valid.550#     Authenticated as a regular member for this Activity.551#     Expectations:552#     Endpoint -- apo/memberships553#     Expected Status Code -- 401 Unauthorized554#     Expected Content -- No Content555#     """556#     def __init__(self,557#                  SSLVerify=False,558#                  session=None):559#         super().__init__(session)560#         self.url = hostURL + 'api/memberships/'561#         self.data = {562#             'ACT_CDE': activity_code,563#             'SESS_CDE' : '201501',564#             'ID_NUM': my_id_number,565#             'PART_CDE':'DIREC', #A regular user cannot do this directly.566#             'BEGIN_DTE':'06/10/2016',567#             'END_DTE':'07/16/2016',568#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'569#             }570#         self.membershipID = -1571#     def setup(self):572#         # Report if there any current memberships for the Club to avoid false negatives.573#         # If I am currently a director of the club, this test should fail.574#         response = api.get(self.session, self.url + 'student/' + str(my_id_number))575#         try:576#             for membership in response.json():577#                 if(membership['ActivityCode'] == activity_code and membership['Participation'] in LEADERSHIP_POSITIONS):578#                     self.log_error('False Negative: This user is a leader for the activity we are testing.')579#         except (KeyError, ValueError):580#             self.log_error('Error in setup for {0}.'.format(self.test_name))581#     def test(self):582#         response = api.post(self.session, self.url, self.data)583#         if not response.status_code == 401:584#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))585#         if response.text:586#             self.log_error('Expected empty response body, got {0}.'.format(response.text))587#         if response.status_code == 201:588#             self.log_error('Expected 401 Unauthorized, got 201 Created. Will try to delete data ...')589#             try:590#                 self.membershipID = response.json()['MEMBERSHIP_ID']591#             except (KeyError, ValueError):592#                 self.log_error('Error in test for {0}.'.format(self.test_name))593#     def cleanup(self):594#         if self.membershipID > 0: # The creation went through even though it wasn't supposed to.595#             d = api.delete(self.session, self.url + str(self.membershipID))596#             if d.status_code == 200:597#                 self.log_error('Unauthorized resource was deleted.')598#             else:599#                 self.log_error('Error deleting unauthorized resource.')600            601            602        603# class put_valid_membership___regular_member(TestCase):604#     """ Verify that a membership can be updated by the owner.605#     Pre-Conditions:606#     Authenticated as Regular member.607#     Expectations:608#     Endpoint -- api/memberships/609#     Expected Status Code -- 200 OK610#     Expected Content -- A json object with a MEMBERSHIP_ID attribute.611#     """612#     def __init__(self , session=None):613#         super().__init__(session)614#         self.url = hostURL + 'api/memberships/'615#         self.data = {}616#         self.createdMembershipID = -1617#     def setup(self):618#         # The membership to modify619#         self.predata = {620#             'ACT_CDE': activity_code,621#             'SESS_CDE' : '201501',622#             'ID_NUM': my_id_number,623#             'PART_CDE':'GUEST',624#             'BEGIN_DTE':'06/10/2016',625#             'END_DTE':'07/16/2016',626#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'627#             }628#         r = api.post(self.session, self.url, self.predata)629#         try:                630#             self.createdMembershipID = r.json()["MEMBERSHIP_ID"]631#             # Updated Data632#             self.data = {633#                 'MEMBERSHIP_ID' : self.createdMembershipID,634#                 'ACT_CDE': activity_code,635#                 'SESS_CDE' : '201501',636#                 'ID_NUM': my_id_number,637#                 'PART_CDE':'GUEST',638#                 'BEGIN_DTE':'02/10/2016',639#                 'END_DTE':'07/16/2016',640#                 'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'641#                 }642#         except (KeyError, ValueError):643#             self.log_error('Error in setup for {0}.'.format(self.test_name))644#     def test(self):645#         response = api.putAsJson(self.session, self.url + str(self.createdMembershipID), self.data)646#         if not response.status_code == 200:647#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))648#         try:649#             response.json()650#         except ValueError:651#             self.log_error('Expected Json response body, got {0}.'.format(response.text))652#         else:653#             if not ('MEMBERSHIP_ID' in response.json()):654#                 self.log_error('Expected MEMBERSHIP_ID in response body, got {0}.'.format(response.json()))655#     def cleanup(self):656#         # We try to delete the membership we created657#         if self.createdMembershipID < 0: # The Creation wasn't successfull. ID is still -1.658#             self.log_error('Expected valid membership ID, got {0}.'.format(self.createdMembershipID))659#         else:660#             d = api.delete(self.session, self.url + str(self.createdMembershipID))661#             if not d.status_code == 200:662#                 self.log_error('Error in cleanup for {0}'.format(self.test_name))663# class put_non_guest_membership___regular_member(TestCase):664#     """ Verify that regular member can't update their membership level.665#     Pre-Conditions:666#     Valid Authentication Header.667#     Authenticated as a regular member for the activity.668#     Expectations:669#     Endpoint -- api/memberships/670#     Expected Status Code -- 401 Unauthorized671#     Expected Content -- No Content672#     """673#     def __init__(self , session=None):674#         super().__init__(session)675#         self.url = hostURL + 'api/memberships/'676#         self.data = {}677#         self.createdMembershipID = -1678#     def setup(self):679#         # Report if there any current leader memberships under my name to avoid false negatives.680#         # If I am currently a director of the club, this test should fail.681#         response = api.get(self.session, self.url + 'student/' + str(my_id_number))682#         try:683#             for membership in response.json():684#                 if(membership['ActivityCode'] == activity_code and membership['Participation'] in LEADERSHIP_POSITIONS):685#                     self.log_error('False Negative: This user is a leader for the activity we are testing.')686#         except (KeyError, ValueError):687#             self.log_error('Error in setup for {0}'.format(self.test_name))                688#         self.predata = {689#             'ACT_CDE': activity_code,690#             'SESS_CDE' : '201501',691#             'ID_NUM': my_id_number,692#             'PART_CDE':'GUEST',693#             'BEGIN_DTE':'06/10/2016',694#             'END_DTE':'07/16/2016',695#             'COMMENT_TXT':'Generated the Raymond Test Suite. IGNORE'696#         }697#         r = api.postAsJson(self.session, self.url, self.predata)698#         try:699#             self.createdMembershipID = r.json()['MEMBERSHIP_ID']700#             self.data = {701#                 'MEMBERSHIP_ID' : self.createdMembershipID,702#                 'ACT_CDE': activity_code,703#                 'SESS_CDE' : '201501',704#                 'ID_NUM': my_id_number,705#                 'PART_CDE':'DIREC', #This is not allowed706#                 'BEGIN_DTE':'02/10/2016',707#                 'END_DTE':'07/16/2016',708#                 'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'709#                 }710#         except (KeyError, ValueError):711#             self.log_error('Error in setup for {0}'.format(self.test_name))712#     def test(self):713#         response = api.putAsJson(self.session, self.url + str(self.createdMembershipID),self.data)714#         if not response.status_code == 401:715#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))716#         if response.text:717#             self.log_error('Expected empty response body, got {0}.'.format(response.text))718#     def cleanup(self):719#         if self.createdMembershipID < 0:720#             self.log_error('Expected valid membership ID, got {0}.'.format(self.createdMembershipID))721#         else:722#             d = api.delete(self.session, self.url + str(self.createdMembershipID))723#             if not d.status_code == 200:724#                 self.log_error('Error in cleanup for {0}'.format(self.test_name))725# class delete_membership_for_someone_else___regular_member(TestCase):726#     """ Verify that a regular member cannot delete someone else's membership.727    728#     Pre-Conditions:729#     Valid Authentication Header730#     Authenticated as Regular Member731#     Expectations:732#     Endpoint -- api/memberships/:id733#     Expected Status Code -- 401 Unauthorized.734#     Expected Response Body -- Empty.735#     """736#     def __init__(self, session=None):737#         super().__init__(session)738#         self.url = hostURL + 'api/memberships/'739#         self.membershipID = -1740#     def setup(self):741#         # Get all memberships and pick first one that doesn't belong to me742#         response = api.get(self.session, self.url)743#         try:744#             memberships = response.json()745#         except ValueError:746#             self.log_error('Error in setup for {0}. Expected a json response, got {1}.'.format(self.test_name, response.text))747#         else:748#             try:749#                 for membership in memberships:750#                     if not membership['IDNumber'] == str(my_id_number):751#                         self.membershipID = membership['MembershipID']752#                         break753#             except KeyError:754#                 self.log_error('Error in setup for {0}. Expected MembershipID in json response, got {1}.'.format(self.test_name, response.json()))755#     def test(self):756#         response = api.delete(self.session, self.url + str(self.membershipID))757#         if not response.status_code == 401:758#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))759#         if response.text:760#             self.log_error('Expected empty response body, got {0}.'.format(response.text))761    762# class delete_valid_membership___regular_member(TestCase):763#     """ Verify that a regular member can delete their membership.764#     Pre-Conditions:765#     Valid Authentication header.766#     Authenticated as regular member for the activity.767#     Expectations:768#     Endpoint -- api/memberships/769#     Expected Status Code -- 200 OK770#     Expected Response Content -- The membership resource that wad delteed.771#     """772#     def __init__(self , session=None):773#         super().__init__(session)774#         self.url = hostURL + 'api/memberships/'775#         self.createdMembershipID = -1776#     def setup(self):777#         # Create a Memerships that we'll eventually delete778#         self.predata = {779#             'ACT_CDE': activity_code,780#             'SESS_CDE' : '201501',781#             'ID_NUM': my_id_number,782#             'PART_CDE':'GUEST',783#             'BEGIN_DTE':'06/10/2016',784#             'END_DTE':'07/16/2016',785#             'COMMENT_TXT':'Generated the Raymond Test Suite. IGNORE'786#         }787#         r = api.postAsJson(self.session, self.url, self.predata)788#         try:789#             self.createdMembershipID = r.json()['MEMBERSHIP_ID']790#         except ValueError:791#             self.log_error('Error doing setup for {0}'.format(self.test_name))792#     def test(self):793#         response = api.delete(self.session, self.url + str(self.createdMembershipID))794#         if not response.status_code == 200:795#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))796#         try:797#             response.json()798#         except ValueError:799#             self.log_error('Expected Json response body, got {0}.'.format(response.text))800#         else:801#             if not ('MEMBERSHIP_ID' in response.json()):802#                 self.log_error(self.log_error('Expected MEMBERSHIP_ID in response, got {0}.'.format(response.json())))803# # # # # # # # # # # # # # #804# # MEMBERSHIP REQUEST TESTS #805# # # # # # # # # # # # # # #806class get_all_membership_requests___regular_member(TestCase):807    """ Verify that a regular member cannot access all membership requests.808    Pre-Conditions:809    Valid Authentication Header.810    Authenticated as regular member.811    Expectations:812    Endpoint -- api/requests/813    Expected Status Code -- 401 Unauthorized814    Expected Response Content -- Empty response content.815    """816    def __init__(self , session=None):817        super().__init__(session)818        self.url = hostURL + 'api/requests/'819    def test(self):820        response = api.get(self.session, self.url)821        if not response.status_code == 401:822            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))823        if response.text:824            self.log_error('Expected empty response body, got {0}.'.format(response.text))825# class get_my_membership_request___regular_member(TestCase):826#     """ Verify that a member can create a request and view it.827#     Pre-Conditions:828#     Valid Authentication Header829#     Authenticated as regular member830#     Expectations:831#     Endpoint -- api/requests/:id832#     Expected Status Code -- 200 OK833#     Expected Response Body -- Json with my membership Request.834#     """835#     def __init__(self,SSLVerify=False, session=None):836#         super().__init__(session)837#         self.url = hostURL + 'api/requests/'838#         self.requestID = -1839#     def setup(self):840#         self.predata = {841#             'SESS_CDE' : '201501',842#             'ACT_CDE' : activity_code,843#             'ID_NUM' : random_id_number,844#             'DATE_SENT' : '07/06/2016',845#             'PART_CDE' : 'MEMBR',846#             'COMMENT_TXT' : 'Generated by the Raymond Test Suite. IGNORE'847#         }848#         r = api.postAsJson(self.session, self.url, self.predata)849#         try:850#             self.requestID = r.json()['REQUEST_ID']851#         except (KeyError, ValueError):852#             self.log_error('Error in setup for {0}.'.format(self.test_name))853#     def test(self):854#         response = api.get(self.session, self.url + str(self.requestID))855#         if not response.status_code == 200:856#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))857#         try:858#             response.json()859#         except ValueError:860#             self.log_error('Expected Json response body, got {0}.'.format(response.text))861#         else:862#             if not ('RequestID' in response.json()):863#                 self.log_error('Expected RequestID in response, got {0}.'.format(response.json()))864#     def cleanup(self):865#         if self.requestID < 0: # ID is still -1866#             self.log_error('Expected valid request id, got {0}.'.format(self.requestID))867#         else:868#             d = api.delete(self.session, self.url + str(self.requestID))869#             if not d.status_code == 200:870#                 self.log_error('Error in cleanup for {0}'.format(self.test_name))871# class get_all_my_membership_requests___regular_member(TestCase):872#     """ Verify that a regular member can retrieve all requests belonging to them.873    874#     Pre-Conditions:875#     Valid Authentication Header.876#     Authenticated as regular member.877#     Expectations:878#     Endpoint -- api/requests/student/:id879#     Expected Status Code -- 200 OK880#     Expected Response Body -- A list of membership requests 881#     """882#     def __init__(self , session=None):883#         super().__init__(session)884#         self.url = hostURL + 'api/requests/student/' + str(my_id_number)885#     def test(self):886#         response = api.get(self.session, self.url)887#         if not response.status_code == 200:888#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))889#         try:890#             response.json()891#         except ValueError:892#             self.log_error('Expected Json response body, got {0}.'.format(response.text))893#         else:894#             if not (type(response.json()) is list):895#                 self.log_error('Expected list, got {0}.'.format(response.json()))896    897class get_membership_requests_for_someone_else___regular_member(TestCase):898    """ Verify that a regular member cannot get the membership requests of somone else.899    900    Pre-Conditions:901    Valid Authentication Header902    Authenticated as regular member903    Expectations:904    Endpoint -- api/requests/student/:id905    Expected Status Code -- 401 Unauthorized906    Expected Response Body -- Empty907    """908    def __init__(self , session=None):909        super().__init__(session)910        self.url = hostURL + 'api/requests/student/' + str(random_id_number)911    def test(self):912        response = api.get(self.session, self.url)913        if not response.status_code == 401:914            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))915        if response.text:916            self.log_error('Expected empty response bodty, got {0}.'.format(response.text))917class get_membership_requests_for_activity___regular_member(TestCase):918    """ Verify that a regular member can't access memberships requests for activity.919    Pre-Conditions:920    Valid Authentication Header921    Authenticated as regular member922    Expectations:923    Endpoint -- api/requests/activity/:id924    Expected Status Code -- 401 Unauthorized925    Expected Response Body -- Empty926    """927    def __init__(self , session=None):928        super().__init__(session)929        self.url = hostURL + 'api/requests/activity/' + activity_code930    def setup(self):931        # Report if there any current memberships for the Club to avoid false negatives.932        # If I am currently a director of the club, this test should fail.933        response = api.get(self.session, hostURL + 'api/memberships/student/' + str(my_id_number))934        try:935            for membership in response.json():936                if(membership['ActivityCode'] == activity_code and membership['Participation'] in LEADERSHIP_POSITIONS):937                    self.log_error('False Negative: This user is a leader for the activity we are testing.')938        except ValueError:939            self.log_error('We did not get a json response back during setup.')    940    def test(self):941        response = api.get(self.session, self.url)942        if not response.status_code == 401:943            self.log_error('We did not get 401 Unauthorized.')944        if response.text:945            self.log_error('We got a non-empty response body.')946class post_valid_membership_request___regular_member(TestCase):947    """ Verify that we can create a membership request.948    Pre-conditions:949    Valid Authentication Header.950    Expectations:951    Endpoints -- api/requests/952    Expected Status Cpde -- 201 Created.953    Expected Content -- A Json object with a REQUEST_ID attribute.954    """955    def __init__(self , session=None):956        super().__init__(session)957        self.url = hostURL + 'api/requests/'958        self.data = {959            'ACT_CDE': activity_code,960            'SESS_CDE' : '201501',961            'ID_NUM': my_id_number,962            'PART_CDE':'MEMBR',963            'DATE_SENT' : '07/06/2016',964            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'965            }966        # We will get the actual id when we post.967        # Setting it -1 to check later that we got an id from the post.968        self.requestID = -1969    def test(self):970        response = api.postAsJson(self.session, self.url, self.data)971        if not response.status_code == 201:972            self.log_error('Expected 201 Created, got {0}.'.format(response.status_code))973        try:974            response.json()975        except ValueError:976            self.log_error('Expected json response, got {0}.'.format(response.text))977        else:978            try:979                self.requestID = response.json()['REQUEST_ID']980            except KeyError:981                self.log_error('Expected REQUEST_ID in response body, got {0}.'.format(response.json()))982    def cleanup(self):983        # We try to delete the request we created984        if self.requestID < 0: # The creation wasn't successful985            self.log_error('Could not delete request with id of {0}'.format(self.requestID))986        else:987            d = api.delete(self.session, self.url + str(self.requestID))988            if not d.status_code == 200:989                self.log_error('There was a problem performing cleanup for {0}'.format(self.test_name))990class post_membership_request_for_someone_else___regular_member(TestCase):991    """ Verify that we can't create a membership request for someone else.992    Pre-conditions:993    Valid Authentication Header.994    Authenticated as Regular member.995    Expectations:996    Endpoints -- api/requests/997    Expected Status Code -- 401 Unauthorized.998    Expected Response Content -- Empty Response.999    """1000    def __init__(self , session=None):1001        super().__init__(session)1002        self.url = hostURL + 'api/requests/'1003        self.data = {1004            'ACT_CDE': activity_code,1005            'SESS_CDE' : '201501',1006            'ID_NUM': random_id_number,1007            'PART_CDE':'MEMBR',1008            'DATE_SENT' : '07/06/2016',1009            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'1010            }1011        # We will get the actual id when we post.1012        self.requestID = -11013    def test(self):1014        response = api.post(self.session, self.url, self.data)1015        if not response.status_code == 401:1016            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1017        if response.text:1018            self.log_error('Expected empty response, got {0}.'.format(response.text))1019        if response.status_code == 201:1020            self.log_error('Will try to delete resource...')1021            try:1022                self.requestID = response.json()['REQUEST_ID']1023            except (ValueError, KeyError):1024                self.log_error('Error in test for {0}.'.format(self.test_name))1025                1026    def cleanup(self):1027        # If the creation went through, let's delete the resource1028        if self.requestID >=  0:1029            self.log_error('Request {0} was created even though it was supposed to be unauthorized'.format(self.requestID))1030            d = api.delete(self.session, self.url + str(self.requestID))1031            if  d.status_code == 200:            1032                self.log_error('Unauthorized resource deleted.')1033            else:1034                self.log_error('Error deleting unauthorized resource.')1035# class put_membership_request___regular_member(TestCase):1036#     """ Verify that regular member can't edit a membership request.1037#     Pre-Conditions:1038#     Valid Authorization Header.1039#     Authenticated as regular member.1040#     Expectations:1041#     Endpoint -- api/requests/:id1042#     Expected Status Code -- 401 Unauthorized1043#     Expected Response Body -- Empty1044#     """1045#     def __init__(self , session=None):1046#         super().__init__(session)1047#         self.url = hostURL + '/api/requests/'1048#         self.predata = {}1049#         self.data = {}1050#         self.requestID = -11051#     def setup(self):1052#         self.predata = {1053#             'ACT_CDE': activity_code,1054#             'SESS_CDE' : '201501',1055#             'ID_NUM': my_id_number,1056#             'PART_CDE':'MEMBR',1057#             'DATE_SENT' : '07/06/2016',1058#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'1059#             }1060#         response = api.postAsJson(self.session, self.url, self.predata)1061#         try:1062#             self.requestID = response.json()['REQUEST_ID']1063#             self.data = {1064#                 'REQUEST_ID': self.requestID,1065#                 'ACT_CDE': activity_code,1066#                 'SESS_CDE' : '201501',1067#                 'ID_NUM': my_id_number,1068#                 'PART_CDE':'MEMBR',1069#                 'DATE_SENT' : '07/06/2016',1070#                 'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'            1071#                 }            1072#         except ValueError:1073#             self.log_error('Error performing setup for {0}.'.format(self.test_name))1074#     def test(self):1075#         response = api.putAsJson(self.session, self.url + str(self.requestID), self.data)1076#         if not response.status_code == 401:1077#             self.log_error('We did not get a 401 Unauthorized.')1078#         if response.text:1079#             self.log_error('We got a non-empty response body.')1080#     def cleanup(self):1081#         d = api.delete(self.session, self.url + str(self.requestID))1082#         if not d.status_code == 200:1083#             self.log_error('There was error performing cleanup for {0}.'.format(self.test_name))1084# class approve_my_request___regular_member(TestCase):1085#     """ Verify that a regular member cannot approve his/her request1086#     Pre-Conditions:1087#     Valid Authentication Header1088#     Authenticated as a regular member1089#     Expectations:1090#     Endpoints -- api/requests/:id/approve1091#     Expected Status Code -- 401 Unauthorized1092#     Expected Response Body -- Empty1093#     """1094#     def __init__(self, session=None):1095#         super().__init__(session)1096#         self.url = hostURL + 'api/requests/'1097#         self.data = {}1098#         self.requestID = -11099#     def setup(self):1100#         #Create a memberships request for the trash club.1101#         self.data = {1102#             'ACT_CDE': activity_code,1103#             'SESS_CDE' : '201501',1104#             'ID_NUM': my_id_number,1105#             'PART_CDE':'MEMBR',1106#             'DATE_SENT' : '07/06/2016',1107#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'1108#             }1109#         response = api.postAsJson(self.session, self.url, self.data)1110#         if not response.status_code == 201:1111#             self.log_error('Error in setup for {0}. Expected 201 Created, got {1}.'.format(self.test_name, response.status_code))1112#         try:1113#             response.json()1114#         except ValueError:1115#             self.log_error('Error in setup for {0}. Expected json response, got {1}.'.format(self.test_name, response.text))1116#         else:1117#             try:1118#                 self.requestID = response.json()['REQUEST_ID']1119#             except KeyError:1120#                 self.log_error('Error in setup for {0}. Expected REQUEST_ID in response, got {1}.'.format(self.test_name, response.json()))1121        1122#     def test(self):1123#         response = api.postAsJson(self.session, self.url + str(self.requestID) + '/approve', None)1124#         if not response.status_code == 401:1125#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1126#         if response.text:1127#             self.log_error('Expected empty response body, got {0}.'.format(response.text))1128#     def cleanup(self):1129#         # We try to delete the request we made1130#         if self.requestID < 0: # The request was not successful1131#             self.log_error('Error in cleanup for {0}. Expected valid request ID, got {1}.'.format(self.test_name, self.requestID))1132#         else:1133#             d = api.delete(self.session, self.url + str(self.requestID))1134#             if not d.status_code == 200:1135#                 self.log_error('Error in cleanup for {0}. Expected 200 OK, got {1}.'.format(self.test_name, d.status_code))1136# class deny_my_request___regular_member(TestCase):1137#     """ Verify that a regular member cannot deny his/her request1138#     Pre-Conditions:1139#     Valid Authentication Header1140#     Authenticated as a regular member1141#     Expectations:1142#     Endpoints -- api/requests/:id/deny1143#     Expected Status Code -- 401 Unauthorized1144#     Expected Response Body -- Empty1145#     """1146#     def __init__(self, session=None):1147#         super().__init__(session)1148#         self.url = hostURL + 'api/requests/'1149#         self.data = {}1150#         self.requestID = -11151#     def setup(self):1152#         #Create a memberships request for the trash club.1153#         self.data = {1154#             'ACT_CDE': activity_code,1155#             'SESS_CDE' : '201501',1156#             'ID_NUM': my_id_number,1157#             'PART_CDE':'MEMBR',1158#             'DATE_SENT' : '07/06/2016',1159#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'1160#             }1161#         response = api.postAsJson(self.session, self.url, self.data)1162#         if not response.status_code == 201:1163#             self.log_error('Error in setup for {0}. Expected 201 Created, got {1}.'.format(self.test_name, response.status_code))1164#         try:1165#             response.json()1166#         except ValueError:1167#             self.log_error('Error in setup for {0}. Expected json response, got {1}.'.format(self.test_name, response.text))1168#         else:1169#             try:1170#                 self.requestID = response.json()['REQUEST_ID']1171#             except KeyError:1172#                 self.log_error('Error in setup for {0}. Expected REQUEST_ID in response, got {1}.'.format(self.test_name, response.json()))1173        1174#     def test(self):1175#         response = api.postAsJson(self.session, self.url + str(self.requestID) + '/deny', None)1176#         if not response.status_code == 401:1177#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1178#         if response.text:1179#             self.log_error('Expected empty response body, got {0}.'.format(response.text))1180#     def cleanup(self):1181#         # We try to delete the request we made1182#         if self.requestID < 0: # The request was not successful1183#             self.log_error('Error in cleanup for {0}. Expected valid request ID, got {1}.'.format(self.test_name, self.requestID))1184#         else:1185#             d = api.delete(self.session, self.url + str(self.requestID))1186#             if not d.status_code == 200:1187#                 self.log_error('Error in cleanup for {0}. Expected 200 OK, got {1}.'.format(self.test_name, d.status_code))1188# class delete_my_membership_request___regular_member(TestCase):1189#     """ Verify that regular member can delete his/her membership request1190#     Pre-Conditions:1191#     Valid Authentication Header1192#     Expectations:1193#     Endpoint -- api/requests/:id1194#     Expected Status Code -- 200 OK 1195#     Expected Response Body -- Json object with deleted resource1196#     """1197#     def __init__(self , session=None):1198#         super().__init__(session)1199#         self.url = hostURL + 'api/requests/'1200#         self.predata = {}1201#         self.requestID = -11202#     def setup(self):1203#         self.predata = {1204#             'ACT_CDE': activity_code,1205#             'SESS_CDE' : '201501',1206#             'ID_NUM': my_id_number,1207#             'PART_CDE':'MEMBR',1208#             'DATE_SENT' : '07/06/2016',1209#             'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'1210#             }1211#         response = api.postAsJson(self.session, self.url, self.predata)1212#         try:1213#             self.requestID = response.json()['REQUEST_ID']1214#         except ValueError:1215#             self.log_error('Error on setup for {0}.'.format(self.test_name))1216#     def test(self):1217#         response = api.delete(self.session, self.url + str(self.requestID))1218#         if not response.status_code == 200:1219#             self.log_error('Expected Status Code 200, got {0}.'.format(response.status_code))1220#         if not response.text:1221#             self.log_error('We got an empty response body.')1222#         try:1223#             deletedData = response.json()1224#             deletedDataID = deletedData['REQUEST_ID']1225#         except ValueError:1226#             self.log_error('We did not get a json response.')1227#         else:1228#             if not deletedDataID == self.requestID:1229#                 self.log_error('The resource we deleted is different from the one we created.')1230        1231# # # # # # # # # # #1232# # SUPERVISOR TESTS #1233# # # # # # # # # # #1234# class get_all_supervisors___regular_member(TestCase):1235#     """ Verify that a regular member cannot view all supervisors.1236#     Pre-Conditions:1237#     Valid Authentication Header.1238#     Authenticated as Regular member1239#     Expectations:1240#     Endpoint -- api/supervisors/1241#     Expected Status Code -- 401 Unauthorized1242#     Expected Response Body -- Empty1243#     """1244#     def __init__(self , session=None):1245#         super().__init__(session)1246#         self.url = hostURL + 'api/supervisors/'1247#     def test(self):1248#         response = api.get(self.session, self.url)1249#         if not response.status_code == 401:1250#             self.log_error('Expected Status Code 401 Unauthorized, got {0}.'.format(response.status_code))1251#         if response.text:1252#             self.log_error('Got non-empty response body.')1253# class get_supervisors_for_activity___regular_member(TestCase):1254#     """ Verify that a regular member can get supervisors for activity1255#     Pre-Conditions:1256#     Valid Authentication Header.1257#     Authenticated as regular member.1258#     Expectations:1259#     Endpoint -- api/supervisors/activity/:id1260#     Expected Status Code -- 200 OK1261#     Expected Response Body -- list of json objects1262#     """1263#     def __init__(self , session=None):1264#         super().__init__(session)1265#         self.url = hostURL + 'api/supervisors/activity/' + activity_code1266#     def test(self):1267#         response = api.get(self.session, self.url)1268#         if not response.status_code == 200:1269#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1270#         if not response.text:1271#             self.log_error('Got an empty response body.')1272#         try:1273#             response.json()1274#         except ValueError:1275#             self.log_error('Did not get a json response.')1276#         else:1277#             if not (type(response.json()) is list):1278#                 self.log_error('Did not get a list.')1279# # class post_supervisor___regular_member(TestCase):1280# #     """ verify that a regular member can't add a supervisor1281# #     Pre-Conditions:1282# #     Valid Authentication Header.1283# #     Authenticated as a regular member1284# #     Expectations:1285# #     Endpoint -- api/supervisors/1286# #     Expected Status Code -- 401 Unauthorized1287# #     Expected Response Body -- Empty1288# #     """1289# #     def __init__(self , session=None):1290# #         super().__init__(session)1291# #         self.url = hostURL + 'api/supervisors/'1292# #         self.data = {}1293# #         self.supervisorID = -11294# #     def setup(self):1295# #         self.data = {1296# #             'ID_NUM' : my_id_number,1297# #             'ACT_CDE' : activity_code,1298# #             'SESS_CDE' : '201501'1299# #             }1300# #     def test(self):1301# #         response = api.postAsJson(self.session, self.url, self.data)1302# #         if not response.status_code == 401:1303# #             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1304# #         if response.text:1305# #             self.log_error('Expected empty response body, got {0}.'.format(response.text))1306# #         if response.status_code == 201:1307# #             self.log_error('Delete the unauthorized resource...')1308# #             try:1309# #                 self.supervisorID = response.json()['SUP_ID']1310# #             except ValueError:1311# #                 self.log_error('Problem accessing compromised resource.')1312        1313# #     def cleanup(self):1314# #         if self.supervisorID > 0: # Unauthorized creation took place1315# #             d = api.delete(self.session, self.url + str(self.supervisorID))1316# #             if response.status_code == 200: # Deletion was not successful1317# #                 self.log_error('Unauthorized resource deleted.')1318# #             else:1319# #                 self.log_error('Error deleting Unauthorized resource.')1320# class put_supervisor___regular_member(TestCase):1321#     """ Verify that a regular member can't edit an existing supervisor1322#     Pre-Conditions:1323#     Valid Authentication Header.1324#     Authenticated as regular member.1325#     Expectations:1326#     Endpoint -- api/supervisors/:id1327#     Expected Status Code -- 401 Unauthorized1328#     Expected Response Body -- Empty1329#     """1330#     def __init__(self , session=None):1331#         super().__init__(session)1332#         # Trying to update a random supervisor1333#         self.url = hostURL + 'api/supervisors/'1334#         tempID = 01335#         response = api.get(self.session, self.url + str(tempID))1336#         # Iterate until we find an actual supervisor.1337#         while response.status_code == 404:1338#             tempID = tempID + 11339#             response = api.get(self.session, self.url + str(tempID))1340#         self.data = {1341#             'SUP_ID' : tempID,1342#             'ACT_CDE' : activity_code,1343#             'SESS_CDE' : '201501',1344#             'ID_NUM' : my_id_number1345#         }1346#         self.supervisorID = -11347        1348#     def test(self):1349#         response = api.putAsJson(self.session, self.url + str(self.data['SUP_ID']), self.data)1350#         if not response.status_code == 401:1351#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1352#         if response.text:1353#             self.log_error('Expected empty response body, got {0}.'.format(response.text))1354#         if response.status_code == 200: # If supervisor was updated1355#             self.log_error('Unauthorized update. Attempting to delete...')1356#             try:1357#                 self.supervisorID = response.json()['SUP_ID']1358#             except (ValueError, KeyError):1359#                 self.log_error('Error accessing compromised supervisor.')1360                        1361#     def cleanup(self):1362#         if self.supervisorID > 0: # The supervisor was updated.1363#             d = api.delete(self.session, self.url)1364#             if d.status_code == 200:1365#                 self.log_error('Compromised resource deleted.')1366#             else:1367#                 self.log_error('Unable to delete compromised resource.')1368# class delete_supervisor___regular_member(TestCase):1369#     """ Verify that regular member can't delete a supervisor 1370#     Pre-Conditions:1371#     Valid Authentication Header1372#     Authenticated as regular member1373#     Expectations:1374#     Endpoint -- api/supervisors/:id1375#     Expected Status Code -- 401 Unauthorized1376#     Expected Response Body -- Empty1377#     """1378#     def __init__(self , session=None):1379#         super().__init__(session)1380#         self.url = hostURL + 'api/supervisors/2'1381#     def test(self):1382#         response = api.delete(self.session, self.url)1383#         if not response.status_code == 401:1384#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1385#         if response.text:1386#             self.log_error('Expected empty body, got {0}.'.format(response.text))1387# # # # # # # # # #1388# # ACTIVITY TESTS #1389# # # # # # # # # #1390# class get_all_activities___regular_member(TestCase):1391#     """ Verify that a regular member can get all activities.1392#     Pre-Conditions:1393#     Valid Authentication Header.1394#     Expectations:1395#     Endpoint -- api/activities/1396#     Expected Status Code -- 200 OK1397#     Expected Response Body -- List of activities1398#     """1399#     def __init__(self , session=None):1400#         super().__init__(session)1401#         self.url = hostURL + 'api/activities/'1402#     def test(self):1403#         response = api.get(self.session, self.url)1404#         if not response.status_code == 200:1405#             self.log_error('Expected 200 OK , got {0}.'.format(response.status_code))1406#         try:1407#             response.json()1408#         except ValueError:1409#             self.log_error('Expected Json response body, got {0}.'.format(respons.text))1410#         else:1411#             if not (type(response.json()) is list):1412#                 self.log_error('Expected list, got {0}.'.format(response.json()))1413# class get_one_activity___regular_member(TestCase):1414#     """ Verify that a regular member can a single activity.1415#     Pre-Conditions:1416#     Valid Authentication Header1417#     Expectations:1418#     Endpoint -- api/activities1419#     Expected Status Code -- 200 OK1420#     Expected Response Body -- Json object with activity resource1421#     """1422#     def __init__(self , session=None):1423#         super().__init__(session)1424#         self.url = hostURL + 'api/activities/' + activity_code1425#     def test(self):1426#         response = api.get(self.session, self.url)1427#         if not response.status_code == 200:1428#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1429#         try:1430#             response.json()1431#         except ValueError:1432#             self.log_error('Expected Json response body, got {0}.'.format(response.text))1433#         else:1434#             try:1435#                 response.json()['ActivityCode']1436#             except KeyError:1437#                 self.log_error('Expected ACT_CDE in response, got {0}.'.format(response.json()))1438# class get_activities_for_session___regular_member(TestCase):1439#     """ Verify that a regular member can get all activities for specific session.1440#     Pre-Conditions:1441#     Valid Authentication Header1442#     Expectations:1443#     Endpoint -- api/activities/session/:id1444#     Expected Status Code -- 200 OK 1445#     Expected Response Body -- list of activities1446#     """1447#     def __init__(self , session=None):1448#         super().__init__(session)1449#         self.url = hostURL + 'api/activities/session/201501'1450#     def test(self):1451#         response = api.get(self.session, self.url)1452#         if not response.status_code == 200:1453#             self.log_error('Expected 200 OK, got {0}.'.format(response.json()))1454#         try:1455#             response.json()1456#         except ValueError:1457#             self.log_error('Expected Json response body, got {0}.'.format(response.json()))1458#         else:1459#             if not (type(response.json()) is list):1460#                 self.log_error('Expected list, got {0}.'.format(response.json()))1461# class update_activity___regular_member(TestCase):1462#     """ Verify that a regular member cannot update activity information.1463#     Pre-Conditions:1464#     Valid Authentication Header1465#     Authenticated as regular member1466#     Expectations:1467#     Endpoints -- api/activities/:id1468#     Expected Status Code -- 401 Unauthorized1469#     Expected Response Body -- Empty1470#     """1471#     def __init__(self, session=None):1472#         super().__init__(session)1473#         self.url = hostURL + 'api/activities/' + activity_code1474#         self.data = {}1475#     def setup(self):1476#         # Report if there any current memberships for the Club to avoid false negatives.1477#         # If I am currently a director of the club, this test should fail.1478#         response = api.get(self.session, hostURL + 'api/memberships/student/' + str(my_id_number))1479#         try:1480#             for membership in response.json():1481#                 if(membership['ActivityCode'] == activity_code and membership['Participation'] in LEADERSHIP_POSITIONS):1482#                     self.log_error('False Negative: This user is a leader for the activity we are testing.')1483#         except ValueError:1484#             self.log_error('We did not get a json response back during setup.')1485#         else:1486#             self.data = {1487#                 "ACT_CDE" : activity_code,1488#                 "ACT_IMG" : "HACKING INTO SYSTEM AS REGULAR MEMBER",1489#                 "ACT_BLURB" : "HACKING INTO SYSTEM AS REGULAR MEMBER",1490#                 "ACT_URL" : "HACKING INTO SYSTEM AS REGULAR MEMBER"1491#             }1492#     def test(self):1493#         response = api.putAsJson(self.session, self.url , self.data)1494#         if not response.status_code == 401:1495#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1496#         if response.text:1497#             self.log_error('Expected empty response body, got {0}.'.format(response.text))1498#     def cleanup(self):1499#         # Don't delete activity even if it was updated. That's too drastic.1500#         pass1501    1502#################1503# PROFILE TESTS #1504#################1505class get_my_profile___regular_member(TestCase):1506    """ Verify that a regular member can get a profile of the current user1507    1508    Pre-Conditions:1509    Valid Authentication header1510    Expectaions:1511    Endpoint -- api/profiles/1512    Expected Status Code -- 200 OK1513    Expected Respones Body -- A json object of information on own profile1514    """1515    def __init__(self, session=None):1516        super().__init__(session)1517        self.url = hostURL + 'api/profiles/'1518    def test(self):1519         response = api.get(self.session, self.url)1520         if not response.status_code == 200:1521             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1522         try:1523             response.json()1524         except ValueError:1525             self.log_error('Expected Json response body, got {0}.'.format(response.text))1526class get_profile_by_username___regular_member(TestCase):1527    """ Verify that a regular member can get another person's profile, filtering private information1528    Pre-Conditions:1529    Valid Authentication Header1530    Expectations:1531    Endpoint -- api/profiles/:username1532    Expected Status Code -- 200 Ok1533    Expected Response Body -- list of information on the user without private info1534    """1535    def __init__(self , session=None):1536        super().__init__(session)1537        self.url = hostURL + 'api/profiles/' + username1538    def test(self):1539        response = api.get(self.session, self.url)1540        if not response.status_code == 200:1541            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1542        try:1543            response.json()1544        except ValueError:1545            self.log_error('Expected Json response body, got{0}.'.format(response.text))1546class get_college_role_by_username___regular_member(TestCase):1547    """ Verify that a regular member can get a college role of the current user1548    Pre-Conditions:1549    Valid Authentication Header1550    Expectations:1551    Endpoint -- api/profiles/role/:username1552    Expected Status Code -- 200 Ok1553    Expected Response Body -- list of information on the user without private info1554    """1555    def __init__(self , session=None):1556        super().__init__(session)1557        self.url = hostURL + 'api/profiles/role/' + username1558    def test(self):1559        response = api.get(self.session, self.url)1560        if not response.status_code == 200:1561            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1562        try:1563            response.json()1564        except ValueError:1565            self.log_error('Expected Json response body, got{0}.'.format(response.text))1566class get_image___regular_member(TestCase):1567    """ Verify that a regular member can get a profile image of the current user1568    Pre-Conditions:1569    Valid Authentication Header1570    Expectations:1571    Endpoint -- api/profiles/image1572    Expected Status Code -- 200 Ok1573    Expected Response Body -- image path of the current user1574    """1575    def __init__(self , session=None):1576        super().__init__(session)1577        self.url = hostURL + 'api/profiles/image/'1578    def test(self):1579        response = api.get(self.session, self.url)1580        if not response.status_code == 200:1581            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1582        try:1583            response.json()1584        except ValueError:1585            self.log_error('Expected Json response body, got{0}.'.format(response.text))1586class get_image_by_username___regular_member(TestCase):1587    """ Verify that a regular member can get a profile image of someone else1588    Pre-Conditions:1589    Valid Authentication Header1590    Expectations:1591    Endpoint -- api/profiles/image/:username1592    Expected Status Code -- 200 Ok1593    Expected Response Body -- image path of another user1594    """1595    def __init__(self , session=None):1596        super().__init__(session)1597        self.url = hostURL + 'api/profiles/image/' + username1598    def test(self):1599        response = api.get(self.session, self.url)1600        if not response.status_code == 200:1601            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1602        try:1603            response.json()1604        except ValueError:1605            self.log_error('Expected Json response body, got{0}.'.format(response.text))1606        1607# Often does not PASS due to permission issue to the image columns in WebSQL/CCT databases1608class post_image___regular_member(TestCase):1609    """ Verify that a user can upload a profile image1610    Pre-Conditions:1611    Authenticated as Regular member.1612    Expectations:1613    Endpoint -- api/profiles/image/1614    Expected Status Code -- 200 OK 1615    Expected Content -- 1616    """1617    def __init__(self, session=None):1618        super().__init__(session)1619        self.url = hostURL + 'api/profiles/image/'1620        self.data = {1621            'ID': my_id_number,1622            'FILE_PATH': #File path of the image on the user's computer,1623            'FILE_NAME': #Barcode ID of the user1624        }1625    1626    def test(self):1627        response = api.post(self.session, self.url, self.data)1628        if not response.status_code == 200:1629            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1630            1631    def cleanup(self):1632        self.data = {1633            'ID': my_id_number,1634            'FILE_PATH': None,1635            'FILE_NAME': None1636        }1637        d = api.post(self.session, self.url + 'reset/', self.data)1638        if not d.status_code == 200:1639            self.log_error('There was a problem performing cleanup for {0}'.format(self.test_name))1640class post_reset_image___regular_member(TestCase):1641    """ Verify that a user can reset a profile image1642    Pre-Conditions:1643    Authenticated as Regular member.1644    Expectations:1645    Endpoint -- api/profiles/image/reset/1646    Expected Status Code -- 200 OK 1647    Expected Content -- 1648    """1649    def __init__(self, session=None):1650        super().__init__(session)1651        self.url = hostURL + 'api/profiles/image/reset/'1652        self.data = {1653            'ID': my_id_number,1654            'FILE_PATH': None,1655            'FILE_NAME': None1656        }1657        self.requestID = -11658    def test(self):1659        response = api.post(self.session, self.url, self.data)1660        if not response.status_code == 200:1661            self.log_error('Expected 200 Created, got {0}.'.format(response.status_code))1662            1663class put_social_media_links___regular_member(TestCase):1664    """ Verify that a user can add and edit social media links1665    Pre-Conditions:1666    Authenticated as Regular member.1667    Expectations:1668    Endpoint -- api/profiles/:type1669    Expected Status Code -- 200 OK1670    Expected Content --1671    """1672    # Any other SNS names can be used to replace 'facebook' to test1673    def __init__(self, session=None):1674        super().__init__(session)1675        self.url = hostURL + 'api/profiles/facebook/'1676        self.data = {1677            'facebook': #'URL of any SNS including the domain name'1678        }1679        1680    def test(self):1681        response = api.put(self.session, self.url, self.data)1682        if not response.status_code == 200:1683            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1684        1685    def cleanup(self):1686        self.resetdata = {1687            'facebook': ''1688        }1689        d = api.put(self.session, self.url, self.resetdata)1690        if not d.status_code == 200:1691            self.log_error('There was a problem performing cleanup for {0}'.format(self.test_name))1692class put_mobile_privacy___regular_member(TestCase):1693    """ Verify that a user can add and edit social media links1694    Pre-Conditions:1695    Authenticated as Regular member.1696    Expectations:1697    Endpoint -- api/profiles/mobile_privacy/:value (Y or N)1698    Expected Status Code -- 200 OK1699    Expected Content --1700    """1701    def __init__(self, session=None):1702        super().__init__(session)1703        self.url = hostURL + 'api/profiles/mobile_privacy/Y/'1704        self.data = {1705            'IsMobilePhonePrivate': 'Y'1706        }1707        1708    def test(self):1709        response = api.put(self.session, self.url, self.data)1710        if not response.status_code == 200:1711            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1712        1713    def cleanup(self):1714        self.resetdata = {1715            'IsMobilePhonePrivate': 'N'1716        }1717        d = api.put(self.session, self.url, self.resetdata)1718        if not d.status_code == 200:1719            self.log_error('There was a problem performing cleanup for {0}'.format(self.test_name))1720class put_image_privacy___regular_member(TestCase):1721    """ Verify that a user can add and edit social media links1722    Pre-Conditions:1723    Authenticated as Regular member.1724    Expectations:1725    Endpoint -- api/profiles/image_privacy/:value (Y or N)1726    Expected Status Code -- 200 OK1727    Expected Content --1728    """1729    def __init__(self, session=None):1730        super().__init__(session)1731        self.url = hostURL + 'api/profiles/image_privacy/Y/'1732        self.data = {1733            'show_pic': 'Y'1734        }1735        1736    def test(self):1737        response = api.put(self.session, self.url, self.data)1738        if not response.status_code == 200:1739            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1740        1741    def cleanup(self):1742        self.resetdata = {1743            'show_pic': 'N'1744        }1745        d = api.put(self.session, self.url, self.resetdata)1746        if not d.status_code == 200:1747            self.log_error('There was a problem performing cleanup for {0}'.format(self.test_name))1748# # # # # # # # # # # # # 1749# # PARTICIPATIONS TEST #1750# # # # # # # # # # # # #1751# class get_all_participations___regular_member(TestCase):1752#     """ Verify that a regular member can get all participations1753#     Pre-Conditions:1754#     Valid Authentication Header1755#     Expectations:1756#     Endpoint -- api/participations1757#     Expected Status Code -- 200 OK1758#     Expected Response Body -- List of all participations1759#     """1760#     def __init__(self , session=None):1761#         super().__init__(session)1762#         self.url = hostURL + 'api/participations'1763#     def test(self):1764#         response = api.get(self.session, self.url)1765#         if not response.status_code == 200:1766#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1767#         try:1768#             response.json()1769#         except ValueError:1770#             self.log_error('Expected Json response body, got {0}.'.format(response.text))1771#         else:1772#             if not (type(response.json()) is list):1773#                 self.log_error('Expected list, got {0}.'.format(response.json()))1774# class get_one_participation___regular_member(TestCase):1775#     """ Verify that a regular member can get a specific participation object1776#     Pre-Conditions:1777#     Valud Authentication Header1778#     Expectations:1779#     Endpoint -- api/participations1780#     Expected Status Code -- 200 OK1781#     Expected Response Body -- A participation object1782#     """1783#     def __init__(self , session=None):1784#         super().__init__(session)1785#         self.url = hostURL + 'api/participations/MEMBR'1786#     def test(self):1787#         response = api.get(self.session, self.url)1788#         if not response.status_code == 200:1789#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1790#         try:1791#             response.json()1792#         except ValueErrror:1793#             self.log_error('Expected Json response body, got {0}.'.format(response.text))1794#         else:1795#             try:1796#                 response.json()['ParticipationCode']1797#             except KeyError:1798#                 self.log_error('Expected ParticipationCode in response, got {0}.'.format(response.json()))1799# # # # # # # # # #1800# # SESSIONS TEST #1801# # # # # # # # # #1802# class get_all_sessions___regular_member(TestCase):1803#     """ Verify that a regular member can get all session objects1804#     Pre-Conditions:1805#     Valid Authentication Header1806#     Expectations:1807#     Endpoint -- api/sessions/1808#     Expected Status Code -- 200 OK1809#     Expected Response Body -- List of session resources1810#     """1811#     def __init__(self , session=None):1812#         super().__init__(session)1813#         self.url = hostURL + 'api/sessions/'1814#     def test(self):1815#         response = api.get(self.session, self.url)1816#         if not response.status_code == 200:1817#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1818#         try:1819#             response.json()1820#         except ValueError:1821#             self.log_error('Expected Json response body, got {0}.'.format(response.json()))1822#         else:1823#             if not (type(response.json()) is list):1824#                 self.log_error('Expected list, got {0}.'.format(response.json()))1825# class get_one_session___regular_member(TestCase):1826#     """ Verify that a regular member can get a session object1827#     Pre-Conditions:1828#     Valid Authentication Header1829#     Expectations:1830#     Endpoint -- api/sessions/:id1831#     Expected Status Code -- 200 OK1832#     Expected Response Body -- A session resource.1833#     """1834#     def __init__(self , session=None):1835#         super().__init__(session)1836#         self.url = hostURL + 'api/sessions/201501'1837#     def test(self):1838#         response = api.get(self.session, self.url)1839#         if not response.status_code == 200:1840#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1841#         try:1842#             response.json()1843#         except ValueError:1844#             self.log_error('Expected Json response body, got {0}.'.format(response.text))1845#         else:1846#             try:1847#                 response.json()['SessionCode']1848#             except KeyError:1849#                 self.log_error('Expected SessionCode in response, got {0}.'.format(response.json()))1850# # # # # # # # # #1851# # STUDENTS TEST #1852# # # # # # # # # #1853# class get_all_students___regular_member(TestCase):1854#     """ Verify that a regular member cannot list all students1855#     Pre-Conditions:1856#     Valid Authentications Header1857#     Expectations:1858#     Endpoint -- api/students1859#     Expected Status Code -- 401 Unauthorized1860#     Expected Response Body -- Empty1861#     """1862#     def __init__(self , session=None):1863#         super().__init__(session)1864#         self.url = hostURL + 'api/students/'1865#     def test(self):1866#         response = api.get(self.session, self.url)1867#         if not response.status_code == 401:1868#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1869#         if response.text:1870#             self.log_error('Expected empty response body, got {0}.'.format(response.text))1871                1872# class get_student_by_id___regular_member(TestCase):1873#     """ Verify that a regular member can get a student resource1874#     Pre-Conditions:1875#     Valid Authentication Header1876#     Expectations:1877#     Endpoint -- api/students/:id1878#     Expected Status Code -- 200 Ok1879#     Expected Response Body -- A json response with the student resource1880#     """1881#     def __init__(self , session=None):1882#         super().__init__(session)1883#         self.url = hostURL + 'api/students/' + str(random_id_number)1884#     def test(self):1885#         response = api.get(self.session, self.url)1886#         if not response.status_code == 200:1887#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1888#         try:1889#             response.json()1890#         except ValueError:1891#             self.log_error('Expected Json response body, got{0}.'.format(response.text))1892#         else:1893#             try:1894#                 response.json()['StudentID']1895#             except KeyError:1896#                 self.log_error('Expected StudentID in response, got{0}.'.format(response.json()))1897        1898# class get_student_by_email___regular_member(TestCase):1899#     """ Verify that a regular member cannot get a student resource by email.1900#     Pre-Conditions:1901#     Valid Authentication Header1902#     Expectations:1903#     Endpoint -- api/students/email/:email1904#     Expected Status Code -- 200 OK1905#     Expected Response Body -- A json response with the student resource1906#     """1907#     def __init__(self, session=None):1908#         super().__init__(session)1909#         self.url = hostURL + 'api/students/email/ezeanyinabia.anyanwu@gordon.edu/'1910#     def test(self):1911#         response = api.get(self.session, self.url)1912#         if not response.status_code == 200:1913#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1914#         try:1915#             response.json()1916#         except ValueError:1917#             self.log_error('Expected Json response body, got{0}.'.format(response.text))1918#         else:1919#             try:1920#                 response.json()['StudentID']1921#             except KeyError:1922#                 self.log_error('Expected StudentID in response, got{0}.'.format(response.json()))1923            1924# # # # # # # # #1925# # EMAIL  TEST #1926# # # # # # # # #1927# class get_emails_for_activity___regular_member(TestCase):1928#     """ Verify that a regular member cannot get the emails for the members of an activity1929    1930#     Pre-conditions:1931#     Valid Authentication Header1932#     Authenticated as Regular Member1933#     Expectations:1934#     Endpoint -- api/emails/activity/:id1935#     Expected Status Code -- 401 Unauthorized1936#     Expected Response Body -- Empty1937#     """1938#     def __init__(self , session=None):1939#         super().__init__(session)1940#         self.url = hostURL + 'api/emails/activity/' + activity_code1941#     def test(self):1942#         response = api.get(self.session, self.url)1943#         if not response.status_code == 401:1944#             self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1945#         if response.text:1946#             self.log_error('Expected empty response body, got {0}.'.format(response.text))1947    1948# class get_emails_for_leaders___regular_member(TestCase):1949#     """ Verify that a regular member can get the emails for any activity leader1950    1951#     Pre-Conditions:1952#     Valid Authentication header1953#     Expectaions:1954#     Endpoint -- api/emails/activity/:id/leaders1955#     Expected Status Code -- 200 OK1956#     Expected Respones Body -- Json response with a list of emails1957#     """1958#     def __init__(self, session=None):1959#         super().__init__(session)1960#         self.url = hostURL + 'api/emails/activity/' + activity_code + '/leaders'1961#     def test(self):1962#         response = api.get(self.session, self.url)1963#         if not response.status_code == 200:1964#             self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1965#         try:1966#             response.json()1967#         except ValueError:1968#             self.log_error('Expected Json response body, got {0}.'.format(response.text))1969#         else:1970#             try:1971#                 response.json()[0]['Email']1972#             except KeyError:1973#                 self.log_error('Expected Email in response, got{0}.'.format(response.json()))1974if __name__ == '__main__':...gordon_360_tests_leader.py
Source:gordon_360_tests_leader.py  
...66        self.token_payload = { 'username':username, 'password':password, 'grant_type':'password' }67    def test(self):68        response = api.post(self.session, self.url, self.token_payload)69        if not response.status_code == 200:70            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))71        try:72            response.json()73        except ValueError:74            self.log_error('Expected Json, got {0}.'.format(response.text))75        else:76            if not 'access_token' in response.json():77                self.log_error('Expected access token in response, got {0}.'.format(response.json()))78# # # # # # # # # # #79# MEMBERSHIP TESTS #80# # # # # # # # # # #81class get_all_memberships___activity_leader(TestCase):82    """ Test retrieving all membership resources.83    Pre-conditions:84    Valid Authentication Header.85    Expectations:86    Endpoint -- memberships/87    Expected Status code -- 200 Ok88    Expected Content -- List89    """90    def __init__(self, session=None):91        super().__init__(session)92        self.url = hostURL + 'api/memberships/'93    def test(self):94        response = api.get(self.session, self.url)95        if not response.status_code == 200:96            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))97        try:98            response.json()99        except ValueError:100            self.log_error('Expected Json response, got {0}.'.format(response.text))101        else:102            if not (type(response.json()) is list):103                self.log_error('Response was not a list')104class get_one_membership___activity_leader(TestCase):105    """ Retrieve a specific membership resource.106    Pre-conditions:107    Valid Authentication header108    Expectations:109    Endpoint -- api/memberships/:id110    Expected Status Code -- 200 OK111    Expected Content -- A Json Object with a MembershipID attribute.112    """113    def __init__(self , session=None):114        super().__init__(session)115        self.url = hostURL + 'api/memberships/'116        self.membershipID = -1117        118    def setup(self):119        # Find a valid membership id120        response = api.get(self.session, self.url)121        if not response.status_code == 200:122            self.log_error('Error in setup for {0}. Expected 200 OK, got {1}.'.format(self.test_name, response.status_code))123        try:124            response.json()125        except ValueError:126            self.log_error('Error in setup for {0}. Expected json response body, got {1}.'.format(self.test_name, response.text))127        else:128            try:129                self.membershipID = response.json()[0]['MembershipID']130                self.url = self.url + str(self.membershipID)131            except KeyError:132                self.log_error('Error in setup for {0}. Expected MembershipID in response body, got {1}.'.format(self.test_name, self.response.json()))133            134    def test(self):135        response = api.get(self.session, self.url)136        if not response.status_code == 200:137            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))138        try:139            response.json()140        except ValueError:141            self.log_error('Expected Json response body, got {0}.'.format(response.text))142        else:143            if not ('MembershipID' in response.json()):144                self.log_error('Expected MembershipID in jsob object, got {0}.'.format(response.json()))145class get_all_my_memberships___activity_leader(TestCase):146    """ Verify that a regular member can fetch memberships associated with them.147    148    Pre-Conditions:149    Valid Authentication Header.150    Expectations:151    Endpoints -- api/memberships/student/:id152    Expected Status Code -- 200 OK153    Expected Reponse Content -- A list of json objects154    """155    def __init__(self , session=None):156        super().__init__(session)157        self.url = hostURL + 'api/memberships/student/' + str(my_id_number)158    def test(self):159        response = api.get(self.session, self.url)160        if not response.status_code == 200:161            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))162        try:163            response.json()164        except ValueError:165            self.log_error('Expected Json response body, got {0}.'.format(response.text))166        else:167            if not (type(response.json()) is list):168                self.log_error('Response was not a list.')169        170class get_all_memberships_for_someone_else___activity_leader(TestCase):171    """ Verify that regular member can fetch someone else's memberships.172    173    Pre-Conditions:174    Valid Authentication Header.175    Authenticated as regular member.176    Expectations177    Endpoint -- api/memberships/student/:id178    Expected Status Code -- 200 OK.179    Expected Response Content --  A list of json objects.180    """181    def __init__(self , session=None):182        super().__init__(session)183        self.url = hostURL + 'api/memberships/student/' + str(random_id_number)184    def test(self):185        response = api.get(self.session, self.url)186        if not response.status_code == 200:187            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))188        try:189            response.json()190        except ValueError:191            self.log_error('Expected Json response body, got {0}.'.format(response.text))192        else:193            if not (type(response.json()) is list):194                self.log_error('Response was not a list')195    196class get_memberships_for_an_activity___activity_leader(TestCase):197    """ Verify that a regular member can fetch memberships for an activity.198    Pre-Conditions:199    Valid Authentication Header.200    Expectations:201    Endpoint -- api/memberships/activity/:id202    Expected Status Code -- 200 OK203    Expected Response Content -- A list of json Objects.204    """205    def __init__(self , session=None):206        super().__init__(session)207        self.url = hostURL + 'api/memberships/activity/' + activity_code208    def test(self):209        response = api.get(self.session, self.url)210        if not response.status_code == 200:211            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))212        try:213            response.json()214        except ValueError:215            self.log_error('Expected Json response body, got {0}.'.format(response.text))216        else:217            if not (type(response.json()) is list):218                self.log_error('Response was not a list.')219        220    221class get_leader_memberships_for_an_activity___activity_leader(TestCase):222    """ Verify that a regular member can fetch all leaders for a specific activity.223    Pre-Conditions:224    Valid Authentication Header.225    Authenticated as regular member.226    Expectations:227    Endpoint -- api/memberships/activity/:id/leaders228    Expected Status Code -- 200 OK229    Expected Response Content -- A list of json objects.230    """231    def __init__(self , session=None):232        super().__init__(session)233        self.url = hostURL + 'api/memberships/activity/' + activity_code + '/leaders'234    def test(self):235        response = api.get(self.session, self.url)236        if not response.status_code == 200:237            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))238        try:239            response.json()240        except ValueError:241            self.log_error('Expected Json response body, got {0}.'.format(response.text))242        else:243            if not (type(response.json()) is list):244                self.log_error('Response was not a list.')245                246class post_new_guest_membership_for_someone_else__activity_leader(TestCase):247    """ Verify that an activity leader can create a Guest membership for someone.248    Pre-conditions:249    Valid Authentication Header.250    Expectations:251    Endpoints -- api/memberships/252    Expected Statis Cpde -- 201 Created.253    Expected Content -- A Json object with a MEMBERSHIP_ID attribute.254    """255    def __init__(self , session=None):256        super().__init__(session)257        self.url = hostURL + 'api/memberships/'258        self.data = {259            'ACT_CDE': activity_code,260            'SESS_CDE' : '201501',261            'ID_NUM': random_id_number,262            'PART_CDE':'GUEST',263            'BEGIN_DTE':'06/10/2016',264            'END_DTE':'07/16/2016',265            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'266            }267        # We will get the actual id when we post.268        # Setting it -1 to check later that we got an id from the post.269        self.createdMembershipID = -1270    def test(self):271        response = api.postAsJson(self.session, self.url, self.data)272        if not response.status_code == 201:273            self.log_error('Expected 201 Created, got {0}.'.format(response.status_code))274        try:275            response.json()276        except ValueError:277            self.log_error('Expected Json response body, got {0}.'.format(response.text))278        else:279            if not ('MEMBERSHIP_ID' in response.json()):280                self.log_error('Expected MEMBERSHIP_ID in json response, got {0}.'.format(response.json()))281            else:282                self.createdMembershipID = response.json()['MEMBERSHIP_ID']283    def cleanup(self):284        # We try to delete the membership we created285        if self.createdMembershipID < 0: # The creation wasn't successfull286            self.log_error('Expected valid membership ID, got {0}.'.format(self.createdMembershipID))287        else:288            d = api.delete(self.session, self.url + str(self.createdMembershipID))289            if not d.status_code == 200:290                self.log_error('Error in cleanup for {0}'.format(self.test_name))291        return292class post_new_membership_for_someone___activity_leader(TestCase):293    """ Verify that an activity leader can create a membership for someone.294    295    Pre-Conditions:296    Valid Authentication Header297    Authenticated as Activity Leader298    Expectations:299    Endpoint -- api/memberships/300    Expected Status Code -- 200 OK301    Expected Content -- A json response with the created membership302    """303    def __init__(self, session=None):304        super().__init__(session)305        self.url = hostURL + 'api/memberships/'306        self.data = {}307        self.createdMembershipID = -1308    def setup(self):309        # Add a new participant310        self.data = {311            'ACT_CDE': activity_code,312            'SESS_CDE' : '201501',313            'ID_NUM': random_id_number, 314            'PART_CDE':'PART',315            'BEGIN_DTE':'06/10/2016',316            'END_DTE':'07/16/2016',317            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'318            319            }320    def test(self):321        response = api.postAsJson(self.session, self.url, self.data)322        if not response.status_code == 201:323            self.log_error('Expected 201 Created, got {0}.'.format(response.status_code))324        try:325            response.json()326        except ValueError:327            self.log_error('Expected Json response body, got {0}.'.format(response.text))328        else:329            try:330                self.createdMembershipID = response.json()['MEMBERSHIP_ID']331            except KeyError:332                self.log_error('Expected MEMBERSHIP ID in response, got {0}.'.format(response.json()))333            334    def cleanup(self):335        # We try to delete the membership we created336        if self.createdMembershipID < 0: # The creation was not successfull337            self.log_error('Expected valid memberhsip ID, got {0}.'.format(self.createdMembershipID))338        else:339            d = api.delete(self.session, self.url + str(self.createdMembershipID))340            if not d.status_code == 200:341                self.log_error('Error in cleanup for {0}. Expected , got {1}.'.format(self.test_name, d.status_code))342class post_new_leader_membership_for_someone___activity_leader(TestCase):343    """ Verify that an activity leader can assign a new leader344    345    Pre-Conditions:346    Valid Authentication Header347    Authenticated as Activity Leader348    Expectations:349    Endpoint -- api/memberships/350    Expected Status Code -- 200 OK351    Expected Content -- A json response with the created membership352    """353    def __init__(self, session=None):354        super().__init__(session)355        self.url = hostURL + 'api/memberships/'356        self.data = {}357        self.createdMembershipID = -1358    def setup(self):359        # Add a new leader360        self.data = {361            'ACT_CDE': activity_code,362            'SESS_CDE' : '201501',363            'ID_NUM': random_id_number, 364            'PART_CDE':'DIREC',365            'BEGIN_DTE':'06/10/2016',366            'END_DTE':'07/16/2016',367            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'368            }369    def test(self):370        response = api.postAsJson(self.session, self.url, self.data)371        if not response.status_code == 201:372            self.log_error('Expected 201 Created, got {0}.'.format(response.status_code))373        try:374            response.json()375        except ValueError:376            self.log_error('Expected Json response body, got {0}.'.format(response.text))377        else:378            try:379                self.createdMembershipID = response.json()['MEMBERSHIP_ID']380            except KeyError:381                self.log_error('Expected MEMBERSHIP_ID in response, got {0}.'.format(response.json()))382            383    def cleanup(self):        384        # We try to delete the membership we created385        if self.createdMembershipID < 0: # The creation was not successful386            self.log_error('Expected valid memberhsip ID, got {0}.'.format(self.createdMembershipID))387        else:388            d = api.delete(self.session, self.url + str(self.createdMembershipID))389            if not d.status_code == 200:                390                self.log_error('Error in cleanup for {0}. Expected , got {1}.'.format(self.test_name, d.status_code))391        392class put_edited_membership_member_to_leader___activity_leader(TestCase):393    """ Verify that an activity leader can upgrade a normal membership to leader status.394    Pre-Conditions:395    Valid Authentication Header396    Authenticated as Activity Leader397    Expectations:398    Endpoint -- api/memberships/:id399    Expected Status Code -- 200 OK400    Expected Content -- A json object with a MEMBERSHIP_ID attribute.401    """    402    def __init__(self , session=None):403        super().__init__(session)                               404        self.url = hostURL + 'api/memberships/'405        self.data = {}406        self.createdMembershipID = -1407    def setup(self):                               408        # The membership to modify409        self.predata = {410            'ACT_CDE': activity_code,411            'SESS_CDE' : '201501',412            'ID_NUM': random_id_number,413            'PART_CDE':'PART', # Is a participant at first.414            'BEGIN_DTE':'06/10/2016', # Old start date415            'END_DTE':'07/16/2016',416            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'417            }418        r = api.postAsJson(self.session, self.url, self.predata)419        try:                420            self.createdMembershipID = r.json()["MEMBERSHIP_ID"]421            # Updated Data422            self.data = {423                'MEMBERSHIP_ID' : self.createdMembershipID,424                'ACT_CDE': activity_code,425                'SESS_CDE' : '201501',426                'ID_NUM': random_id_number,427                'PART_CDE':'DIREC', # Upgrade him to director.428                'BEGIN_DTE':'02/10/2016', # New start date429                'END_DTE':'07/16/2016',430                'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'431                }432        except (KeyError, ValueError):433            self.log_error('Error in setup for {0}.'.format(self.test_name))434    def test(self):435        response = api.putAsJson(self.session, self.url + str(self.createdMembershipID), self.data)436        if not response.status_code == 200:437            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))438        try:439            response.json()440        except ValueError:441            self.log_error('Expected Json response body, got {0}.'.format(response.text))442        else:443            try:444                response.json()['MEMBERSHIP_ID']445            except KeyError:446                self.log_error('Expected MEMBERSHIP_ID in json response, got {0}.'.format(response.json()))447                448                    449    def cleanup(self):450        # We try to delete the membership we created451        if self.createdMembershipID < 0: # The Creation wasn't successfull. ID is still -1.452            self.log_error('Expected valid membership ID, got {0}.'.format(self.createdMembershipID))453        else:454            d = api.delete(self.session, self.url + str(self.createdMembershipID))455            if not d.status_code == 200:456                self.log_error('Error in cleanup for {0}'.format(self.test_name))457class put_edited_membership_leader_to_member___activity_leader(TestCase):458    """ Verify that an activity leader can demote a leader membership.459    Pre-Conditions:460    Valid Authentication Header461    Authenticated as Activity Leader462    Expectations:463    Endpoint -- api/memberships/:id464    Expected Status Code -- 200 OK465    Expected Content -- A json object with a MEMBERSHIP_ID attribute.466    """    467    def __init__(self , session=None):468        super().__init__(session)                               469        self.url = hostURL + 'api/memberships/'470        self.data = {}471        self.createdMembershipID = -1472    def setup(self):                               473        # The membership to modify474        self.predata = {475            'ACT_CDE': activity_code,476            'SESS_CDE' : '201501',477            'ID_NUM': random_id_number,478            'PART_CDE':'DIREC', # Is a leader at first479            'BEGIN_DTE':'06/10/2016', # Old start date480            'END_DTE':'07/16/2016',481            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'482            }483        r = api.postAsJson(self.session, self.url, self.predata)484        try:                485            self.createdMembershipID = r.json()["MEMBERSHIP_ID"]486            # Updated Data487            self.data = {488                'MEMBERSHIP_ID' : self.createdMembershipID,489                'ACT_CDE': activity_code,490                'SESS_CDE' : '201501',491                'ID_NUM': random_id_number,492                'PART_CDE':'PART', # Demote him to participant493                'BEGIN_DTE':'02/10/2016', # New start date494                'END_DTE':'07/16/2016',495                'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'496                }497        except (KeyError, ValueError):498            self.log_error('Error in setup for {0}.'.format(self.test_name))499    def test(self):500        response = api.putAsJson(self.session, self.url + str(self.createdMembershipID), self.data)501        if not response.status_code == 200:502            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))503        try:504            response.json()505        except ValueError:506            self.log_error('Expected Json response body, got {0}.'.format(response.text))507        else:508            try:                509                response.json()['MEMBERSHIP_ID']510            except KeyError:511                self.log_error('Expected MEMBERSHIP_ID in json response, got {0}.'.format(response.json()))512                513                    514    def cleanup(self):515        # We try to delete the membership we created516        if self.createdMembershipID < 0: # The Creation wasn't successfull. ID is still -1.517            self.log_error('Expected valid membership ID, got {0}.'.format(self.createdMembershipID))518        else:519            d = api.delete(self.session, self.url + str(self.createdMembershipID))520            if not d.status_code == 200:521                self.log_error('Error in cleanup for {0}'.format(self.test_name))522class delete_valid_membership___activity_leader(TestCase):523    """ Verify that a an activity leader can delete someone else's membership.524    Pre-Conditions:525    Valid Authentication header.526    Authenticated as regular member for the activity.527    Expectations:528    Endpoint -- api/memberships/529    Expected Status Code -- 200 OK530    Expected Response Content -- The membership resource that wad delteed.531    """532    def __init__(self , session=None):533        super().__init__(session)534        self.url = hostURL + 'api/memberships/'535        self.createdMembershipID = -1536    def setup(self):537        # Create a Memerships that we'll eventually delete538        self.predata = {539            'ACT_CDE': activity_code,540            'SESS_CDE' : '201501',541            'ID_NUM': random_id_number,542            'PART_CDE':'PART',543            'BEGIN_DTE':'06/10/2016',544            'END_DTE':'07/16/2016',545            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'546        }547        r = api.postAsJson(self.session, self.url, self.predata)548        try:549            self.createdMembershipID = r.json()['MEMBERSHIP_ID']550        except (ValueError, KeyError):551            self.log_error('Error doing setup for {0}'.format(self.test_name))552    def test(self):553        response = api.delete(self.session, self.url + str(self.createdMembershipID))554        if not response.status_code == 200:555            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))556        try:557            response.json()558        except ValueError:559            self.log_error('Expected Json response body, got {0}.'.format(response.text))560        else:561            if not ('MEMBERSHIP_ID' in response.json()):562                self.log_error(self.log_error('Expected MEMBERSHIP_ID in response, got {0}.'.format(response.json())))563# # # # # # # # # # # # # #564# MEMBERSHIP REQUEST TESTS #565# # # # # # # # # # # # # #566class get_all_membership_requests___activity_leader(TestCase):567    """ Verify that an activity leader  cannot access all membership requests.568    Pre-Conditions:569    Valid Authentication Header.570    Authenticated as activity leader.571    Expectations:572    Endpoint -- api/requests/573    Expected Status Code -- 401 Unauthorized574    Expected Response Content -- Empty response content.575    """576    def __init__(self , session=None):577        super().__init__(session)578        self.url = hostURL + 'api/requests/'579    def test(self):580        response = api.get(self.session, self.url)581        if not response.status_code == 401:582            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))583        if response.text:584            self.log_error('Expected empty response body, got {0}.'.format(response.text))585class get_membership_requests_for_activity___activity_leader(TestCase):586    """ Verify that the activity leader can get requests to join the activity he/she is leading587    Pre-Conditions:588    Valid Authentication Header.589    Authenticated as activity leader.590    Expectations:591    Endpoint -- api/requests/activity/:id592    Expected Status Code -- 200 OK593    Expected Response Body -- List of json objects representing the membership requests.594    """595    def __init__(self, session=None):596        super().__init__(session)597        self.url = hostURL + 'api/requests/activity/' + activity_code598    def test(self):599        response = api.get(self.session, self.url)600        if not response.status_code == 200:601            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))602        try:603            response.json()604        except ValueError:605            self.log_error('Expected Json response body, got {0}.'.format(response.text))606        else:607            if not (type(response.json()) is list):608                self.log_error('Expected list in response body, got {0}.'.format(response.json()))609                610class get_membership_requests_for_someone_else___activity_leader(TestCase):611    """ Verify that an activity leader cannot get the membership requests of someone else.612    613    Pre-Conditions:614    Valid Authentication Header615    Authenticated as activity leader616    Expectations:617    Endpoint -- api/requests/student/:id618    Expected Status Code -- 401 Unauthorized619    Expected Response Body -- Empty620    """621    def __init__(self , session=None):622        super().__init__(session)623        self.url = hostURL + 'api/requests/student/' + str(random_id_number)624    def test(self):625        response = api.get(self.session, self.url)626        if not response.status_code == 401:627            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))628        if response.text:629            self.log_error('Expected empty response bodty, got {0}.'.format(response.text))630class get_all_my_membership_requests___activity_leader(TestCase):631    """ Verify that an activity leader can retrieve all requests belonging to them.632    633    Pre-Conditions:634    Valid Authentication Header.635    Authenticated as regular member.636    Expectations:637    Endpoint -- api/requests/student/:id638    Expected Status Code -- 200 OK639    Expected Response Body -- A list of membership requests 640    """641    def __init__(self , session=None):642        super().__init__(session)643        self.url = hostURL + 'api/requests/student/' + str(my_id_number)644    def test(self):645        response = api.get(self.session, self.url)646        if not response.status_code == 200:647            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))648        try:649            response.json()650        except ValueError:651            self.log_error('Expected Json response body, got {0}.'.format(response.text))652        else:653            if not (type(response.json()) is list):654                self.log_error('Expected list, got {0}.'.format(response.json()))655                656class post_valid_membership_request___activity_leader(TestCase):657    """ Verify that we can create a membership request.658    Pre-conditions:659    Valid Authentication Header.660    Expectations:661    Endpoints -- api/requests/662    Expected Status Cpde -- 201 Created.663    Expected Content -- A Json object with a REQUEST_ID attribute.664    """665    def __init__(self , session=None):666        super().__init__(session)667        self.url = hostURL + 'api/requests/'668        self.data = {669            'ACT_CDE': activity_code,670            'SESS_CDE' : '201501',671            'ID_NUM': my_id_number,672            'PART_CDE':'MEMBR',673            'DATE_SENT' : '07/06/2016',674            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'675                    }676        # We will get the actual id when we post.677        # Setting it -1 to check later that we got an id from the post.678        self.requestID = -1679    def test(self):680        response = api.postAsJson(self.session, self.url, self.data)681        if not response.status_code == 201:682            self.log_error('Expected 201 Created, got {0}.'.format(response.status_code))683        try:684            response.json()685        except ValueError:686            self.log_error('Expected json response, got {0}.'.format(response.text))687        else:688            try:689                self.requestID = response.json()['REQUEST_ID']690                if not response.json()['STATUS'] == REQUEST_STATUS_PENDING:691                    self.log_error('Expected Pending status , got {0}.'.format(response.json()))692            except KeyError:693                self.log_error('Expected REQUEST_ID in response body, got {0}.'.format(response.json()))694    def cleanup(self):695        # We try to delete the request we created696        if self.requestID < 0: # The creation wasn't successfull697            self.log_error('Could not delete request with id of {0}'.format(self.requestID))698        else:699            d = api.delete(self.session, self.url + str(self.requestID))700            if not d.status_code == 200:701                self.log_error('There was a problem performing cleanup for {0}'.format(self.test_name))702class post_membership_request_for_someone_else___activity_leader(TestCase):703    """ Verify that we can't create a membership request for someone else.704    Pre-conditions:705    Valid Authentication Header.706    Authenticated as Activity Leader member.707    Expectations:708    Endpoints -- api/requests/709    Expected Status Code -- 401 Unauthorized.710    Expected Response Content -- Empty Response.711    """712    def __init__(self , session=None):713        super().__init__(session)714        self.url = hostURL + 'api/requests/'715        self.data = {716            'ACT_CDE': activity_code,717            'SESS_CDE' : '201501',718            'ID_NUM': random_id_number,719            'PART_CDE':'MEMBR',720            'DATE_SENT' : '07/06/2016',721            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'722            }723        # We will get the actual id when we post.724        self.requestID = -1725    def test(self):726        response = api.post(self.session, self.url, self.data)727        if not response.status_code == 401:728            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))729        if response.text:730            self.log_error('Expected empty response, got {0}.'.format(response.text))731        if response.status_code == 201:732            self.log_error('Will try to delete resource...')733            try:734                self.requestID = response.json()['REQUEST_ID']735            except (ValueError, KeyError):736                self.log_error('Error in test for {0}.'.format(self.test_name))737                738    def cleanup(self):739        # If the creation went through, let's delete the resource740        if self.requestID >=  0:741            self.log_error('Request {0} was created even though it was supposed to be unauthorized'.format(self.requestID))742            d = api.delete(self.session, self.url + str(self.requestID))743            if  d.status_code == 200:            744                self.log_error('Unauthorized resource deleted.')745            else:746                self.log_error('Error deleting unauthorized resource.')747class put_membership_request___activity_leader(TestCase):748    """ Verify that an activity leader can't edit a membership request through a put request.749    Pre-Conditions:750    Valid Authorization Header.751    Authenticated as activity leader.752    Expectations:753    Endpoint -- api/requests/:id754    Expected Status Code -- 401 Unauthorized755    Expected Response Body -- Empty756    """757    def __init__(self , session=None):758        super().__init__(session)759        self.url = hostURL + '/api/requests/'760        self.predata = {}761        self.data = {}762        self.requestID = -1763    def setup(self):764        self.predata = {765            'ACT_CDE': activity_code,766            'SESS_CDE' : '201501',767            'ID_NUM': my_id_number,768            'PART_CDE':'MEMBR',769            'DATE_SENT' : '07/06/2016',770            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'771            }772        response = api.postAsJson(self.session, self.url, self.predata)773        try:774            self.requestID = response.json()['REQUEST_ID']775            self.data = {776                'REQUEST_ID': self.requestID,777                'ACT_CDE': activity_code,778                'SESS_CDE' : '201501',779                'ID_NUM': random_id_number, #Changing values to emulate attacker muhahah780                'PART_CDE':'PART',781                'DATE_SENT' : '07/06/2016',782                'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'            783                }            784        except ValueError:785            self.log_error('Error performing setup for {0}.'.format(self.test_name))786    def test(self):787        response = api.putAsJson(self.session, self.url + str(self.requestID), self.data)788        if not response.status_code == 401:789            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))790        if response.text:791            self.log_error('Expected empty response body, got {0}.'.format(response.text))792    def cleanup(self):793        d = api.delete(self.session, self.url + str(self.requestID))794        if not d.status_code == 200:795            self.log_error('There was error performing cleanup for {0}.'.format(self.test_name))796class delete_memberhsip_request___activity_leader(TestCase):797    """ Verify that an activity leader can delete a membership request for his activity798    Pre-Conditions:799    Expectations:800    Endpoints -- api/requests/:id801    Expected Status Code -- 200 OK802    Expected Response Body -- The request that was deleted803    """804    def __init__(self, session=None):805        super().__init__(session)806        self.url = hostURL + 'api/requests/'807        self.predata = {}808        self.requestID = -1809    def setup(self):810        self.predata = {811            'ACT_CDE': activity_code,812            'SESS_CDE': '201501',813            'PART_CDE': 'PART',814            'ID_NUM': my_id_number,815            'DATE_SENT': '07/19/2016',816            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'817            }818        response = api.postAsJson(self.session, self.url, self.predata)819        if not response.status_code == 201:820            self.log_error('Error in setup for {0}. Expected 201 Created, got {1}.'.format(self.test_name, response.status_code))821        else:822            self.requestID = response.json()['REQUEST_ID']823    def test(self):824        response = api.delete(self.session, self.url + '/' + str(self.requestID))825        if not response.status_code == 200:826            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))827        try:828            response.json()829        except ValueError:830            self.log_error('Expected Json response body, got {0}.'.format(response.text))831        else:832            try:833                response.json()['REQUEST_ID']834            except KeyError:835                self.log_error('Expected REQUEST_ID in response body, got {0}.'.format(response.json()))836            837        838class allow_someone_to_join_my_activity___activity_leader(TestCase):839    """ Verify that the activity leader can accept a request directed at their activity.840    Pre-Conditions:841    Valid Authentication Header842    Authenticated as Activity Leader843    Expectations:844    Endpoints -- api/requests/:id/approve845    Expected Status Code -- 200 OK846    Expected Response Body -- Json response with the request that was accepted.847    """848    def __init__(self, session=None):849        super().__init__(session)850        self.url = hostURL + 'api/requests/'851        self.data = {}852        self.requestID = -1853        self.membershipID = -1854    def setup(self):855        #Create a memberships request for the trash club.856        self.data = {857            'ACT_CDE': activity_code,858            'SESS_CDE' : '201501',859            'ID_NUM': my_id_number,860            'PART_CDE':'MEMBR',861            'DATE_SENT' : '07/06/2016',862            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'863            }864        response = api.postAsJson(self.session, self.url, self.data)865        if not response.status_code == 201:866            self.log_error('Error in setup for {0}. Expected 201 Created, got {1}.'.format(self.test_name, response.status_code))867        try:868            response.json()869        except ValueError:870            self.log_error('Error in setup for {0}. Expected json response, got {1}.'.format(self.test_name, response.text))871        else:872            try:873                self.requestID = response.json()['REQUEST_ID']874            except KeyError:875                self.log_error('Error in setup for {0}. Expected REQUEST_ID in response, got {1}.'.format(self.test_name, response.json()))876        877    def test(self):878        response = api.postAsJson(self.session, self.url + str(self.requestID) + '/approve', None)879        if not response.status_code == 200:880            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))881        try:882            response.json()883        except ValueError:884            self.log_error('Expected Json response body, got {0}.'.format(response.text))885        else:886            try:887                self.membershipID = response.json()['MEMBERSHIP_ID']888            except KeyError:889                self.log_error('Expected MEMBERSHIP_ID in response bady, got {0}.'.format(response.json()))890                    891    def cleanup(self):892        # We try to delete the request we made893        if self.requestID < 0: # The request was not successful894            self.log_error('Error in cleanup for {0}. Expected valid request ID, got {1}.'.format(self.test_name, self.requestID))895        else:896            d = api.delete(self.session, self.url + str(self.requestID))897            if not d.status_code == 200:898                self.log_error('Error in cleanup for {0}. Expected 200 OK when deleting request, got {1}.'.format(self.test_name, d.status_code))899        # We try to delete the membership we created900        if self.membershipID < 0: # membership creatino was not successful901            self.log_error('Error in cleanup for {0}. Expected valid membership ID, got {1}.'.format(self.test_name, self.membershipID))902        else:903            d = api.delete(self.session, hostURL + 'api/memberships/' + str(self.membershipID))904            if not d.status_code == 200:905                self.log_error('Error in cleanup for {0}. Expected 200 OK when deleting membership, got {1}.'.format(self.test_name, d.status_code))906        907class deny_someone_joining_my_activity___activity_leader(TestCase):908    """ Verify that the activity leader can deny a request directed at their activity.909    Pre-Conditions:910    Valid Authentication Header911    Authenticated as Activity Leader912    Expectations:913    Endpoints -- api/requests/:id/deny914    Expected Status Code -- 200 OK915    Expected Response Body -- Json response with the request that was denied916    """917    def __init__(self, session=None):918        super().__init__(session)919        self.url = hostURL + 'api/requests/'920        self.data = {}921        self.requestID = -1922    def setup(self):923        #Create a memberships request for the trash club.924        self.data = {925            'ACT_CDE': activity_code,926            'SESS_CDE' : '201501',927            'ID_NUM': my_id_number,928            'PART_CDE':'MEMBR',929            'DATE_SENT' : '07/06/2016',930            'COMMENT_TXT':'Generated by the Raymond Test Suite. IGNORE'931            }932        response = api.postAsJson(self.session, self.url, self.data)933        if not response.status_code == 201:934            self.log_error('Error in setup for {0}. Expected 201 Created, got {1}.'.format(self.test_name, response.status_code))935        try:936            response.json()937        except ValueError:938            self.log_error('Error in setup for {0}. Expected json response, got {1}.'.format(self.test_name, response.text))939        else:940            try:941                self.requestID = response.json()['REQUEST_ID']942            except KeyError:943                self.log_error('Error in setup for {0}. Expected REQUEST_ID in response, got {1}.'.format(self.test_name, response.json()))944        945    def test(self):946        response = api.postAsJson(self.session, self.url + str(self.requestID) + '/deny', None)947        if not response.status_code == 200:948            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))949        try:950            response.json()951        except ValueError:952            self.log_error('Expected Json response body, got {0}.'.format(response.text))953        else:954            try:955                if not response.json()['STATUS'] == REQUEST_STATUS_DENIED:956                    self.log_error('Expected approved request, got {0}.'.format(response.json()))957            except KeyError:958                self.log_error('Expected STATUS in response bady, got {0}.'.format(response.json()))959    def cleanup(self):960        # We try to delete the request we made961        if self.requestID < 0: # The request was not successful962            self.log_error('Error in cleanup for {0}. Expected valid request ID, got {1}.'.format(self.test_name, self.requestID))963        else:964            d = api.delete(self.session, self.url + str(self.requestID))965            if not d.status_code == 200:966                self.log_error('Error in cleanup for {0}. Expected 200 OK, got {1}.'.format(self.test_name, d.status_code))967# # # # # # # # # # #968# SUPERVISOR TESTS #969# # # # # # # # # #970class get_all_supervisors___activity_leader(TestCase):971    """ Verify that an activity leader cannot view all supervisors.972    Pre-Conditions:973    Valid Authentication Header.974    Authenticated as Activity leader975    Expectations:976    Endpoint -- api/supervisors/977    Expected Status Code -- 401 Unauthorized978    Expected Response Body -- Empty979    """980    def __init__(self , session=None):981        super().__init__(session)982        self.url = hostURL + 'api/supervisors/'983    def test(self):984        response = api.get(self.session, self.url)985        if not response.status_code == 401:986            self.log_error('Expected Status Code 401 Unauthorized, got {0}.'.format(response.status_code))987        if response.text:988            self.log_error('Got non-empty response body.')989class get_supervisors_for_activity___activity_leader(TestCase):990    """ Verify that an activity leader can get supervisors for activity991    Pre-Conditions:992    Valid Authentication Header.993    Authenticated as activity leader.994    Expectations:995    Endpoint -- api/supervisors/activity/:id996    Expected Status Code -- 200 OK997    Expected Response Body -- list of json objects998    """999    def __init__(self , session=None):1000        super().__init__(session)1001        self.url = hostURL + 'api/supervisors/activity/' + activity_code1002    def test(self):1003        response = api.get(self.session, self.url)1004        if not response.status_code == 200:1005            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1006        try:1007            response.json()1008        except ValueError:1009            self.log_error('Expected json response body, got {0}.'.format(response.text))1010        else:1011            if not (type(response.json()) is list):1012                self.log_error('Expected list, got {0}.'.format(response.json()))1013class post_supervisor___activity_leader(TestCase):1014    """ verify that an activity leader can't add a supervisor1015    Pre-Conditions:1016    Valid Authentication Header.1017    Authenticated as activity leader.1018    Expectations:1019    Endpoint -- api/supervisors/1020    Expected Status Code -- 401 Unauthorized1021    Expected Response Body -- Empty1022    """1023    def __init__(self , session=None):1024        super().__init__(session)1025        self.url = hostURL + 'api/supervisors/'1026        self.data = {}1027        self.supervisorID = -11028    def setup(self):1029        self.data = {1030            'ID_NUM' : my_id_number,1031            'ACT_CDE' : activity_code,1032            'SESS_CDE' : '201501'1033            }1034    def test(self):1035        response = api.postAsJson(self.session, self.url, self.data)1036        if not response.status_code == 401:1037            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1038        if response.text:1039            self.log_error('Expected empty response body, got {0}.'.format(response.text))1040        if response.status_code == 201:1041            self.log_error('Delete the unauthorized resource...')1042            try:1043                self.supervisorID = response.json()['SUP_ID']1044            except ValueError:1045                self.log_error('Problem accessing compromised resource.')1046        1047    def cleanup(self):1048        if self.supervisorID > 0: # Unauthorized creation took place1049            d = api.delete(self.session, self.url + str(self.supervisorID))1050            if response.status_code == 200: # Deletion was not successful1051                self.log_error('Unauthorized resource deleted.')1052            else:1053                self.log_error('Error deleting Unauthorized resource.')1054class put_supervisor___activity_leader(TestCase):1055    """ Verify that an activity leader can't edit an existing supervisor1056    Pre-Conditions:1057    Valid Authentication Header.1058    Authenticated as regular member.1059    Expectations:1060    Endpoint -- api/supervisors/:id1061    Expected Status Code -- 401 Unauthorized1062    Expected Response Body -- Empty1063    """1064    def __init__(self , session=None):1065        super().__init__(session)1066        # Trying to update a random supervisor1067        self.url = hostURL + 'api/supervisors/'1068        tempID = 01069        # Iterate until we find a valud supervisor1070        response = api.get(self.session,self.url + str(tempID))1071        while response.status_code == 404:1072            tempID = tempID + 11073            response = api.get(self.session, self.url + str(tempID))1074        1075        self.data = {1076            'SUP_ID' : tempID,1077            'ACT_CDE' : activity_code,1078            'SESS_CDE' : '201501',1079            'ID_NUM' : my_id_number1080        }1081        self.supervisorID = -11082        1083    def test(self):1084        response = api.putAsJson(self.session, self.url + str(self.data['SUP_ID']), self.data)1085        if not response.status_code == 401:1086            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1087        if response.text:1088            self.log_error('Expected empty respone body, got {0}.'.format(response.text))1089        if response.status_code == 200: # If supervisor was updated1090            self.log_error('Unauthorized update. Attempting to delete...')1091            try:1092                self.supervisorID = response.json()['SUP_ID']1093            except (ValueError, KeyError):1094                self.log_error('Error accessing compromised supervisor.')1095                        1096    def cleanup(self):1097        if self.supervisorID > 0: # The supervisor was updated.1098            d = api.delete(self.session, self.url)1099            if d.status_code == 200:1100                self.log_error('Compromised resource deleted.')1101            else:1102                self.log_error('Unable to delete compromised resource.')1103# This test might need to be removed if the authorization process for supervisors is altered.1104class delete_supervisor___activity_leader(TestCase):1105    """ Verify that an activity leader can't delete a supervisor 1106    Pre-Conditions:1107    Valid Authentication Header1108    Authenticated as activity leader1109    Expectations:1110    Endpoint -- api/supervisors/:id1111    Expected Status Code -- 401 Unauthorized1112    Expected Response Body -- Empty1113    """1114    def __init__(self , session=None):1115        super().__init__(session)1116        self.url = hostURL + 'api/supervisors/2'1117    def test(self):1118        response = api.delete(self.session, self.url)1119        if not response.status_code == 401:1120            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1121        if response.text:1122            self.log_error('Expected empty body, got {0}.'.format(response.text))1123# # # # # # # # #1124# ACTIVITY TESTS #1125# # # # # # # # #1126class get_all_activities___activity_leader(TestCase):1127    """ Verify that an activity leader can get all activities.1128    Pre-Conditions:1129    Valid Authentication Header.1130    Expectations:1131    Endpoint -- api/activities/1132    Expected Status Code -- 200 OK1133    Expected Response Body -- List of activities1134    """1135    def __init__(self , session=None):1136        super().__init__(session)1137        self.url = hostURL + 'api/activities/'1138    def test(self):1139        response = api.get(self.session, self.url)1140        if not response.status_code == 200:1141            self.log_error('Expected 200 OK , got {0}.'.format(response.status_code))1142        try:1143            response.json()1144        except ValueError:1145            self.log_error('Expected Json response body, got {0}.'.format(respons.text))1146        else:1147            if not (type(response.json()) is list):1148                self.log_error('Expected list, got {0}.'.format(response.json()))1149class get_one_activity___activity_leader(TestCase):1150    """ Verify that an activity leader can a single activity.1151    Pre-Conditions:1152    Valid Authentication Header1153    Expectations:1154    Endpoint -- api/activities1155    Expected Status Code -- 200 OK1156    Expected Response Body -- Json object with activity resource1157    """1158    def __init__(self , session=None):1159        super().__init__(session)1160        self.url = hostURL + 'api/activities/' + activity_code1161    def test(self):1162        response = api.get(self.session, self.url)1163        if not response.status_code == 200:1164            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1165        try:1166            response.json()1167        except ValueError:1168            self.log_error('Expected Json response body, got {0}.'.format(response.text))1169        else:1170            try:1171                response.json()['ActivityCode']1172            except KeyError:1173                self.log_error('Expected ACT_CDE in response, got {0}.'.format(response.json()))1174class get_activities_for_session___activity_leader(TestCase):1175    """ Verify that an activity leader can get all activities for specific session.1176    Pre-Conditions:1177    Valid Authentication Header1178    Expectations:1179    Endpoint -- api/activities/session/:id1180    Expected Status Code -- 200 OK 1181    Expected Response Body -- list of activities1182    """1183    def __init__(self , session=None):1184        super().__init__(session)1185        self.url = hostURL + 'api/activities/session/'1186        self.sessionID = -11187    def setup(self):1188        response = api.get(self.session, hostURL + 'api/sessions/current')1189        if not response.status_code == 200:1190            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1191        try:1192            response.json()1193        except ValueError:1194            self.log_error('Error in setup for {0}. Expected json in response body, got {1}.'.format(self.test_name, response.text))1195        else:1196            try:1197                self.sessionID = response.json()['SessionCode']1198            except KeyError:1199                self.log_error('Error in setup for {0}. Expected SessionCode in response body, got {1}.'.format(self.test_name, response.json()))1200                        1201    def test(self):1202        response = api.get(self.session, self.url + str(self.sessionID))1203        if not response.status_code == 200:1204            self.log_error('Expected 200 OK, got {0}.'.format(response.json()))1205        try:1206            response.json()1207        except ValueError:1208            self.log_error('Expected Json response body, got {0}.'.format(response.json()))1209        else:1210            if not (type(response.json()) is list):1211                self.log_error('Expected list, got {0}.'.format(response.json()))1212class update_activity___activity_leader(TestCase):1213    """ Verify that an activity leader can update activity information.1214    Pre-Conditions:1215    Valid Authentication Header1216    Authenticated as activity leader1217    Expectations:1218    Endpoints -- api/activities/:id1219    Expected Status Code -- 200 Ok1220    Expected Response Body -- Updated activity information1221    """1222    def __init__(self, session=None):1223        super().__init__(session)1224        self.url = hostURL + 'api/activities/' + activity_code1225        self.data = {}1226    def setup(self):1227        self.data = {1228            "ACT_CDE" : activity_code,1229            "ACT_BLURB" : 'BLURB GENERATED BY THE TEST SUITE.IGNORE',1230            "ACT_URL" : 'http://www.lolcats.com/'1231        }1232    def test(self):1233        response = api.putAsJson(self.session, self.url , self.data)1234        if not response.status_code == 200:1235            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1236        try:1237            response.json()1238        except ValueError:1239            self.log_error('Expected json in response body, got {0}.'.format(response.text))1240        else:1241            try:1242                response.json()['ACT_CDE']1243            except ValueError:1244                self.log_error('Expected ACT_CDE in response body, got {0}.'.format(response.json()))1245class update_activity_image___activity_leader(TestCase):1246    """ Verify that an activity leader can update the activity image.1247    Pre-Conditions:1248    Valid Authentication Header1249    Authenticated as an activity leader1250    Expectations:1251    Endpoint -- api/activities/:id/image1252    Expected Status Code -- 200 OK1253    Expected Json response -- Empty respons body.1254    """1255    def __init___(self, session=None):1256        pass1257    def setup(self):1258        pass1259    def test(self):1260        pass1261    1262# # # # # # # # # # # # 1263# PARTICIPATIONS TEST #1264# # # # # # # # # # # #1265class get_all_participations___activity_leader(TestCase):1266    """ Verify that an activity leader can get all participations1267    Pre-Conditions:1268    Valid Authentication Header1269    Expectations:1270    Endpoint -- api/participations1271    Expected Status Code -- 200 OK1272    Expected Response Body -- List of all participations1273    """1274    def __init__(self , session=None):1275        super().__init__(session)1276        self.url = hostURL + 'api/participations'1277    def test(self):1278        response = api.get(self.session, self.url)1279        if not response.status_code == 200:1280            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1281        try:1282            response.json()1283        except ValueError:1284            self.log_error('Expected Json response body, got {0}.'.format(response.text))1285        else:1286            if not (type(response.json()) is list):1287                self.log_error('Expected list, got {0}.'.format(response.json()))1288class get_one_participation___activity_leader(TestCase):1289    """ Verify that an activity leader can get a specific participation object1290    Pre-Conditions:1291    Valud Authentication Header1292    Expectations:1293    Endpoint -- api/participations1294    Expected Status Code -- 200 OK1295    Expected Response Body -- A participation object1296    """1297    def __init__(self , session=None):1298        super().__init__(session)1299        self.url = hostURL + 'api/participations/MEMBR'1300    def test(self):1301        response = api.get(self.session, self.url)1302        if not response.status_code == 200:1303            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1304        try:1305            response.json()1306        except ValueErrror:1307            self.log_error('Expected Json response body, got {0}.'.format(response.text))1308        else:1309            try:1310                response.json()['ParticipationCode']1311            except KeyError:1312                self.log_error('Expected ParticipationCode in response, got {0}.'.format(response.json()))1313# # # # # # # # #1314# SESSIONS TEST #1315# # # # # # # # #1316class get_all_sessions___activity_leader(TestCase):1317    """ Verify that an activity leader can get all session objects1318    Pre-Conditions:1319    Valid Authentication Header1320    Expectations:1321    Endpoint -- api/sessions/1322    Expected Status Code -- 200 OK1323    Expected Response Body -- List of session resources1324    """1325    def __init__(self , session=None):1326        super().__init__(session)1327        self.url = hostURL + 'api/sessions/'1328    def test(self):1329        response = api.get(self.session, self.url)1330        if not response.status_code == 200:1331            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1332        try:1333            response.json()1334        except ValueError:1335            self.log_error('Expected Json response body, got {0}.'.format(response.json()))1336        else:1337            if not (type(response.json()) is list):1338                self.log_error('Expected list, got {0}.'.format(response.json()))1339class get_one_session___activity_leader(TestCase):1340    """ Verify that an activity leader can get a session object1341    Pre-Conditions:1342    Valid Authentication Header1343    Expectations:1344    Endpoint -- api/sessions/:id1345    Expected Status Code -- 200 OK1346    Expected Response Body -- A session resource.1347    """1348    def __init__(self , session=None):1349        super().__init__(session)1350        self.url = hostURL + 'api/sessions/201501'1351    def test(self):1352        response = api.get(self.session, self.url)1353        if not response.status_code == 200:1354            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1355        try:1356            response.json()1357        except ValueError:1358            self.log_error('Expected Json response body, got {0}.'.format(response.text))1359        else:1360            try:1361                response.json()['SessionCode']1362            except KeyError:1363                self.log_error('Expected SessionCode in response, got {0}.'.format(response.json()))1364# # # # # # # # #1365# STUDENTS TEST #1366# # # # # # # # #1367class get_all_students___activity_leader(TestCase):1368    """ Verify that an activity leader cannot list all students1369    Pre-Conditions:1370    Valid Authentications Header1371    Expectations:1372    Endpoint -- api/students1373    Expected Status Code -- 401 Unauthorized1374    Expected Response Body -- Empty1375    """1376    def __init__(self , session=None):1377        super().__init__(session)1378        self.url = hostURL + 'api/students/'1379    def test(self):1380        response = api.get(self.session, self.url)1381        if not response.status_code == 401:1382            self.log_error('Expected 401 Unauthorized, got {0}.'.format(response.status_code))1383        if response.text:1384            self.log_error('Expected empty response body, got {0}.'.format(response.text))1385                1386class get_student_by_id___activity_leader(TestCase):1387    """ Verify that an activity leader can get a student resource1388    Pre-Conditions:1389    Valid Authentication Header1390    Expectations:1391    Endpoint -- api/students/:id1392    Expected Status Code -- 200 Ok1393    Expected Response Body -- A json response with the student resource1394    """1395    def __init__(self , session=None):1396        super().__init__(session)1397        self.url = hostURL + 'api/students/' + str(random_id_number)1398    def test(self):1399        response = api.get(self.session, self.url)1400        if not response.status_code == 200:1401            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1402        try:1403            response.json()1404        except ValueError:1405            self.log_error('Expected Json response body, got{0}.'.format(response.text))1406        else:1407            try:1408                response.json()['StudentID']1409            except KeyError:1410                self.log_error('Expected StudentID in response, got{0}.'.format(response.json()))1411        1412class get_student_by_email___activity_leader(TestCase):1413    """ Verify that an activity leader get a student resource by email.1414    Pre-Conditions:1415    Valid Authentication Header1416    Expectations:1417    Endpoint -- api/students/email/:email1418    Expected Status Code -- 200 OK1419    Expected Response Body -- A json response with the student resource1420    """1421    def __init__(self, session=None):1422        super().__init__(session)1423        self.url = hostURL + 'api/students/email/ezeanyinabia.anyanwu@gordon.edu/'1424    def test(self):1425        response = api.get(self.session, self.url)1426        if not response.status_code == 200:1427            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1428        try:1429            response.json()1430        except ValueError:1431            self.log_error('Expected Json response body, got{0}.'.format(response.text))1432        else:1433            try:1434                response.json()['StudentID']1435            except KeyError:1436                self.log_error('Expected StudentID in response, got{0}.'.format(response.json()))1437# # # # # # # #1438# EMAIL  TEST #1439# # # # # # # #1440class get_emails_for_activity___activity_leader(TestCase):1441    """ Verify that an activity leader can get the emails for the members of an activity1442    1443    Pre-conditions:1444    Valid Authentication Header1445    Authenticated as Activity leader1446    Expectations:1447    Endpoint -- api/emails/activity/:id1448    Expected Status Code -- 200 OK1449    Expected Response Body -- A list of json objects 1450    """1451    def __init__(self , session=None):1452        super().__init__(session)1453        self.url = hostURL + 'api/emails/activity/' + activity_code1454    def test(self):1455        response = api.get(self.session, self.url)1456        if not response.status_code == 200:1457            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1458        try:1459            response.json()1460        except ValueError:1461            self.log_error('Expected Json in response body, got {0}.'.format(response.text))1462        else:1463            if not (type(response.json()) is list):1464                self.log_error('Expected list, got {0}.'.format(response.json))1465    1466class get_emails_for_leaders___activity_leader(TestCase):1467    """ Verify that a supervisor can get the emails for any activity leader1468    1469    Pre-Conditions:1470    Valid Authentication header1471    Expectaions:1472    Endpoint -- api/emails/activity/:id/leaders1473    Expected Status Code -- 200 OK1474    Expected Respones Body -- Json response with a list of emails1475    """1476    def __init__(self, session=None):1477        super().__init__(session)1478        self.url = hostURL + 'api/emails/activity/' + activity_code + '/leaders'1479    def test(self):1480        response = api.get(self.session, self.url)1481        if not response.status_code == 200:1482            self.log_error('Expected 200 OK, got {0}.'.format(response.status_code))1483        try:1484            response.json()1485        except ValueError:1486            self.log_error('Expected Json response body, got {0}.'.format(response.text))1487        else:1488            try:1489                response.json()[0]['Email']1490            except KeyError:1491                self.log_error('Expected Email in response, got{0}.'.format(response.json()))1492if __name__ == '__main__':...validation_helper.py
Source:validation_helper.py  
...68        my_file.close()69        70    # Log Error71    @staticmethod72    def log_error(method, row_no):73        LOG_INFO.append("Row Number: %s --> %s \n" % (row_no, method))74        logging.info("Row Number: %s --> %s \n" % (row_no, method))75        76    77    # You could use this at the start of all methods78    # That need a basic string validation_helper79    @staticmethod80    def string_is_valid_example_only_use_the_next_one_down(value):81        82        if value:83            # Must have something in84            85            if isinstance(value, basestring):86                # Must be a string87            88                # Can use a string specific method now89                # to remove whitespace90                if value.strip():91                    # Must have something in92                    # A valid string93                    94                    return True95                    96                else:97                    # Must only have contained white space98                    99                    return False100                101            else:102                # is not a String!103                104                return False105                106        else:107            # is empty or null               108            109            return False110        111        112    @staticmethod113    def string_is_valid(value):114                115        if value and isinstance(value, basestring) and value.strip():       116            return True117            118        return False119    120    @staticmethod121    def number_is_valid(value):122        123        # think this cover int float and long124        if value and isinstance(value, (long, int, float)):125            return True126        127        return False128    129    # Date Validation  130    @staticmethod131    def date_validation(date):        132        # Date will always be String from CSV ?133        134        if validation_helper.string_is_valid(date):135            # There something in the String136            137            # Format could be d/m/yy138            # Format could be d/m/yyyy139            # Format could use separator - or / or . 140            141            # We need to get any string format into a date object142            # Look at this answer and library            143            # http://stackoverflow.com/a/25341965/1256219144            try: 145                parse(date)146                147                # Must be a date formatted string148                return True149            except ValueError:150                # not a date formatted string151                return False152        else:153            return False154    155    156    # Exclude Currency Value157    # http://stackoverflow.com/questions/8421922/how-do-i-convert-a-currency-string-to-a-floating-point-number-in-python158    @staticmethod159    def exlude_currency(value):160        if value and value != 'AE' :161            value = Decimal(sub(r'[^\d.]', '', value))162            return float(value)163        else:164            return False165    166    # Email Validation167    @staticmethod168    def email_validation(email, row_no):169        170        log_message_name = 'Email Validation: '171        172        if DEBUG:173            logging.info("email_validation" + str(row_no) + ' ~ '+ email)174             175        # If you try to do regex validation_helper on a null string 176        # in Java, it will crash.177        # I don't know about python?178        # Do other validation_helper first179        if validation_helper.string_is_valid(email):        180            match = re.search(EMAIL_VALIDATION, email.strip())181            182            if match:183                validation_helper.log_error(''+log_message_name+'Success', row_no)184            else:185                # A log would need to written to the error file186                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)187        188    189    # Employee ID Validation190    @staticmethod191    def employee_id_validation(value, row_no, employee_id_list):   192        193        log_message_name = 'Employee ID Validation: '194        195        if DEBUG:196            logging.info("employee_id_validation: " + str(row_no) + ' ~ '+ value) 197        if value:     198            if validation_helper.string_is_valid(value):199                if not value in employee_id_list:200                    validation_helper.log_error(''+log_message_name+'Success', row_no)201                else:202                    validation_helper.log_error(''+log_message_name+'Not Unique', row_no)203        else:204            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)205    206    # Title Validation207    @staticmethod208    def title_validation(value, row_no):209        210        log_message_name = 'Title Validation: '211        212        if DEBUG:213            logging.info("title_validation: " + str(row_no) + ' ~ '+ value)  214        if value:215            if validation_helper.string_is_valid(value):216                if value.lower() in HONORIFICS:217                    validation_helper.log_error(''+log_message_name+'Success', row_no)218                else:219                    validation_helper.log_error(''+log_message_name+'Not Valid', row_no)220        else:221            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)222                223    224    # First Name Validation225    # TODO - check for foriegn characters226    @staticmethod227    def firstname_validation(value, row_no):228        229        log_message_name = 'First Name Validation: '230        231        if DEBUG:232            logging.info("firstname_validation: " + str(row_no) + ' ~ '+ value)233                  234        if value:235            if validation_helper.string_is_valid(value):236                validation_helper.log_error(''+log_message_name+'Success', row_no)237            else:238                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)239        else:240            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)241    242    243    # Surname Validation244    @staticmethod245    def surname_validation(value, row_no): 246        247        log_message_name = 'Surname Validation: '248        249        if DEBUG:250            logging.info("surname_validation: " + str(row_no) + ' ~ '+ value)251          252        if value:     253            if validation_helper.string_is_valid(value):254                validation_helper.log_error(''+log_message_name+'Success', row_no)255            else:256                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)257        else:258            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)259    260    261    # Job Title Validation262    @staticmethod263    def job_title_validation(value, row_no): 264        265        log_message_name = 'Job Title Validation: '266        267        if DEBUG:268            logging.info("job_title_validation: " + str(row_no) + ' ~ '+ value)269               270        if validation_helper.string_is_valid(value):271            if value.lower() in JOB_TITLE:272                validation_helper.log_error(''+log_message_name+'Success', row_no)273            else:274                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)275        else:276            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)277    278    # Date of Birth Validation279    @staticmethod280    def dob_validation(dob, row_no):281        282        log_message_name = 'Date of birth Validation: '   283        284        if DEBUG:285            logging.info("dob_validation: " + str(row_no) + ' ~ '+ dob)    286        287        if dob:288            if validation_helper.date_validation(dob):289                290                now = datetime.datetime.now().now()291                #http://stackoverflow.com/questions/27800775/python-dateutil-parser-parse-parses-month-first-not-day292                date_parse = parse(dob, dayfirst=True)293  294            295                age = dateutil.relativedelta.relativedelta(now, date_parse).years296            297                if age >= MIN_AGE:298                    validation_helper.log_error(''+log_message_name+'Success', row_no)299                else:300                    validation_helper.log_error(''+log_message_name+'Too young!!', row_no)301            else:302                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)303        else:304            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)305        306    # National Insurance Validation307    @staticmethod308    def national_insurance_validation(national_insurance, row_no):309        310        log_message_name = 'National Insurance Validation: '  311        312        if DEBUG:313            logging.info("national_insurance_validation: " + str(row_no) + ' ~ '+ national_insurance)   314        315        if national_insurance:316            if validation_helper.string_is_valid(national_insurance):317                318                319                match = re.search(NI_VALIDATION, national_insurance.replace(" ", ""), re.IGNORECASE)320                321                if match:322                    validation_helper.log_error(''+log_message_name+'Success', row_no)323                else:324                    # A log would need to written to the error file325                    validation_helper.log_error(''+log_message_name+'Not Valid Format', row_no)326            else:327                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)328        else:329            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)330            331        332    # Annual Leave Validation333    @staticmethod334    def annual_holiday_allowance_validation(value, row_no):335        336        log_message_name = 'Annual Holiday Allowance Validation: '  337        338        if DEBUG:339            logging.info("annual_holiday_allowance_validation: " + str(row_no) + ' ~ '+ str(value))  340            341        if value:342            if validation_helper.number_is_valid(float(value)):343                if float(value) <= MAX_HOLIDAY:   344                    validation_helper.log_error(''+log_message_name+'Success', row_no)345                else:346                    validation_helper.log_error(''+log_message_name+'Too much holiday allowance', row_no) 347            else:348                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)349        else:350            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)351        352    # Employee Date Joined Validation353    @staticmethod354    def employee_date_joined_validation(date, row_no):355        356        log_message_name = 'Employee Date Joined Validation: ' 357        358        if DEBUG:359            logging.info("employee_date_joined_validation: " + str(row_no) + ' ~ '+ date)  360        361        if date:     362            if validation_helper.date_validation(date):363                    364                now = datetime.datetime.now().now()365                #http://stackoverflow.com/questions/27800775/python-dateutil-parser-parse-parses-month-first-not-day366                date_parse = parse(date, dayfirst=True)367  368                month = dateutil.relativedelta.relativedelta(now, date_parse).months369                370                year = dateutil.relativedelta.relativedelta(now, date_parse).years371                372                if year >=0 and month > JOINED_DATE_RANGE:373                    374                    validation_helper.log_error(''+log_message_name+'Success', row_no)375                    376                else:377                    378                    validation_helper.log_error(''+log_message_name+'Error future date', row_no)379                    380            else:381                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)382        else:383            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)384    385    # Employee Date of Leaving Validation386    @staticmethod387    def employee_date_of_leaving_validation(date, row_no):388        389        log_message_name = 'Employee Date of leaving Validation: ' 390        391        if DEBUG:392            logging.info("employee_date_of_leaving_validation: " + str(row_no) + ' ~ '+ date)  393        394        if date:395            if validation_helper.date_validation(date):396                validation_helper.log_error(''+log_message_name+'Success', row_no)397            else:398                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)399        else:400            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)401    402    403    # Company Validation404    @staticmethod405    def company_validation(value, row_no):406        407        log_message_name = 'Company Validation: ' 408        409        if DEBUG:410            logging.info("company_validation: " + str(row_no) + ' ~ '+ value) 411             412        if value:  413            if validation_helper.string_is_valid(value):414                validation_helper.log_error(''+log_message_name+'Success', row_no)415            else:416                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)417        else:418            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)419            420        421    422    # Basic Salary Validation423    @staticmethod424    def basic_salary_validation(value, row_no):425        426        log_message_name = 'Basic Salary Validation: ' 427        428        if DEBUG:429            logging.info("basic_salary_validation: " + str(row_no) + ' ~ '+ str(value))  430        431        # Exclude currency432        value = validation_helper.exlude_currency(value)433        434        if value:  435            if validation_helper.number_is_valid(value):436                validation_helper.log_error(''+log_message_name+'Success', row_no)437            else:438                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)439        else:440            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)441        442    # Bonus Validation443    @staticmethod444    def bonus_validation(value, row_no):445        446        log_message_name = 'Bonus Validation: ' 447        448        if DEBUG:449            logging.info("bonus_validation: " + str(row_no) + ' ~ '+ value)  450        451        # Exclude currency452        value = validation_helper.exlude_currency(value)453        454        if value:455            if validation_helper.number_is_valid(value):456                validation_helper.log_error(''+log_message_name+'Success', row_no)457            else:458                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)459        else:460            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)461        462    # Commission Validation463    @staticmethod464    def commision_validation(value, row_no):465        466        log_message_name = 'Commission Validation: '467        468        if DEBUG:469            logging.info("commission_validation: " + str(row_no) + ' ~ '+ value)  470            471        # Exclude currency472        value = validation_helper.exlude_currency(value)473        474        if value:475            if validation_helper.number_is_valid(value):476                validation_helper.log_error(''+log_message_name+'Success', row_no)477            else:478                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)479        else:480            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)481        482    # Overtime Validation483    @staticmethod484    def overtime_validation(value, row_no):485        log_message_name = 'Overtime Validation: '486        487        if DEBUG:488            logging.info("overtime_validation: " + str(row_no) + ' ~ '+ value)  489            490        # Exclude currency491        value = validation_helper.exlude_currency(value)492        493        if value:494            if validation_helper.number_is_valid(value):495                validation_helper.log_error(''+log_message_name+'Success', row_no)496            else:497                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)498        else:499            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)500        501        502    # Fuel Allowance Validation503    @staticmethod504    def fuel_allowance_validation(value, row_no):505        506        log_message_name = 'Fuel Allowance Validation: '507        508        if DEBUG:509            logging.info("fuel_allowance_validation: " + str(row_no) + ' ~ '+ value)  510            511        # Exclude currency512        value = validation_helper.exlude_currency(value)513        514        if value:  515            if validation_helper.number_is_valid(value):516                validation_helper.log_error(''+log_message_name+'Success', row_no)517            else:518                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)519                520        else:521            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)522        523    524    # Allowance Total Validation525    @staticmethod526    def allowance_total_validation(value, row_no):527        528        log_message_name = 'Allowance Total Validation: '529        if DEBUG:530            logging.info("allowance_total_validation: " + str(row_no) + ' ~ '+ value)  531            532        # Exclude currency533        value = validation_helper.exlude_currency(value)534        535        if value:   536            if validation_helper.number_is_valid(value):537                validation_helper.log_error(''+log_message_name+'Success', row_no)538            else:539                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)540                541        else:542            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)543    544    # Pension Date Joined Validation545    @staticmethod546    def pension_date_joined_validation(value, row_no):547        548        log_message_name = 'Pension Date Joined Validation: '549        550        if DEBUG:551            logging.info("pension_date_joined_validation: " + str(row_no) + ' ~ '+ value)  552        if value:553            if validation_helper.date_validation(value):554                validation_helper.log_error(''+log_message_name+'Success', row_no)555            else:556                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)557        else:558            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)559        560    # Pension Provider Joined Validation561    @staticmethod562    def pension_provider_validation(value, row_no):563        564        log_message_name = 'Pension Provider Validation: '565        566        if DEBUG:567            logging.info("pension_provider_validation: " + str(row_no) + ' ~ '+ value)  568        569        if value:   570            if validation_helper.string_is_valid(value):571                validation_helper.log_error(''+log_message_name+'Success', row_no)572            else:573                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)574        else:575            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)576            577    578    # Pension Scheme Type Validation579    @staticmethod580    def pension_scheme_type_validation(value, row_no):581        582        log_message_name = 'Pension Scheme Type Validation: '583        584        if DEBUG:585            logging.info("pension_scheme_type_validation: " + str(row_no) + ' ~ '+ value)  586        if value:       587            if validation_helper.string_is_valid(value):588                validation_helper.log_error(''+log_message_name+'Success', row_no)589            else:590                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)591        else:592            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)593        594    # Pension Policy Number Validation595    @staticmethod596    def pension_policy_no_validation(value, row_no):597        598        log_message_name = 'Pension Policy Number Validation: '599        600        if DEBUG:601            logging.info("pension_policy_no_validation: " + str(row_no) + ' ~ '+ value)  602            603        if value:        604            if validation_helper.string_is_valid(value):605                validation_helper.log_error(''+log_message_name+'Success', row_no)606            else:607                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)608        else:609            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)610            611    # Employee Pension Validation612    @staticmethod613    def employee_pension_validation(value, row_no):614        615        log_message_name = 'Employee Pension Validation: '616        617        if DEBUG:618            logging.info("employee_pension_validation: " + str(row_no) + ' ~ '+ str(value))  619            620        # Exclude currency621        value = validation_helper.exlude_currency(value)622        623        if value:624            if validation_helper.number_is_valid(value):625                validation_helper.log_error(''+log_message_name+'Success', row_no)626            else:627                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)628        else:629            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)630    631    # Employer Pension Validation632    @staticmethod633    def employer_pension_validation(value, row_no):634        635        log_message_name = 'Employer Pension Validation: '636            637        if DEBUG:638            logging.info("employer_pension_validation: " + str(row_no) + ' ~ '+ value)  639        640        # Exclude currency641        value = validation_helper.exlude_currency(value)642        643        if value:      644            if validation_helper.number_is_valid(value):645                validation_helper.log_error(''+log_message_name+'Success', row_no)646            else:647                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)648        else:649            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)650    651    # Life Start Date Validation652    @staticmethod653    def life_start_date_validation(value, row_no):654        655        log_message_name = 'Life Start Date Validation: '656        657        if DEBUG:658            logging.info("life_start_date_validation: " + str(row_no) + ' ~ '+ value) 659             660        if value:        661            if validation_helper.date_validation(value):662                validation_helper.log_error(''+log_message_name+'Success', row_no)663            else:664                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)665        else:666            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)667            668            669    # Life Start Date Validation670    @staticmethod671    def life_salary_multiple_validation(value, row_no):672        673        log_message_name = 'Life Salary Multiple Validation: '674        675        if DEBUG:676            logging.info("life_salary_multiple_validation: " + str(row_no) + ' ~ '+ value)  677        678        if value:        679            if value:680                if validation_helper.number_is_valid(int(value)):681                    validation_helper.log_error(''+log_message_name+'Success', row_no)682            else:683                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)684        else:685            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)686    687    # Life Value Validation688    @staticmethod689    def life_value_validation(value, row_no):690        691        log_message_name = 'Life Value Validation: '692        693        if DEBUG:694            logging.info("life_value_validation: " + str(row_no) + ' ~ '+ value)  695            696        # Exclude currency697        value = validation_helper.exlude_currency(value)698        699        if value:700            if validation_helper.number_is_valid(value):701                validation_helper.log_error(''+log_message_name+'Success', row_no)702            else:703                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)704        else:705            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)706            707            708    # PMI Start Date Validation709    @staticmethod710    def pmi_start_date_validation(value, row_no):711        712        log_message_name = 'PMI Start Date Validation: '713        714        if DEBUG:715            logging.info("pmi_start_date_validation: " + str(row_no) + ' ~ '+ value)  716        if value:        717            if validation_helper.date_validation(value):718                validation_helper.log_error(''+log_message_name+'Success', row_no)719            else:720                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)721        else:722            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)723    724    725    # PMI Start Date Validation726    @staticmethod727    def pmi_scheme_type_validation(value, row_no):728        729        log_message_name = 'PMI Scheme Type Validation: '730        731        if DEBUG:732            logging.info("pmi_scheme_type_validation: " + str(row_no) + ' ~ '+ value)  733        734        if value:        735            if validation_helper.string_is_valid(value):736                validation_helper.log_error(''+log_message_name+'Success', row_no)737            else:738                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)739        else:740            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)741            742    # PMI Value Validation743    @staticmethod744    def pmi_value_validation(value, row_no):745        746        log_message_name = 'PMI Value Validation: '747        748        if DEBUG:749            logging.info("pmi_value_validation: " + str(row_no) + ' ~ '+ value)  750        751        # Exclude currency752        value = validation_helper.exlude_currency(value)753    754        if value:       755            if validation_helper.number_is_valid(value):756                validation_helper.log_error(''+log_message_name+'Success', row_no)757            else:758                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)759        else:760            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)761            762    763    # CCV Value Validation764    @staticmethod765    def ccv_value_validation(value, row_no):766        log_message_name = 'Child Care Voucher Value Validation: '767        768        if DEBUG:769            logging.info("ccv_value_validation: " + str(row_no) + ' ~ '+ value)  770        771        # Exclude currency772        value = validation_helper.exlude_currency(value)773        774        if value:775            if validation_helper.number_is_valid(value):776                validation_helper.log_error(''+log_message_name+'Success', row_no)777            else:778                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)779        else:780            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)781    # C2W Value Validation782    @staticmethod783    def ctw_value_validation(value, row_no):784        785        log_message_name = 'Cycle To Work Value Validation: '786        if DEBUG:787            logging.info("ctw_value_validation: " + str(row_no) + ' ~ '+ value)  788        789        # Exclude currency790        value = validation_helper.exlude_currency(value)791        792        if value:  793            if validation_helper.number_is_valid(value):794                validation_helper.log_error(''+log_message_name+'Success', row_no)795            else:796                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)797        else:798            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)799    800    801    # Company Car Value Validation802    @staticmethod803    def company_car_value_validation(value, row_no):804        805        log_message_name = 'Company Car Value Validation: '806        if DEBUG:807            logging.info("company_car_value_validation: " + str(row_no) + ' ~ '+ value)  808        809        # Exclude currency810        value = validation_helper.exlude_currency(value)811        812        if value:        813            if validation_helper.number_is_valid(value):814                validation_helper.log_error(''+log_message_name+'Success', row_no)815            else:816                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)817        else:818            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)819    820    821    # Car Allowance Value Validation822    @staticmethod823    def car_allowance_value_validation(value, row_no):824        825        log_message_name = 'Car Allowance Value Validation: '826        827        if DEBUG:828            logging.info("car_allowance_value_validation: " + str(row_no) + ' ~ '+ value)  829        830        # Exclude currency831        value = validation_helper.exlude_currency(value)832        833        if value:834            if validation_helper.number_is_valid(value):835                validation_helper.log_error(''+log_message_name+'Success', row_no)836            else:837                validation_helper.log_error(''+log_message_name+'Not Valid', row_no)838        else:839            validation_helper.log_error(''+log_message_name+EMPTY_FIELD+'', row_no)840    841    ...WMS-command_job-logging-info.py
Source:WMS-command_job-logging-info.py  
...34        utils.info("We are testing %s"%(version))35        utils.remove(utils.get_tmp_file())36    except (RunCommandError,GeneralError,TimeOutError) , e :37            fails=fails+138            utils.log_error("%s"%(utils.get_current_test()))39            utils.log_error("Command: %s"%(e.expression))40            utils.log_error("Message: %s"%(e.message))41            utils.log_traceback("%s"%(utils.get_current_test()))42            utils.log_traceback(traceback.format_exc())43    utils.info ("Submit a job")44    logging.info("Submit a job")45    JOBID=utils.run_command ("glite-wms-job-submit %s --config %s --nomsg --output %s %s "%(utils.get_delegation_options(),utils.get_config_file(),utils.get_jobid_file(),utils.get_jdl_file()))46    logging.info("Job submitted successfuly. Returned JOBID: %s",JOBID)47    # Test a simple logging info operation48    utils.show_progress("Test 3")49    try:50        logging.info("Test 3: Test a simple logging info operation")51        utils.info ("")52        utils.info ("Test a simple logging info operation")53        utils.run_command_continue_on_error ("%s %s"%(COMMAND,JOBID))54    except (RunCommandError,GeneralError,TimeOutError) , e :55            fails=fails+156            utils.log_error("%s"%(utils.get_current_test()))57            utils.log_error("Command: %s"%(e.expression))58            utils.log_error("Message: %s"%(e.message))59            utils.log_traceback("%s"%(utils.get_current_test()))60            utils.log_traceback(traceback.format_exc())61    # Test --config option62    utils.show_progress("Test 4")63    try:64        logging.info("Test 4: Check --config option")65        utils.info ("")66        utils.info ("Test option --config")67        utils.run_command_continue_on_error ("%s --config %s %s"%(COMMAND,utils.get_config_file(),JOBID))68    except (RunCommandError,GeneralError,TimeOutError) , e :69            fails=fails+170            utils.log_error("%s"%(utils.get_current_test()))71            utils.log_error("Command: %s"%(e.expression))72            utils.log_error("Message: %s"%(e.message))73            utils.log_traceback("%s"%(utils.get_current_test()))74            utils.log_traceback(traceback.format_exc())75    # Test --output option76    utils.show_progress("Test 5")77    try:78        logging.info("Test 5: Check --output option")79        utils.info ("")80        utils.info ("Test option --output")81        utils.run_command_continue_on_error ("%s --output %s --config %s %s"%(COMMAND,utils.get_output_file(),utils.get_config_file(),JOBID))82        utils.info ("Check the output file")83        logging.info("Check the output file")84        utils.run_command_continue_on_error ("cat %s"%(utils.get_output_file()))85        utils.remove(utils.get_output_file())86    except (RunCommandError,GeneralError,TimeOutError) , e :87            fails=fails+188            utils.log_error("%s"%(utils.get_current_test()))89            utils.log_error("Command: %s"%(e.expression))90            utils.log_error("Message: %s"%(e.message))91            utils.log_traceback("%s"%(utils.get_current_test()))92            utils.log_traceback(traceback.format_exc())93    # Test --logfile option94    utils.show_progress("Test 6")95    try:96        logging.info("Test 6: Check --logfile option")97        utils.info ("")98        utils.info ("Test option --logfile")99        utils.run_command_continue_on_error ("%s --logfile %s --config %s %s"%(COMMAND,utils.get_log_file(),utils.get_config_file(),JOBID))100        utils.info ("Check the log file")101        logging.info("Check the log file")102        utils.run_command_continue_on_error ("cat %s"%(utils.get_log_file()))103        utils.remove(utils.get_log_file())104    except (RunCommandError,GeneralError,TimeOutError) , e :105            fails=fails+1106            utils.log_error("%s"%(utils.get_current_test()))107            utils.log_error("Command: %s"%(e.expression))108            utils.log_error("Message: %s"%(e.message))109            utils.log_traceback("%s"%(utils.get_current_test()))110            utils.log_traceback(traceback.format_exc())111    # Test --debug and --logfile options112    utils.show_progress("Test 7")113    try:114        logging.info("Test 7: Check --debug and --logfile options")115        utils.info ("")116        utils.info ("Test options --debug and --logfile")117        utils.run_command_continue_on_error ("%s --debug --logfile %s --output %s %s"%(COMMAND,utils.get_log_file(),utils.get_output_file(),JOBID))118        utils.info ("Check the log file with debug option enabled")119        logging.info("Check the log file with debug option enabled")120        utils.run_command_continue_on_error ("cat %s"%(utils.get_log_file()))121        utils.info ("Check the output file with debug option enabled")122        logging.info("Check the output file with debug option enabled")123        utils.run_command_continue_on_error ("cat %s"%(utils.get_output_file()))124        utils.remove(utils.get_output_file())125    except (RunCommandError,GeneralError,TimeOutError) , e :126            fails=fails+1127            utils.log_error("%s"%(utils.get_current_test()))128            utils.log_error("Command: %s"%(e.expression))129            utils.log_error("Message: %s"%(e.message))130            utils.log_traceback("%s"%(utils.get_current_test()))131            utils.log_traceback(traceback.format_exc())132    # Test --verbosity [0|1|2|3] option133    utils.show_progress("Test 8")134    try:135        logging.info("Test 8: Check --verbosity option")136        utils.info ("")137        utils.info ("Test option --verbosity")138        for i in range(4) :139            utils.run_command_continue_on_error ("%s --verbosity %d --output %s %s"%(COMMAND,i,utils.get_output_file(),JOBID))140            utils.info ("Check the output file with verbosity %d option"%(i))141            logging.info("Check the output file with verbosity %d option",i)142            utils.run_command_continue_on_error ("cat %s"%(utils.get_output_file()))143            utils.remove(utils.get_output_file())144    except (RunCommandError,GeneralError,TimeOutError) , e :145            fails=fails+1146            utils.log_error("%s"%(utils.get_current_test()))147            utils.log_error("Command: %s"%(e.expression))148            utils.log_error("Message: %s"%(e.message))149            utils.log_traceback("%s"%(utils.get_current_test()))150            utils.log_traceback(traceback.format_exc())151    152    # Test --input option153    utils.show_progress("Test 9")154    try:155        logging.info("Test 9: Check --input option")156        utils.info ("Submit 2 jobs")157        logging.info("Submit 2 jobs and save their ids in file %s",utils.get_jobid_file())158        utils.run_command_continue_on_error ("glite-wms-job-submit %s --output %s %s"%(utils.get_delegation_options(),utils.get_jobid_file(),utils.get_jdl_file()))159        utils.run_command_continue_on_error ("glite-wms-job-submit %s --output %s %s"%(utils.get_delegation_options(),utils.get_jobid_file(),utils.get_jdl_file()))160        utils.info ("")161        utils.info ("Test the --input option")162        utils.run_command_continue_on_error ("%s --noint --config %s --input %s"%(COMMAND,utils.get_config_file(),utils.get_jobid_file()))163    except (RunCommandError,GeneralError,TimeOutError) , e :164            fails=fails+1165            utils.log_error("%s"%(utils.get_current_test()))166            utils.log_error("Command: %s"%(e.expression))167            utils.log_error("Message: %s"%(e.message))168            utils.log_traceback("%s"%(utils.get_current_test()))169            utils.log_traceback(traceback.format_exc())170    utils.info("Sleep for 60 secs")171    time.sleep (60)172    173    NOW = time.strftime("%H:%M")174    175    # Test --to option176    utils.show_progress("Test 10")177    try:178        logging.info("Test 10: Check --to option")179        utils.info ("")180        utils.info ("Test the --to option")181        # this test fails on gLite UI 3.2.2182        utils.run_command_continue_on_error ("%s --config %s --to %s %s"%(COMMAND,utils.get_config_file(),NOW,JOBID))183    except (RunCommandError,GeneralError,TimeOutError) , e :184            fails=fails+1185            utils.log_error("%s"%(utils.get_current_test()))186            utils.log_error("Command: %s"%(e.expression))187            utils.log_error("Message: %s"%(e.message))188            utils.log_traceback("%s"%(utils.get_current_test()))189            utils.log_traceback(traceback.format_exc())190    # Test --from option191    utils.show_progress("Test 11")192    try:193        logging.info("Test 11: Check --from option")194        utils.info ("")195        utils.info ("Test the --from option")196        utils.run_command_continue_on_error ("%s --config %s --from %s %s"%(COMMAND,utils.get_config_file(),START,JOBID))197    except (RunCommandError,GeneralError,TimeOutError) , e :198            fails=fails+1199            utils.log_error("%s"%(utils.get_current_test()))200            utils.log_error("Command: %s"%(e.expression))201            utils.log_error("Message: %s"%(e.message))202            utils.log_traceback("%s"%(utils.get_current_test()))203            utils.log_traceback(traceback.format_exc())204    # Test --event option205    utils.show_progress("Test 12")206    try:207        logging.info("Test 12: Test the --event option (show only ACCEPTED events)")208        utils.info ("")209        utils.info ("Test the --event option (show only ACCEPTED events)")210        utils.run_command_continue_on_error ("%s  --config %s --event ACCEPTED %s | grep \"Event: Accepted\""%(COMMAND,utils.get_config_file(),JOBID))211   212    except (RunCommandError,GeneralError,TimeOutError) , e :213            fails=fails+1214            utils.log_error("%s"%(utils.get_current_test()))215            utils.log_error("Command: %s"%(e.expression))216            utils.log_error("Message: %s"%(e.message))217            utils.log_traceback("%s"%(utils.get_current_test()))218            utils.log_traceback(traceback.format_exc())219    # Test --exclude option220    utils.show_progress("Test 13")221    try:222        logging.info("Test 13: Test the --exclude option (exclude ACCEPTED events)")223        utils.info ("")224        utils.info ("Test the --exclude option (exclude ACCEPTED events)")225        utils.run_command_continue_on_error ("%s --config %s --exclude ACCEPTED %s | grep \"Event: Accepted\""%(COMMAND,utils.get_config_file(),JOBID),1)226    except (RunCommandError,GeneralError,TimeOutError) , e :227            fails=fails+1228            utils.log_error("%s"%(utils.get_current_test()))229            utils.log_error("Command: %s"%(e.expression))230            utils.log_error("Message: %s"%(e.message))231            utils.log_traceback("%s"%(utils.get_current_test()))232            utils.log_traceback(traceback.format_exc())233    # Test --user-tag option234    os.system("echo \"\nusertags = [ type = \'test job\' ];\" >> %s"%(utils.get_jdl_file()))235    utils.show_progress("Test 14")236    try:237        logging.info("Test 14: Check --user-tag option")238        utils.info ("")239        utils.info ("Test the --user-tag option ")240        utils.run_command_continue_on_error ("%s  --config %s --user-tag type=\'test job\' %s"%(COMMAND,utils.get_config_file(),JOBID))241    except (RunCommandError,GeneralError,TimeOutError) , e :242            fails=fails+1243            utils.log_error("%s"%(utils.get_current_test()))244            utils.log_error("Command: %s"%(e.expression))245            utils.log_error("Message: %s"%(e.message))246            utils.log_traceback("%s"%(utils.get_current_test()))247            utils.log_traceback(traceback.format_exc())248        249    # Test all options together250    utils.show_progress("Test 15")251    try:252        logging.info("Test 15: Test all options together")253        utils.info ("")254        utils.info ("Test all the options together (extract only EnQueued events)")255        utils.run_command_continue_on_error ("%s --noint --input %s --output %s --logfile %s --config %s --verbosity 3 --from %s --to %s --event EnQueued"%(COMMAND,utils.get_jobid_file(),utils.get_output_file(),utils.get_log_file(),utils.get_config_file(),START,NOW))256        utils.info ("Check the log file")257        logging.info("Check the log file")258        utils.run_command_continue_on_error ("cat %s"%(utils.get_log_file()))259        utils.info ("Check the output file")260        logging.info("Check the output file")261        utils.run_command_continue_on_error ("cat %s"%(utils.get_output_file()))262    except (RunCommandError,GeneralError,TimeOutError) , e :263            fails=fails+1264            utils.log_error("%s"%(utils.get_current_test()))265            utils.log_error("Command: %s"%(e.expression))266            utils.log_error("Message: %s"%(e.message))267            utils.log_traceback("%s"%(utils.get_current_test()))268            utils.log_traceback(traceback.format_exc())269    if fails > 0 :270      utils.exit_failure("%s test(s) fail(s)"%(fails))271    else:272      utils.exit_success()273if __name__ == "__main__":...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
