Esempio n. 1
0
 def test_get_blasts_from_other_domain(self, access_token_other, email_campaign_user1_domain1_in_db):
     """
     Test to get campaign by user of some other domain. It should not get any blasts.
     """
     query = {'query': self.query_string % email_campaign_user1_domain1_in_db.id}
     response = send_request('get', GRAPHQL_BASE_URL, access_token_other, data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' in response.json()
     assert response.json()['data']['email_campaign_query']['blasts'] is None
Esempio n. 2
0
 def test_get_non_existing_campaign(self, access_token_first):
     """
     Test to get blasts of non-existing email-campaign. It should not get any campaign.
     """
     query = {'query': self.query_string % CampaignsTestsHelpers.get_non_existing_id(EmailCampaign)}
     response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' in response.json()
     assert response.json()['data']['email_campaign_query']['blasts'] is None
Esempio n. 3
0
 def test_get_campaigns_with_auth_header(self, access_token_first):
     """
     Test to get campaigns with auth header. It should not get any error. Total number of campaigns should be 0.
     """
     expected_campaigns = 0
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=self.query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     assert len(response.json()['data']['email_campaign_query']['campaigns']
                ['edges']) == expected_campaigns
Esempio n. 4
0
 def test_get_blasts_in_same_domain(self, access_token_same, sent_campaign):
     """
     Test to get blasts of a campaign created by some other user of same domain. It should not get any error.
     """
     expected_blasts = 1
     query = {'query': self.query_string % sent_campaign.id}
     response = send_request('get', GRAPHQL_BASE_URL, access_token_same, data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     blasts_edges = response.json()['data']['email_campaign_query']['blasts']['edges']
     assert len(response.json()['data']['email_campaign_query']['blasts']['edges']) == expected_blasts
     for blast_edge in blasts_edges:
         for expected_field in self.expected_fields_list:
             assert expected_field in blast_edge['node'], '%s not present in response' % expected_field
Esempio n. 5
0
 def test_get_blast_from_other_domain(self, access_token_other,
                                      sent_campaign):
     """
     Test to get campaign by user of some other domain. It should not get any blast.
     """
     blast_id = sent_campaign.blasts[0].id
     query = {'query': self.query_string % (sent_campaign.id, blast_id)}
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_other,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' in response.json()
     assert response.json()['data']['email_campaign_query']['blast'] is None
Esempio n. 6
0
 def test_get_campaigns_from_other_domain(self, access_token_other):
     """
     Test to get campaigns with user of some other domain. It should not get 'error' in JSON response.
     Total number of campaigns should be 0.
     """
     expected_campaigns = 0
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_other,
                             data=self.query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     campaigns = response.json(
     )['data']['email_campaign_query']['campaigns']['edges']
     assert len(campaigns) == expected_campaigns
Esempio n. 7
0
 def test_get_blasts_with_auth_header(self, access_token_first, sent_campaign):
     """
     Test to get blasts of an email-campaign created by logged-in user with auth header. It should not get any
     error.
     """
     expected_blasts = 1
     query = {'query': self.query_string % sent_campaign.id}
     response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     blasts_edges = response.json()['data']['email_campaign_query']['blasts']['edges']
     assert len(response.json()['data']['email_campaign_query']['blasts']['edges']) == expected_blasts
     for blast_edge in blasts_edges:
         for expected_field in self.expected_fields_list:
             assert expected_field in blast_edge['node'], '%s not present in response' % expected_field
Esempio n. 8
0
 def test_get_blast_in_same_domain(self, access_token_same, sent_campaign):
     """
     Test to get blast of a campaign created by some other user of same domain. It should not get any error.
     """
     blast_id = sent_campaign.blasts[0].id
     query = {'query': self.query_string % (sent_campaign.id, blast_id)}
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_same,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     blast = response.json()['data']['email_campaign_query']['blast']
     for expected_field in self.expected_fields_list:
         assert expected_field in blast, '%s not present in response' % expected_field
Esempio n. 9
0
 def test_get_sends_with_not_owned_campaign(
         self, access_token_other, email_campaign_user1_domain1_in_db):
     """
     Test to get sends of a campaign which does not exists in user's domain. It should not get any sends.
     """
     query = {
         'query': self.query_string % email_campaign_user1_domain1_in_db.id
     }
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_other,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' in response.json()
     assert response.json()['data']['email_campaign_query']['sends'] is None
Esempio n. 10
0
 def test_get_sends_from_other_domain(self, access_token_other,
                                      sent_campaign):
     """
     Test to get sends by user of some other domain. It should not get any sends.
     """
     CampaignsTestsHelpers.assert_blast_sends(sent_campaign,
                                              self.expected_campaign_sends)
     query = {'query': self.query_string % sent_campaign.id}
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_other,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' in response.json()
     assert response.json()['data']['email_campaign_query']['sends'] is None
Esempio n. 11
0
 def test_get_blast_with_auth_header(self, access_token_first,
                                     sent_campaign):
     """
     Test to get blast of an email-campaign created by logged-in user with auth header. It should not get any
     error.
     """
     blast_id = sent_campaign.blasts[0].id
     query = {'query': self.query_string % (sent_campaign.id, blast_id)}
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     blast = response.json()['data']['email_campaign_query']['blast']
     for expected_field in self.expected_fields_list:
         assert expected_field in blast, '%s not present in response' % expected_field
Esempio n. 12
0
 def get(self, email_campaign_id, candidate_id):
     """
     This returns invitation status of candidate for given campaign.
     Invitations statuses are as:
         Delivered: Candidate has received the email-campaign
         Not-Delivered: Candidate has not received the email-campaign
         Opened: Candidate has opened the email-campaign
         Accepted: Candidate RSVP'd YES to the promoted event
         Rejected: Candidate RSVP'd NO to the promoted event
     """
     raise_if_dict_values_are_not_int_or_long(
         dict(campaign_id=email_campaign_id, candidate_id=candidate_id))
     user = request.user
     email_campaign_send_id = None
     invitation_status = INVITATION_STATUSES['Not-Delivered']
     email_campaign = EmailCampaignBase.get_campaign_if_domain_is_valid(
         email_campaign_id, request.user)
     # Check if candidate has received the email-campaign
     for send in email_campaign.sends.all():
         if candidate_id == send.candidate_id:
             invitation_status = INVITATION_STATUSES['Delivered']
             email_campaign_send_id = send.id
             break
     # Check if candidate has opened the email-campaign
     for activity_type in (Activity.MessageIds.CAMPAIGN_EMAIL_OPEN,
                           Activity.MessageIds.CAMPAIGN_EMAIL_CLICK):
         url = "{}?type={}&source_id={}&source_table={}".format(
             ActivityApiUrl.ACTIVITIES, activity_type,
             email_campaign_send_id, EmailCampaignSend.__tablename__)
         response = send_request('get', url,
                                 request.headers['Authorization'])
         if response.ok:
             invitation_status = INVITATION_STATUSES['Opened']
     if email_campaign.base_campaign_id:
         base_campaign = BaseCampaign.search_by_id_in_domain(
             email_campaign.base_campaign_id, user.domain_id)
         base_campaign_events = base_campaign.base_campaign_events.all()
         if base_campaign_events:
             event = base_campaign_events[0].event
             rsvp_in_db = RSVP.filter_by_keywords(candidate_id=candidate_id,
                                                  event_id=event.id)
             if rsvp_in_db and rsvp_in_db[0].status.lower() == 'yes':
                 invitation_status = INVITATION_STATUSES['Accepted']
             elif rsvp_in_db and rsvp_in_db[0].status.lower() == 'no':
                 invitation_status = INVITATION_STATUSES['Rejected']
     return dict(invitation_status=invitation_status), codes.OK
Esempio n. 13
0
 def test_get_campaign_in_same_domain(self, access_token_first,
                                      email_campaign_user2_domain1_in_db):
     """
     Test to get campaign created by some other user of same domain. It should not get any error.
     """
     query = {
         'query': self.query_string % email_campaign_user2_domain1_in_db.id
     }
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     campaign = response.json()['data']['email_campaign_query']['campaign']
     for expected_field in self.expected_fields_list:
         assert expected_field in campaign, '%s not present in response' % expected_field
Esempio n. 14
0
 def test_get_campaign_with_auth_header(self, access_token_first,
                                        email_campaign_user1_domain1_in_db):
     """
     Test to get campaign created by logged-in user with auth header. It should not get any error.
     """
     query = {
         'query': self.query_string % email_campaign_user1_domain1_in_db.id
     }
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=query)
     assert response.status_code == requests.codes.ok, response.text
     assert 'errors' not in response.json()
     campaign = response.json()['data']['email_campaign_query']['campaign']
     for expected_field in self.expected_fields_list:
         assert expected_field in campaign, '%s not present in response' % expected_field
Esempio n. 15
0
 def test_get_with_no_campaign_sent(self, access_token_first,
                                    email_campaign_user1_domain1_in_db):
     """
     Here we are assuming that email campaign has not been sent to any candidate. Sends count should be 0.
     """
     expected_sends = 0
     query = {
         'query': self.query_string % email_campaign_user1_domain1_in_db.id
     }
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     sends_edges = response.json(
     )['data']['email_campaign_query']['sends']['edges']
     assert len(sends_edges) == expected_sends
Esempio n. 16
0
 def test_get_non_existing_send(self, access_token_first,
                                email_campaign_user1_domain1_in_db):
     """
     Test to get send of non-existing send. It should not get any send.
     """
     query = {
         'query':
         self.query_string % (
             email_campaign_user1_domain1_in_db.id,
             CampaignsTestsHelpers.get_non_existing_id(EmailCampaignSend),
         )
     }
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=query)
     assert response.status_code == requests.codes.ok
     assert 'errors' in response.json()
     assert response.json()['data']['email_campaign_query']['send'] is None
