def test_userdata(mocker, contact_info_fake):
    driver_mock, wait_mock = mocker.MagicMock(), mocker.MagicMock()

    page = ContactJsonPage(driver_mock, wait_mock)
    page.rawdata = lambda: json.dumps(contact_info_fake)

    freelancer = contact_info_fake['freelancer']
    address = freelancer['address']
    assert page.userdata() == {
        'full_name': ' '.join(
            (freelancer['firstName'], freelancer['lastName'])),
        'first_name': freelancer['firstName'],
        'last_name': freelancer['lastName'],
        'email': freelancer['email']['address'],
        'phone_number': freelancer['phone'],
        'picture_url': freelancer['portrait']['bigPortrait'],
        'address': {
            'line1': address['street'],
            'line2': address['additionalInfo'],
            'city': address['city'],
            'state': address['state'],
            'postal_code': address['zip'],
            'country': address['country'],
        }
    }
def test_data(mocker, contact_info_fake):
    driver_mock, wait_mock = mocker.MagicMock(), mocker.MagicMock()

    page = ContactJsonPage(driver_mock, wait_mock)
    page.rawdata = lambda: json.dumps(contact_info_fake)

    assert page.data() == json.loads(page.rawdata())
def test_get(mocker):
    driver_mock, wait_mock = mocker.MagicMock(), mocker.MagicMock()

    page = ContactJsonPage(driver_mock, wait_mock)
    page.get()

    driver_mock.get.assert_called_once_with(page.url)
def test_rawdata(mocker):
    driver_mock, wait_mock = mocker.MagicMock(), mocker.MagicMock()

    page = ContactJsonPage(driver_mock, wait_mock)
    page.rawdata()

    driver_mock.get.assert_called_once_with(page.url)
    find_element_by_xpath = driver_mock.find_element_by_xpath
    get_attribute = find_element_by_xpath.return_value.get_attribute
    find_element_by_xpath.assert_called_once_with('//pre')
    get_attribute.assert_called_once_with('innerHTML')
def test_init(mocker):
    driver_mock, wait_mock = mocker.MagicMock(), mocker.MagicMock()

    page = ContactJsonPage(driver_mock, wait_mock)

    assert page.driver == driver_mock
    assert page.wait == wait_mock
Пример #6
0
 def __init__(self,
              username,
              password,
              secret_answer,
              driver=None,
              wait=None):
     self.username = username
     self.password = password
     self.secret_answer = secret_answer
     options = ChromeOptions()
     if settings.HEADLESS:
         options.add_argument("--headless")
     self.driver = driver or Chrome(options=options)
     self.wait = wait or WebDriverWait(self.driver, settings.WAIT_TIMEOUT)
     self.login_page = LoginPage(self.driver, self.wait)
     self.home_page = HomePage(self.driver, self.wait)
     self.contact_json_page = ContactJsonPage(self.driver, self.wait)
     self.authorization_page = AuthorizationPage(self.driver, self.wait)
Пример #7
0
class Upwork:
    def __init__(self,
                 username,
                 password,
                 secret_answer,
                 driver=None,
                 wait=None):
        self.username = username
        self.password = password
        self.secret_answer = secret_answer
        options = ChromeOptions()
        if settings.HEADLESS:
            options.add_argument("--headless")
        self.driver = driver or Chrome(options=options)
        self.wait = wait or WebDriverWait(self.driver, settings.WAIT_TIMEOUT)
        self.login_page = LoginPage(self.driver, self.wait)
        self.home_page = HomePage(self.driver, self.wait)
        self.contact_json_page = ContactJsonPage(self.driver, self.wait)
        self.authorization_page = AuthorizationPage(self.driver, self.wait)

    @driver_except
    def login(self):
        logger.info('Starting login')
        self.login_page.login(self.username, self.password)
        logger.info('Verifying if needs secret answer')
        self.authorization_page.ensure_authorization(self.secret_answer)
        logger.info('Waiting to be redirect to home')
        self.home_page.wait_loading()

    @driver_except
    def userdata(self):
        logger.info('Verifying if needs secret answer')
        self.authorization_page.ensure_authorization(self.secret_answer)
        logger.info('Getting userdata from home page')
        return self.home_page.userdata()

    @driver_except
    def dump_userdata(self, path=None, indent=4):
        path = path or f'{self.username}.json'
        with open(path, 'w') as f:
            logger.info(f'Saving userdata in {path}')
            json.dump(self.userdata(), f, indent=indent)

    @driver_except
    def profile(self):
        logger.info('Verifying if needs secret answer')
        self.authorization_page.ensure_authorization(self.secret_answer)
        logger.info('Getting profile data')
        return self.contact_json_page.profile()

    @driver_except
    def dump_profile(self, path=None, indent=4):
        path = path or f'{self.username}_profile.json'
        with open(path, 'w') as f:
            logger.info(f'Saving profile data in {path}')
            json.dump(self.profile().dict(), f, indent=indent)
def test_profile(mocker, contact_info_fake):
    driver_mock, wait_mock = mocker.MagicMock(), mocker.MagicMock()

    page = ContactJsonPage(driver_mock, wait_mock)
    page.rawdata = lambda: json.dumps(contact_info_fake)
    profile = page.profile()

    freelancer = contact_info_fake['freelancer']
    address = freelancer['address']
    assert profile.full_name == ' '.join((
        freelancer['firstName'],
        freelancer['lastName'],
    ))
    assert profile.first_name == freelancer['firstName']
    assert profile.last_name == freelancer['lastName']
    assert profile.email == freelancer['email']['address']
    assert profile.phone_number == freelancer['phone']
    assert profile.picture_url == freelancer['portrait']['bigPortrait']
    assert profile.address.line1 == address['street']
    assert profile.address.line2 == address['additionalInfo']
    assert profile.address.city == address['city']
    assert profile.address.state == address['state']
    assert profile.address.postal_code == address['zip']
    assert profile.address.country == address['country']
def test_url():
    page = ContactJsonPage(None, None)
    assert page.url == 'https://www.upwork.com/freelancers/settings/api/v1/contactInfo'