22import numpy as np
33import os
44from astropy .tests .helper import pytest
5-
6- from .. import Alma
75from ...utils .testing_tools import MockResponse
86from ...exceptions import (InvalidQueryError )
97
8+ # keyring is an optional dependency required by the alma module.
9+ try :
10+ import keyring
11+ HAS_KEYRING = True
12+ except ImportError :
13+ HAS_KEYRING = False
14+
15+ if HAS_KEYRING :
16+ from .. import Alma
17+
18+ SKIP_TESTS = not HAS_KEYRING
19+
20+
1021DATA_DIR = os .path .join (os .path .dirname (__file__ ), 'data' )
1122
23+
1224def data_path (filename ):
1325 return os .path .join (DATA_DIR , filename )
1426
@@ -36,6 +48,7 @@ def data_path(filename):
3648 'initial_response.html' }
3749 }
3850
51+
3952def url_mapping (url ):
4053 """
4154 Map input URLs to output URLs for the staging test
@@ -50,9 +63,10 @@ def url_mapping(url):
5063 else :
5164 return mapping [url ]
5265
66+
5367def alma_request (request_type , url , params = None , payload = None , data = None ,
5468 ** kwargs ):
55- if isinstance (DATA_FILES [request_type ][url ],dict ):
69+ if isinstance (DATA_FILES [request_type ][url ], dict ):
5670 payload = (payload if payload is not None else
5771 params if params is not None else
5872 data if data is not None else
@@ -73,10 +87,11 @@ def alma_request(request_type, url, params=None, payload=None, data=None,
7387 return response
7488
7589
76-
7790def _get_dataarchive_url (* args ):
7891 return 'http://almascience.eso.org'
7992
93+
94+ @pytest .mark .skipif ('SKIP_TESTS' )
8095def test_SgrAstar (monkeypatch ):
8196 # Local caching prevents a remote query here
8297
@@ -95,6 +110,8 @@ def test_SgrAstar(monkeypatch):
95110 assert len (result ) == 92
96111 assert b'2011.0.00217.S' in result ['Project code' ]
97112
113+
114+ @pytest .mark .skipif ('SKIP_TESTS' )
98115def test_staging (monkeypatch ):
99116
100117 monkeypatch .setattr (Alma , '_get_dataarchive_url' , _get_dataarchive_url )
@@ -105,27 +122,29 @@ def test_staging(monkeypatch):
105122
106123 target = 'NGC4945'
107124 project_code = '2011.0.00121.S'
108- payload = {'project_code' :project_code ,
109- 'source_name_resolver' :target , }
125+ payload = {'project_code' : project_code ,
126+ 'source_name_resolver' : target }
110127 result = alma .query (payload = payload )
111128
112129 uid_url_table = alma .stage_data (result ['Asdm uid' ])
113130 assert len (uid_url_table ) == 2
114131
115132
133+ @pytest .mark .skipif ('SKIP_TESTS' )
116134def test_validator (monkeypatch ):
117135
118136 monkeypatch .setattr (Alma , '_get_dataarchive_url' , _get_dataarchive_url )
119137 alma = Alma ()
120138 monkeypatch .setattr (alma , '_get_dataarchive_url' , _get_dataarchive_url )
121139 monkeypatch .setattr (alma , '_request' , alma_request )
122140
123-
124141 with pytest .raises (InvalidQueryError ) as exc :
125142 alma .query (payload = {'invalid_parameter' : 1 })
126143
127144 assert 'invalid_parameter' in str (exc .value )
128145
146+
147+ @pytest .mark .skipif ('SKIP_TESTS' )
129148def test_parse_staging_request_page_asdm (monkeypatch ):
130149 """
131150 Example:
@@ -157,6 +176,8 @@ def test_parse_staging_request_page_asdm(monkeypatch):
157176 assert tbl [0 ]['uid' ] == 'uid___A002_X47bd4d_X4c7.asdm.sdm.tar'
158177 np .testing .assert_approx_equal (tbl [0 ]['size' ], - 1e-9 )
159178
179+
180+ @pytest .mark .skipif ('SKIP_TESTS' )
160181def test_parse_staging_request_page_mous (monkeypatch ):
161182 monkeypatch .setattr (Alma , '_get_dataarchive_url' , _get_dataarchive_url )
162183 alma = Alma ()
@@ -173,6 +194,8 @@ def test_parse_staging_request_page_mous(monkeypatch):
173194 np .testing .assert_approx_equal (tbl [0 ]['size' ], 0.2093 )
174195 assert len (tbl ) == 26
175196
197+
198+ @pytest .mark .skipif ('SKIP_TESTS' )
176199def test_parse_staging_request_page_mous_cycle0 (monkeypatch ):
177200 monkeypatch .setattr (Alma , '_get_dataarchive_url' , _get_dataarchive_url )
178201 alma = Alma ()
0 commit comments