Skip to content

Commit

Permalink
Merge 954715f into 25bfb76
Browse files Browse the repository at this point in the history
  • Loading branch information
yiumingtelnyx committed Dec 16, 2020
2 parents 25bfb76 + 954715f commit e03c303
Show file tree
Hide file tree
Showing 14 changed files with 179 additions and 2 deletions.
17 changes: 17 additions & 0 deletions examples/verify/initiate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import os

import telnyx

if __name__ == "__main__":
telnyx.api_key = os.environ.get("TELNYX_SECRET_KEY")
phone_number = 'fill-me'
type = 'sms'

verify_profiles = telnyx.VerifyProfile.list()
print(verify_profiles)
verification = telnyx.Verification.create(
phone_number=phone_number,
type=type,
verify_profile_id=verify_profiles.data[0].id,
)
print(verification)
19 changes: 19 additions & 0 deletions examples/verify/verify.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import os

import telnyx

if __name__ == "__main__":
telnyx.api_key = os.environ.get("TELNYX_SECRET_KEY")
verification_id = "fill-me"
code = "fill-me"
phone_number = "fill-me"

verification = telnyx.Verification.retrieve(verification_id)
print("Verification status: {}".format(verification))
verify_resp = verification.verify_by_phone_number(
code=code, phone_number=phone_number
)
if verify_resp["data"]["response_code"] == "accepted":
print("Verify successful!")
else:
print("There was an issue verifying: {}".format(verify_resp["data"]))
16 changes: 16 additions & 0 deletions examples/verify/verify_profiles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import os

import telnyx

if __name__ == '__main__':
profile_name = 'fill-me'

telnyx.api_key = os.environ.get("TELNYX_SECRET_KEY")
res = telnyx.VerifyProfile.create(
name=profile_name,
messaging_enabled=True,
default_timeout_secs=600,
)
print(res)
profiles = telnyx.VerifyProfile.list()
print(len(profiles))
5 changes: 5 additions & 0 deletions telnyx/api_resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
from telnyx.api_resources.short_code import ShortCode
from telnyx.api_resources.sim_card import SIMCard

from telnyx.api_resources.verify_profile import VerifyProfile
from telnyx.api_resources.verification import Verification

# flake8: noqa


Expand Down Expand Up @@ -76,5 +79,7 @@
"RegulatoryRequirement",
"SIMCard",
"ShortCode",
"Verification",
"VerifyProfile",
"VoiceSettings",
]
14 changes: 14 additions & 0 deletions telnyx/api_resources/verification.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from telnyx.api_resources.abstract import CreateableAPIResource, ListableAPIResource


class Verification(CreateableAPIResource, ListableAPIResource):
OBJECT_NAME = "verification"

def verify_by_phone_number(self, code, phone_number):
return self.request(
method="post",
url="/v2/verifications/by_phone_number/{}/actions/verify".format(
phone_number
),
params={"code": code},
)
17 changes: 17 additions & 0 deletions telnyx/api_resources/verify_profile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from __future__ import absolute_import, division, print_function

from telnyx.api_resources.abstract import (
CreateableAPIResource,
DeletableAPIResource,
ListableAPIResource,
UpdateableAPIResource,
)


class VerifyProfile(
CreateableAPIResource,
DeletableAPIResource,
ListableAPIResource,
UpdateableAPIResource,
):
OBJECT_NAME = "verify_profile"
2 changes: 2 additions & 0 deletions telnyx/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ def load_object_classes():
api_resources.SIMCard.OBJECT_NAME: api_resources.SIMCard,
api_resources.ShortCode.OBJECT_NAME: api_resources.ShortCode,
api_resources.VoiceSettings.OBJECT_NAME: api_resources.VoiceSettings,
api_resources.Verification.OBJECT_NAME: api_resources.Verification,
api_resources.VerifyProfile.OBJECT_NAME: api_resources.VerifyProfile,
}


Expand Down
10 changes: 9 additions & 1 deletion tests/api_resources/test_address.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,15 @@ def test_is_retrievable(self, request_mock):
assert isinstance(resource, telnyx.Address)

