Skip to content

Commit 02e7f15

Browse files
authored
fix: ensure build passes (#129)
1 parent a915f82 commit 02e7f15

File tree

7 files changed

+499
-426
lines changed

7 files changed

+499
-426
lines changed

.github/workflows/test.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
strategy:
1313
max-parallel: 1
1414
matrix:
15-
python-version: ["3.8", "3.9", "3.11"]
15+
python-version: ["3.9", "3.11"]
1616
env:
1717
PYSNC_SERVER: ${{ secrets.PYSNC_SERVER }}
1818
PYSNC_USERNAME: ${{ secrets.PYSNC_USERNAME }}
@@ -21,20 +21,20 @@ jobs:
2121
PYSNC_CLIENT_SECRET: ${{ secrets.PYSNC_CLIENT_SECRET }}
2222
steps:
2323
- name: check out repository
24-
uses: actions/checkout@v3
24+
uses: actions/checkout@v4
2525
- name: set up python ${{ matrix.python-version }}
26-
uses: actions/setup-python@v4
26+
uses: actions/setup-python@v5
2727
with:
2828
python-version: ${{ matrix.python-version }}
2929
- name: setup poetry
3030
uses: snok/install-poetry@v1
3131
with:
32-
poetry-version: 1.4.2
32+
poetry-version: 2.1.3
3333
virtualenvs-create: true
3434
virtualenvs-in-project: true
3535
- name: cache deps
3636
id: cache-deps
37-
uses: actions/cache@v3
37+
uses: actions/cache@v4
3838
with:
3939
path: .venv
4040
key: pydeps-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
@@ -58,20 +58,20 @@ jobs:
5858
if: github.ref == 'refs/heads/main'
5959
needs: install-test
6060
steps:
61-
- uses: actions/checkout@v3
61+
- uses: actions/checkout@v4
6262
- name: Setup Python
63-
uses: actions/setup-python@v4
63+
uses: actions/setup-python@v5
6464
with:
6565
python-version: "3.11"
6666
- name: cache poetry install
67-
uses: actions/cache@v2
67+
uses: actions/cache@v4
6868
with:
6969
path: ~/.local
70-
key: poetry-1.4.2-0
70+
key: poetry-2.1.3-0
7171
- name: setup poetry
7272
uses: snok/install-poetry@v1
7373
with:
74-
poetry-version: 1.4.2
74+
poetry-version: 2.1.3
7575
virtualenvs-create: true
7676
virtualenvs-in-project: true
7777
- name: cache deps

poetry.lock

Lines changed: 465 additions & 379 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ classifiers = [
1717
]
1818

1919
[tool.poetry.dependencies]
20-
python = "^3.8"
21-
requests = "^2.31.0"
20+
python = "^3.9"
21+
requests = ">=2.32"
2222
requests-oauthlib = { version = ">=1.2.0", optional = true}
2323
certifi = "^2024.7.4"
24-
urllib3 = "^2.0.7"
24+
urllib3 = ">=2.5"
2525

2626
[tool.poetry.extras]
2727
oauth = ["requests-oauthlib"]

pysnc/record.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ def get_element(self, field) -> GlideElement:
779779
c = self._current()
780780
if c is None:
781781
raise NoRecordException('cannot get a value from nothing, did you forget to call next() or initialize()?')
782-
return self._current()[field] if field in c else None
782+
return self._current()[field] if field in c else None # type: ignore
783783

784784
def set_value(self, field, value):
785785
"""
@@ -831,7 +831,7 @@ def set_link(self, field, value):
831831

832832
def get_link(self, no_stack: bool=False) -> str:
833833
"""
834-
Generate a full URL to the current record. sys_id will be -1 if there is no current record.
834+
Generate a full URL to the current record. sys_id will be -1 i*f there is no current record.
835835
836836
:param bool no_stack: Default ``False``, adds ``&sysparm_stack=<table>_list.do?sysparm_query=active=true`` to the URL
837837
:param bool list: Default ``False``, if ``True`` then provide a link to the record set, not the current record

test/test_snc_api_query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def test_nonjson_error(self):
229229

230230
super_long_non_existant_name = "A" * 23000
231231
gr = client.GlideRecord(super_long_non_existant_name)
232-
self.assertRaisesRegex(exceptions.RequestException, r'^<!DOCTYPE html>.*', lambda: gr.get('doesntmatter'))
232+
self.assertRaisesRegex(exceptions.RequestException, r'^<.*html>.*', lambda: gr.get('doesntmatter'))
233233

234234
def test_changes(self):
235235
client = ServiceNowClient(self.c.server, self.c.credentials)

test/test_snc_api_query_advanced.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,19 @@ def test_join_query_2(self):
3131
def test_rl_query_manual(self):
3232
# simulate a left outter join by finding users with no roles
3333
client = ServiceNowClient(self.c.server, self.c.credentials)
34-
gr = client.GlideRecord('sys_user')
35-
gr.add_encoded_query('RLQUERYsys_user_has_role.user,=0^ENDRLQUERY')
34+
gr = client.GlideRecord('sys_user_group')
35+
gr.add_encoded_query('RLQUERYsys_group_has_role.group,>0,m2m^role.nameLIKEadmin^ENDRLQUERY')
3636
gr.query()
37-
self.assertGreater(gr.get_row_count(), 1)
38-
self.assertLess(gr.get_row_count(), 10)
39-
40-
def test_rl_query_basic(self):
41-
# simulate a left outter join by finding users with no roles
42-
client = ServiceNowClient(self.c.server, self.c.credentials)
43-
gr = client.GlideRecord('sys_user')
44-
gr.add_rl_query('sys_user_has_role', 'user', '=0')
45-
self.assertEqual(gr.get_encoded_query(), 'RLQUERYsys_user_has_role.user,=0^ENDRLQUERY')
46-
gr.query()
47-
self.assertGreater(gr.get_row_count(), 1)
48-
self.assertLess(gr.get_row_count(), 10)
37+
self.assertGreater(gr.get_row_count(), 2)
38+
self.assertLess(gr.get_row_count(), 8)
4939

5040
def test_rl_query_advanced(self):
5141
client = ServiceNowClient(self.c.server, self.c.credentials)
52-
gr = client.GlideRecord('sys_user')
53-
qc = gr.add_rl_query('sys_user_has_role', 'user', '>0', True)
54-
qc.add_query('role.name', 'admin')
55-
self.assertEqual(gr.get_encoded_query(), 'RLQUERYsys_user_has_role.user,>0,m2m^role.name=admin^ENDRLQUERY')
42+
gr = client.GlideRecord('sys_user_group')
43+
qc = gr.add_rl_query('sys_group_has_role', 'group', '>0', True)
44+
qc.add_query('role.name', 'LIKE', 'admin')
45+
self.assertEqual(gr.get_encoded_query(), 'RLQUERYsys_group_has_role.group,>0,m2m^role.nameLIKEadmin^ENDRLQUERY')
5646
gr.query()
57-
self.assertGreater(gr.get_row_count(), 10)
58-
self.assertLess(gr.get_row_count(), 25)
47+
self.assertGreater(gr.get_row_count(), 2)
48+
self.assertLess(gr.get_row_count(), 8)
5949

test/test_snc_api_write.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ def test_crud(self):
2525
# We have validated inserting works, now can we update.
2626
# find us a user to change the opened_by field that isn't us
2727
user = client.GlideRecord('sys_user')
28-
user.add_query('sys_id', '!=', 'javascript:gs.getUserID()')
29-
user.query()
30-
self.assertTrue(user.next())
28+
self.assertTrue(user.get('26fbff173b331300ad3cc9bb34efc4bd')) # problem.admin
3129
self.assertNotEqual(user.sys_id, gr.get_value('opened_by'), 'what this shouldnt happen')
3230
#print(f"new user id is {user.sys_id}")
3331

@@ -36,11 +34,10 @@ def test_crud(self):
3634
self.assertTrue(gr2.get(res))
3735
#print(f"pre-update {gr2.serialize(display_value='both')}")
3836
self.assertTrue(bool(gr2.active))
39-
gr2.active = 'false'
40-
self.assertTrue(gr2.changes())
41-
self.assertFalse(bool(gr2.active))
4237
gr2.short_description = "ABCDEFG0123"
43-
gr2.opened_by = user.sys_id
38+
self.assertTrue(gr2.changes())
39+
self.assertEqual(gr2.get_value('short_description'), "ABCDEFG0123")
40+
gr2.assigned_to = user.sys_id
4441

4542
#print(f"mid-update {gr2.serialize(display_value='both')}")
4643
self.assertIsNotNone(gr2.update())
@@ -49,16 +46,16 @@ def test_crud(self):
4946
# now we expect our record to be different, locally
5047
self.assertTrue(bool(gr2.active)) # server-side forces it to stay true
5148
self.assertEqual(gr2.short_description, 'ABCDEFG0123')
52-
self.assertEqual(gr2.opened_by, user.sys_id)
53-
self.assertNotEqual(gr2.get_display_value('opened_by'), first_user_display)
54-
self.assertEqual(gr2.get_display_value('opened_by'), user.get_display_value('name'))
49+
self.assertEqual(gr2.assigned_to, user.sys_id)
50+
self.assertNotEqual(gr2.get_display_value('assigned_to'), first_user_display)
51+
self.assertEqual(gr2.get_display_value('assigned_to'), user.get_display_value('name'))
5552

5653

5754
# and if we re-query
5855
gr3 = client.GlideRecord('problem')
5956
gr3.get(res)
6057
self.assertEqual(gr3.short_description, "ABCDEFG0123")
61-
self.assertEqual(gr3.get_display_value('opened_by'), user.get_display_value('name'))
58+
self.assertEqual(gr3.get_display_value('assigned_to'), user.get_display_value('name'))
6259

6360
gr4 = gr3.pop_record()
6461
gr4.short_description = 'ZZZ123'

0 commit comments

Comments
 (0)