1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15+ import pytest
16+
1517from google .cloud .sql .connector .connection_name import ConnectionName
18+ from google .cloud .sql .connector .exceptions import DnsResolutionError
1619from google .cloud .sql .connector .resolver import DefaultResolver
1720from google .cloud .sql .connector .resolver import DnsResolver
1821
@@ -32,3 +35,38 @@ async def test_DnsResolver_with_conn_str() -> None:
3235 resolver = DnsResolver ()
3336 result = await resolver .resolve (conn_str )
3437 assert result == conn_name
38+
39+
40+ async def test_DnsResolver_with_dns_name () -> None :
41+ """Test DnsResolver resolves TXT record into proper instance connection name."""
42+ resolver = DnsResolver ()
43+ resolver .port = 5053
44+ result = await resolver .resolve (conn_str )
45+ assert result == conn_name
46+
47+
48+ async def test_DnsResolver_with_malformed_txt () -> None :
49+ """Test DnsResolver with TXT record that holds malformed instance connection name.
50+
51+ Should throw DnsResolutionError
52+ """
53+ resolver = DnsResolver ()
54+ resolver .port = 5053
55+ with pytest .raises (DnsResolutionError ) as exc_info :
56+ await resolver .resolve ("bad.example.com" )
57+ assert (
58+ exc_info .value .args [0 ]
59+ == "Unable to parse TXT record for `bad.example.com` -> `bad-instance-name`"
60+ )
61+
62+
63+ async def test_DnsResolver_with_bad_dns_name () -> None :
64+ """Test DnsResolver with bad dns name.
65+
66+ Should throw DnsResolutionError
67+ """
68+ resolver = DnsResolver ()
69+ resolver .port = 5053
70+ with pytest .raises (DnsResolutionError ) as exc_info :
71+ await resolver .resolve ("bad.dns.com" )
72+ assert exc_info .value .args [0 ] == "Unable to resolve TXT record for `bad.dns.com`"
0 commit comments