class FormsTestCase(TestCase): def setUp(self): self.forms = Typeform(TOKEN).forms form = self.forms.create({ 'title': 'title' }) self.formID = form.get('id') def tearDown(self): list = self.forms.list() forms = list.get('items', []) for form in forms: self.forms.delete(form.get('id')) def test_forms_returns_method_and_path(self): """ get all forms has the correct method and path """ with requests_mock.mock() as m: m.get(API_BASE_URL+'/forms', json={}) self.forms.list() history = m.request_history self.assertEqual(history[0].url, API_BASE_URL+'/forms') self.assertEqual(history[0].method, 'GET') def test_forms_correct_params(self): """ paramters are sent correctly """ with requests_mock.mock() as m: m.get(API_BASE_URL+'/forms', json={}) self.forms.list(page=2, pageSize=10, search='hola', workspaceId='abc') history = m.request_history query = history[0].url.split('?')[1] params = dict(urllib.parse.parse_qs(query)) self.assertEqual(params.pop('page')[0], '2') self.assertEqual(params.pop('page_size')[0], '10') self.assertEqual(params.pop('search')[0], 'hola') self.assertEqual(params.pop('workspace_id')[0], 'abc') def test_forms_get_correct_id(self): """ get sends the correct UID """ with requests_mock.mock() as m: m.get(API_BASE_URL+'/forms/'+self.formID, json={}) self.forms.get(self.formID) history = m.request_history self.assertEqual(history[0].url, API_BASE_URL+'/forms/'+self.formID) def test_forms_get_sets_get_method(self): """ get sets get method """ with requests_mock.mock() as m: m.get(API_BASE_URL+'/forms/'+self.formID, json={}) self.forms.get(self.formID) history = m.request_history self.assertEqual(history[0].method, 'GET') def test_forms_update_updates_a_form(self): """ update updates a form """ title = 'hola' result = self.forms.update(self.formID, data={ 'title': title }) self.assertEqual(result.get('title'), title) def test_forms_update_as_patch_updates_a_form(self): """ update as patch updates a form """ result = self.forms.update(self.formID, patch=True, data=[{ 'op': 'replace', 'path': '/title', 'value': 'aloha' }]) self.assertEqual(result, 'OK') def test_forms_update_sets_put_method_in_request_by_default(self): """ update sets put method in request by default """ with requests_mock.mock() as m: m.put(API_BASE_URL+'/forms/'+self.formID, json={}) self.forms.update(self.formID, data={ 'title': 'title' }) history = m.request_history self.assertEqual(history[0].method, 'PUT') def test_forms_delete_removes_the_correct_uid_form(self): """ delete removes the correct uid form """ get1Result = self.forms.get(self.formID) self.assertEqual(get1Result.get('id'), self.formID) self.forms.delete(self.formID) try: self.forms.get(self.formID) except Exception as err: error = str(err) self.assertEqual(error, 'Non existing form with uid %s' % self.formID) def test_forms_create_has_the_correct_path_and_method(self): """ create has the correct path and method """ with requests_mock.mock() as m: m.post(API_BASE_URL+'/forms', json={}) self.forms.create({ 'title': 'hola' }) history = m.request_history self.assertEqual(history[0].method, 'POST') self.assertEqual(history[0].url, API_BASE_URL+'/forms') def test_forms_create_creates_a_new_form(self): """ create creates a new form """ createResult = self.forms.create({ 'title': 'hola' }) formID = createResult.get('id') getResult = self.forms.get(formID) self.assertIsNone(createResult.get('code', None)) self.assertEqual(getResult.get('id'), formID) def test_forms_get_messages_has_the_correct_path_and_method(self): """ get messages has the correct path and method """ with requests_mock.mock() as m: m.get(API_BASE_URL+'/forms/'+self.formID+'/messages', json={}) self.forms.messages.get(self.formID) history = m.request_history self.assertEqual(history[0].method, 'GET') self.assertEqual(history[0].url, API_BASE_URL+'/forms/'+self.formID+'/messages') def test_forms_update_messages_has_the_correct_path_and_method(self): """ update messages has the correct path and method """ with requests_mock.mock() as m: m.put(API_BASE_URL+'/forms/'+self.formID+'/messages') self.forms.messages.update(self.formID) history = m.request_history self.assertEqual(history[0].method, 'PUT') self.assertEqual(history[0].url, API_BASE_URL+'/forms/'+self.formID+'/messages')
class ResponsesTestCase(TestCase): def setUp(self): self.forms = Typeform(TOKEN).forms self.responses = Typeform(TOKEN).responses if not MOCK: form = self.forms.create((dict(title="Responses's test form", workspace={'href': WORKSPACE}))) self.formID = form.get('id') else: self.formID = 'MOCK-FORM-ID' def tearDown(self): if not MOCK: list = self.forms.list(workspaceId=WORKSPACE_ID) forms = list.get('items', []) for form in forms: self.forms.delete(form.get('id')) def test_list_returns_method_and_path(self): """ get all responses has the correct method and path """ with requests_mock.mock(real_http=not MOCK) as m: url = API_BASE_URL + '/forms/' + self.formID + '/responses' m.get(url, json={}) self.responses.list(self.formID) history = m.request_history self.assertEqual(history[0].url, url) self.assertEqual(history[0].method, 'GET') def test_list_correct_params(self): """ paramters are sent correctly """ with requests_mock.mock(real_http=not MOCK) as m: url = API_BASE_URL + '/forms/' + self.formID + '/responses' m.get(url, json={}) self.responses.list(self.formID, pageSize='100', since='2000-01-01T00:00:00Z', completed=True, fields=['1', '2']) history = m.request_history query = history[0].url.split('?')[1] params = dict(urllib.parse.parse_qs(query)) self.assertEqual(params.pop('page_size')[0], '100') self.assertEqual(params.pop('since')[0], '2000-01-01T00:00:00Z') self.assertEqual(params.pop('completed')[0], 'true') self.assertEqual(params.pop('fields')[0], '1,2') def test_list_fetches_responses(self): """ get all responses does not throw an error """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms/{}/responses'.format(self.formID), json=dict(total_items=0)) result = self.responses.list(self.formID) self.assertEqual(result.pop('total_items'), 0) def test_list_fetches_responses_with_params(self): """ get all responses does not throw an error with parameters """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms/{}/responses'.format(self.formID), json=dict(total_items=0)) result = self.responses.list(self.formID, pageSize=100, since='2000-01-01T00:00:00Z', completed=True, fields=['1', '2']) self.assertEqual(result.pop('total_items'), 0) def test_delete_one_token_returns_method_and_path(self): """ delete response has the correct method and path when deleting one token """ with requests_mock.mock(real_http=not MOCK) as m: url = API_BASE_URL + '/forms/' + self.formID + '/responses?included_tokens=1' m.delete(url, json={}) self.responses.delete(self.formID, includedTokens='1') history = m.request_history self.assertEqual(history[0].url, url) self.assertEqual(history[0].method, 'DELETE') def test_delete_multiple_token_returns_method_and_path(self): """ delete response has the correct method and path when deleting multiple tokens """ with requests_mock.mock(real_http=not MOCK) as m: url = API_BASE_URL + '/forms/' + self.formID + '/responses?included_tokens=1%2C2%2C3' m.delete(url, json={}) self.responses.delete(self.formID, includedTokens=['1', '2', '3']) history = m.request_history self.assertEqual(history[0].url, url) self.assertEqual(history[0].method, 'DELETE')
class FormsTestCase(TestCase): def setUp(self): self.forms = Typeform(TOKEN).forms if not MOCK: form = self.forms.create( dict(title="Form's test form", workspace={'href': WORKSPACE})) self.formID = form.get('id') else: self.formID = 'MOCK-FORM-ID' def tearDown(self): if not MOCK: list = self.forms.list(workspaceId=WORKSPACE_ID) forms = list.get('items', []) for form in forms: self.forms.delete(form.get('id')) def test_forms_returns_method_and_path(self): """ get all forms has the correct method and path """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms', json={}) self.forms.list(workspaceId=WORKSPACE_ID) history = m.request_history self.assertEqual( history[0].url, API_BASE_URL + '/forms?workspace_id={}'.format(WORKSPACE_ID)) self.assertEqual(history[0].method, 'GET') def test_forms_correct_params(self): """ paramters are sent correctly """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms', json={}) self.forms.list(page=2, pageSize=10, search='forms_correct_params', workspaceId=WORKSPACE_ID) history = m.request_history query = history[0].url.split('?')[1] params = dict(urllib.parse.parse_qs(query)) self.assertEqual(params.pop('page')[0], '2') self.assertEqual(params.pop('page_size')[0], '10') self.assertEqual(params.pop('search')[0], 'forms_correct_params') self.assertEqual(params.pop('workspace_id')[0], WORKSPACE_ID) def test_forms_get_correct_id(self): """ get sends the correct UID """ with requests_mock.mock() as m: m.get(API_BASE_URL + '/forms/' + self.formID, json={}) self.forms.get(self.formID) history = m.request_history self.assertEqual(history[0].url, API_BASE_URL + '/forms/' + self.formID) def test_forms_get_sets_get_method(self): """ get sets get method """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms/' + self.formID, json={}) self.forms.get(self.formID) history = m.request_history self.assertEqual(history[0].method, 'GET') def test_forms_update_updates_a_form(self): """ update updates a form """ with requests_mock.mock(real_http=not MOCK) as m: title = 'forms_update_updates_a_form' m.put(API_BASE_URL + '/forms/' + self.formID, json=dict(title=title)) result = self.forms.update(self.formID, data={'title': title}) self.assertEqual(result.get('title'), title) def test_forms_update_as_patch_updates_a_form(self): """ update as patch updates a form """ with requests_mock.mock(real_http=not MOCK) as m: m.patch(API_BASE_URL + '/forms/' + self.formID, json='OK') result = self.forms.update( self.formID, patch=True, data=[ dict(op='replace', path='/title', value='forms_update_as_patch_updates_a_form') ]) self.assertEqual(result, 'OK') def test_forms_update_sets_put_method_in_request_by_default(self): """ update sets put method in request by default """ with requests_mock.mock(real_http=not MOCK) as m: m.put(API_BASE_URL + '/forms/' + self.formID, json={}) self.forms.update( self.formID, data={ 'title': 'forms_update_sets_put_method_in_request_by_default' }) history = m.request_history self.assertEqual(history[0].method, 'PUT') def test_forms_delete_removes_the_correct_uid_form(self): """ delete removes the correct uid form """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms/{}'.format(self.formID), json=dict(id=str(self.formID))) m.delete(API_BASE_URL + '/forms/{}'.format(self.formID), json={}) get_one_result = self.forms.get(self.formID) self.assertEqual(get_one_result.get('id'), self.formID) self.forms.delete(self.formID) m.get(API_BASE_URL + '/forms/{}'.format(self.formID), json=dict(code='FORM_NOT_FOUND', description='Non existing form with uid {}'.format( self.formID))) try: self.forms.get(self.formID) except Exception as err: error = str(err) self.assertEqual(error, 'Non existing form with uid %s' % self.formID) def test_forms_create_has_the_correct_path_and_method(self): """ create has the correct path and method """ with requests_mock.mock(real_http=not MOCK) as m: m.post(API_BASE_URL + '/forms', json={}) self.forms.create( dict(title='forms_create_has_the_correct_path_and_method', workspace={'href': WORKSPACE})) history = m.request_history self.assertEqual(history[0].method, 'POST') self.assertEqual(history[0].url, API_BASE_URL + '/forms') def test_forms_create_creates_a_new_form(self): """ create creates a new form """ with requests_mock.mock(real_http=not MOCK) as m: m.post(API_BASE_URL + '/forms', json=dict(id=str(self.formID))) m.get(API_BASE_URL + '/forms/{}'.format(self.formID), json=dict(id=str(self.formID))) create_result = self.forms.create( dict( title='forms_create_creates_a_new_form', workspace={'href': WORKSPACE}, )) formID = create_result.get('id') result = self.forms.get(formID) self.assertIsNone(create_result.get('code', None)) self.assertEqual(result.get('id'), formID) def test_forms_get_messages_has_the_correct_path_and_method(self): """ get messages has the correct path and method """ with requests_mock.mock(real_http=not MOCK) as m: m.get(API_BASE_URL + '/forms/' + self.formID + '/messages', json={}) self.forms.messages.get(self.formID) history = m.request_history self.assertEqual(history[0].method, 'GET') self.assertEqual( history[0].url, API_BASE_URL + '/forms/' + self.formID + '/messages') def test_forms_update_messages_has_the_correct_path_and_method(self): """ update messages has the correct path and method """ with requests_mock.mock(real_http=not MOCK) as m: m.put(API_BASE_URL + '/forms/' + self.formID + '/messages') self.forms.messages.update(self.formID) history = m.request_history self.assertEqual(history[0].method, 'PUT') self.assertEqual( history[0].url, API_BASE_URL + '/forms/' + self.formID + '/messages')