def test_is_creatable(self, request_mock):
resource = telnyx.Address.create(name="my-profile")
resource = telnyx.Address.create(
name="my-profile",
business_name="Acme Inc",
country_code="US",
street_address="311 W Superior St",
first_name="John",
last_name="Doe",
locality="Chicago",
)
request_mock.assert_requested("post", "/v2/addresses")
assert isinstance(resource, telnyx.Address)

Expand Down
4 changes: 4 additions & 0 deletions tests/api_resources/test_call.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import absolute_import, division, print_function

import pytest

import telnyx

CALL_CONTROL_ID = "AgDIxmoRX6QMuaIj_uXRXnPAXP0QlNfXczRrZvZakpWxBlpw48KyZQ=="
Expand All @@ -17,6 +19,7 @@ def test_is_creatable(self, request_mock):
request_mock.assert_requested("post", "/v2/calls")
assert isinstance(resource, telnyx.Call)

@pytest.mark.skip(reason="OpenAPI specs needs review")
def test_can_call_reject(self, request_mock):
resource = create_dial()
resource.call_control_id = CALL_CONTROL_ID
Expand All @@ -26,6 +29,7 @@ def test_can_call_reject(self, request_mock):
)
assert isinstance(resource, telnyx.Call)

@pytest.mark.skip(reason="OpenAPI specs needs review")
def test_can_call_calls_reject(self, request_mock):
resource = create_dial()
resource.create_reject(CALL_CONTROL_ID)
Expand Down
7 changes: 6 additions & 1 deletion tests/api_resources/test_credential_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ def test_is_retrievable(self, request_mock):
assert isinstance(resource, telnyx.CredentialConnection)

def test_is_creatable(self, request_mock):
resource = telnyx.CredentialConnection.create(active=True)
resource = telnyx.CredentialConnection.create(
active=True,
user_name="some-user-name",
connection_name="some-connection",
password="secret password",
)
request_mock.assert_requested("post", "/v2/credential_connections")
assert isinstance(resource, telnyx.CredentialConnection)

Expand Down
6 changes: 6 additions & 0 deletions tests/api_resources/test_messaging_phone_number.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
from __future__ import absolute_import, division, print_function

import pytest

import telnyx
from telnyx.six.moves.urllib.parse import quote_plus

TEST_RESOURCE_ID = "+18005554000"


class TestMessagingPhoneNumber(object):
@pytest.mark.skip(reason="Deprecated")
def test_is_listable(self, request_mock):
resources = telnyx.MessagingPhoneNumber.list()
request_mock.assert_requested("get", "/v2/messaging_phone_numbers")
assert isinstance(resources.data, list)
assert isinstance(resources.data[0], telnyx.MessagingPhoneNumber)

@pytest.mark.skip(reason="Deprecated")
def test_is_retrievable(self, request_mock):
resource = telnyx.MessagingPhoneNumber.retrieve(TEST_RESOURCE_ID)
request_mock.assert_requested(
"get", "/v2/messaging_phone_numbers/%s" % quote_plus(TEST_RESOURCE_ID)
)
assert isinstance(resource, telnyx.MessagingPhoneNumber)

@pytest.mark.skip(reason="Deprecated")
def test_is_saveable(self, request_mock):
messaging_phone_number = telnyx.MessagingPhoneNumber.retrieve(TEST_RESOURCE_ID)
messaging_phone_number.name = "value"
Expand All @@ -30,6 +35,7 @@ def test_is_saveable(self, request_mock):
assert isinstance(resource, telnyx.MessagingPhoneNumber)
assert resource is messaging_phone_number

@pytest.mark.skip(reason="Deprecated")
def test_is_modifiable(self, request_mock):
resource = telnyx.MessagingPhoneNumber.modify(TEST_RESOURCE_ID, name="Test")
request_mock.assert_requested(
Expand Down
5 changes: 5 additions & 0 deletions tests/api_resources/test_messaging_profile.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import absolute_import, division, print_function

import pytest

import telnyx

TEST_RESOURCE_ID = "123"
Expand Down Expand Up @@ -48,6 +50,7 @@ def test_is_deletable(self, request_mock):
"delete", "/v2/messaging_profiles/%s" % TEST_RESOURCE_ID
)