Esempio n. 17
0
 def test_get_campaigns_in_same_domain(self, access_token_first,
                                       email_campaign_user1_domain1_in_db,
                                       email_campaign_user2_domain1_in_db):
     """
     Test to get campaigns created by different users of same domain. It should not get any error.
     Total number of campaigns should be 2.
     """
     expected_campaigns = 2
     response = send_request('get',
                             GRAPHQL_BASE_URL,
                             access_token_first,
                             data=self.query)
     assert response.status_code == requests.codes.ok
     assert 'errors' not in response.json()
     campaigns = response.json(
     )['data']['email_campaign_query']['campaigns']['edges']
     assert len(campaigns) == expected_campaigns
     for campaign in campaigns:
         for expected_field in self.expected_fields_list:
             assert expected_field in campaign[
                 'node'], '%s not present in response' % expected_field
Esempio n. 18
0
 def test_get_send_with_valid_data(self, access_token_first,
                                   access_token_same, sent_campaign):
     """
     Test to get send of an email-campaign created by logged-in user with auth header. It should not get any
     error. It also get sends for other user of same domain.
     """
     for campaign_send in sent_campaign.sends:
         for access_token in (access_token_first, access_token_same):
             query = {
                 'query':
                 self.query_string % (sent_campaign.id, campaign_send.id)
             }
             response = send_request('get',
                                     GRAPHQL_BASE_URL,
                                     access_token,
                                     data=query)
             assert response.status_code == requests.codes.ok
             assert 'errors' not in response.json()
             send = response.json()['data']['email_campaign_query']['send']
             for expected_field in self.expected_fields_list:
                 assert expected_field in send, '%s not present in response' % expected_field
                 assert send['campaign_id'] == sent_campaign.id
Esempio n. 19
0
 def test_get_sends_with_valid_data(self, access_token_first,
                                    access_token_same, sent_campaign):
     """
     Test to get sends of an email-campaign created by logged-in user with auth header. It should not get any
     error. It also gets sends by some other user of same domain. Total number of sends should be 2.
     """
     CampaignsTestsHelpers.assert_blast_sends(sent_campaign,
                                              self.expected_campaign_sends)
     query = {'query': self.query_string % sent_campaign.id}
     for access_token in (access_token_first, access_token_same):
         response = send_request('get',
                                 GRAPHQL_BASE_URL,
                                 access_token,
                                 data=query)
         assert response.status_code == requests.codes.ok
         assert 'errors' not in response.json()
         sends_edges = response.json(
         )['data']['email_campaign_query']['sends']['edges']
         assert len(sends_edges) == self.expected_campaign_sends
         for blast_edge in sends_edges:
             for expected_field in self.expected_fields_list:
                 assert expected_field in blast_edge[
                     'node'], '%s not present in response' % expected_field
             assert blast_edge['node']['campaign_id'] == sent_campaign.id