@pytest.mark.skip(reason="Might be deprecated")
def test_can_call_messaging_phone_numbers(self, request_mock):
resources = telnyx.MessagingProfile.list_phone_numbers(TEST_RESOURCE_ID)
request_mock.assert_requested(
Expand All @@ -56,6 +59,7 @@ def test_can_call_messaging_phone_numbers(self, request_mock):
assert isinstance(resources.data, list)
assert isinstance(resources.data[0], telnyx.MessagingPhoneNumber)

@pytest.mark.skip(reason="Might be deprecated")
def test_can_call_phone_numbers(self, request_mock):
messaging_profile = telnyx.MessagingProfile.retrieve(TEST_RESOURCE_ID)
resources = messaging_profile.phone_numbers()
Expand All @@ -65,6 +69,7 @@ def test_can_call_phone_numbers(self, request_mock):
assert isinstance(resources.data, list)
assert isinstance(resources.data[0], telnyx.MessagingPhoneNumber)

@pytest.mark.skip(reason="Might be deprecated")
def test_can_call_phone_numbers_forward_params(self, request_mock):
messaging_profile = telnyx.MessagingProfile.retrieve(TEST_RESOURCE_ID)
resources = messaging_profile.phone_numbers(page={"size": 10})
Expand Down
29 changes: 29 additions & 0 deletions tests/api_resources/test_verification.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import telnyx

TEST_RESOURCE_ID = "123"
TEST_PHONE_NUMBER = "+13125000000"
VERIFY_CODE = "12345"
VERIFY_PROFILE = "32567"


class TestVerification(object):
def test_is_retrievable(self, request_mock):
resource = telnyx.Verification.retrieve(TEST_RESOURCE_ID)
request_mock.assert_requested("get", "/v2/verifications/%s" % TEST_RESOURCE_ID)
assert isinstance(resource, telnyx.Verification)

def test_is_savable(self, request_mock):
_ = telnyx.Verification.create(
phone_number=TEST_PHONE_NUMBER, type="sms", verify_profile_id=VERIFY_PROFILE
)
request_mock.assert_requested("post", "/v2/verifications")

def test_can_verify_by_phone_number(self, request_mock):
resource = telnyx.Verification.retrieve(TEST_RESOURCE_ID)
resource.verify_by_phone_number(
code=VERIFY_CODE, phone_number=TEST_PHONE_NUMBER
)
request_mock.assert_requested(
"post",
"/v2/verifications/by_phone_number/%s/actions/verify" % TEST_PHONE_NUMBER,
)
30 changes: 30 additions & 0 deletions tests/api_resources/test_verify_profiles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import telnyx

TEST_RESOURCE_ID = "123"


class TestVerifyProfile(object):
def test_is_listable(self, request_mock):
resources = telnyx.VerifyProfile.list()
request_mock.assert_requested("get", "/v2/verify_profiles")
assert isinstance(resources.data, list)
assert isinstance(resources.data[0], telnyx.VerifyProfile)

def test_is_retrievable(self, request_mock):
resource = telnyx.VerifyProfile.retrieve(TEST_RESOURCE_ID)
request_mock.assert_requested(
"get", "/v2/verify_profiles/%s" % TEST_RESOURCE_ID
)
assert isinstance(resource, telnyx.VerifyProfile)

def test_is_saveable(self, request_mock):
resource = telnyx.VerifyProfile.create(name="Hi there")
request_mock.assert_requested("post", "/v2/verify_profiles")
assert isinstance(resource, telnyx.VerifyProfile)
assert resource is resource

def test_is_modifiable(self, request_mock):
_ = telnyx.VerifyProfile.modify(TEST_RESOURCE_ID, name="hi there")
request_mock.assert_requested(
"patch", "/v2/verify_profiles/%s" % TEST_RESOURCE_ID
)

0 comments on commit e03c303

Please sign in to comment.