Common.pm:
- add new functions create_contact and delete_contact()
- these will be used for more tests in controller_customer and for invoice
tests
Change-Id: Ifbcbaab0c8ae899b6dd8a804ef7f1d0ac54e3689
controller_ncos.t:
- diasbled lnp tests, because some servers dont have any lnp carriers to
choose, which crashes the test
Change-Id: Ib6a169d33061e667eb3ae4e01bedd03332f72797
replaced every occurance of move_action + click with move_and_click. all
also have a fallback element if the click doesnt work first try.
Change-Id: I0489dacbda264d509c52016f259368666f3d5c15
runner.t:
- added controller_ncos.t to default test plan
- moved up controller_subscriber.t, so it gets executed earlier since it
is the longest test here
Change-Id: I875bd5cd1d1bab1bb03dad797abdc33058324ad2
controller_timeset.t:
- add a new timeset
- check details of timeset
- add a new event
- check date and description of event
- delete timeset/event
runner.t:
- added controller_timeset.t as an option to execute manually. it will be
added to the default test plan later when its more stable.
NOTE: it is not recommended to execute this file currently. some tests
will fail due to TT#59866
Change-Id: I31863a06725dabc73f7c1c31d1828af312fd2ba5
controller_subscriber.t:
- create a subscriber profile set and subscriber profile
- check details on both
- add subscriber to profile set
- check if subscriber was added to profile set
- delete subscriber profile set
Change-Id: I89c97b1da0e0e754d75b485a0ecebe54aad8495f
admin_login.t:
- removed diag line, else the xml file could have issues
- swapped return statements
runner.t:
- adjust for swapped return statements
Change-Id: I3f0dd0ed50d8fda2e18a15a30a881ad80a8760fe
controller_emergency.t:
- create emergency mapping & container
- check details of both
- add emergency container to domain
- enable emergency mode for domain
- delete everything
- check if deleted
runner.t:
- added controller_emergency.t as an option to execute manually. it will be
added to the default test plan later when its more stable.
Change-Id: I77198ae328525a81042f67a7974614a90a0b4b27
Common.pm:
- use select_if_unselected instead of click. click would sometimes uncheck
already checked entries, which causes crashes.
Change-Id: I81744cfe23a58de5731512fa8d46818ecd781b15
testrunner:
- fix so that *.t doesnt select every file in directory, even ones who are
not added to the default test plan yet.
Change-Id: I6ed9057fed87244b7968cdc05f60825941675579
contoller_ncos.t:
- create a NCOS level
- create NCOS level pattern
- create LNP carrier
- check details from all of them
- delete NCOS level, LNP carrier and NCOS level pattern
runner.t:
- added controller_ncos.t as an option to execute manually. it will be added
to default test plan later when its more stable and more complete
Change-Id: Ib312be843c89fc9e29a1987f1ebe6a0925e917e9
Functions.pm:
- add create_driver(). It will check which port can be used and returns a
webdriver element.
testrunner:
- start 4 instances of geckodriver instead of 1
- start runner.t by default. it is still possible to run other files if
needed.
runner.t will first run a test login to see if the server is here. If login
doesnt work, it will abort the test.
runner.t will then exectute the tests (max. 4 in parallel). Test files have
been modified accordingly to either work with runner.t or to execute
independently.
Change-Id: I628ea82ad786a6ebd713747fe07dda45a538a01c
FirefoxExtensions.pm:
- Decrease element timeout to 5 seconds, but increase timeout on wait_for_text
and move_and_click to 10 seconds. This will allow both functions to execute
at least twice when the element is not found.
Change-Id: I82a6ea2325f2f5ae43f2ed39dd7f4b079cb2ec9c
controller_domain.t:
- enable opus mono and stereo transcoding
- change bitrate
- check if settings are applied
This test could be applied to controller_peering and controller_subscriber
too, but it will stay here for now.
Change-Id: I94d70c1ce380228300a37d9c62d7bb078e663b7e
controller_subscriber.t:
- change subscriber language
- check if correct language has been seleceted
Change-Id: I0d1a12c29a4433f4791727667fdc878848c95980
Common.pm:
- Replace move_action and click combos with move_and_click because crashes
happen from time to time here.
Change-Id: Idf51fdd66c365e7c64d410380044b62421798091
controller_subscriber.t:
- create a new source set
- select new source set for call-forward
- check if source set is beeing used
Change-Id: Iee17dbfacf828c882268be3e2c3b001440bdc726
controller_subscriber.t:
- add tests for block lists
- enable checkboxes and check if enabled
- add entries to the list and check if entries are added
- disable entry and check if it was disabled
Change-Id: I08d52852088b1304d7361e36c8008050f04edcc4
controller_billing.t:
- replace codeblock for clicking on button "Edit" on column Wednesday.
Should speed up the test a little bit.
Change-Id: Icbb4e2d53552c42ec32dd5f5cf97648932992cc0
FirefoxExtensions.pm:
- Add optional fallback parameter. This can be used to move the
mouse somewhere else before moving it to the actual location,
preventing crashes if ajax messes with button visibility again.
Change-Id: I300cccbcc4b99335069796f1d8f56b8fb92bb2b0
controller_peering.t:
- Test will now search for the default customer instead of just selecting
one. Should fix random crash that occured since today
Change-Id: I1ff0affc2837033618240e7c22d334a2632a2f13
controller_customer.t:
- add more tests for checking entries
- use cleaner xpath
- clean up old code
Change-Id: I691fe00639edf95019b64296255f7fa9ebc1f61b
move_and_click automatically moves the pointer to the location and tries to
click it. It is also covered in a try/catch block, so it wont crash if
something goes wrong. should FINALLY fix fraud limits crashes and call
forward crashes.
Change-Id: I50e8b8f4f46b31afbd82f66842bf4f3cda966b77
Common.pm:
- Edit functions to enable testing the cancel button on delete dialogs
Every file where generation of data is handled by a function in Common.pm
either got this test or recieved improvments.
Change-Id: I4fa4d0bb57c3d32f980d7ea540acb38ad12c2b42
controller_customer.t:
- a few changes in xpaths, with the intention to finally fix crashing
fraud limits tests
Change-Id: Iefb9565932ed35c5465673128466fba0273adb84
contoller_subscriber.t:
- create a subscriber
- try to add a call-forward (using b and destination sets)
- delete subscriber
- check if subscriber has been deleted/created
contoller_customer.t:
- subscriber checks have been moved to controller_subscriber.t
Change-Id: Ia61b1de16162ad12a26a3de189d14e5431fd4eae
Common.pm:
- Add create/delete customer() functions. Will allow us to extend stuff,
especially when testing pro versions.
- create_customer has a new argument. If $pbx == 1, it will create a customer
for pbx tests
controller_customer.t:
- Edited to use new functions,
Change-Id: I834a9d92d726f7ca90f223c77dce1f096916016d
controller_peering.t:
- Use a unique name for peering server. This will prevent crashing tests
if a previous peering test failed and/or peering server wasnt deleted.
Change-Id: If49710ae0803d9a8d140ab9a6a38bec38533f96e
controller_domain.t:
- Enter value (valid and invalid) into allowed_ips and check if the value
has been applied
Change-Id: Ic8194da5c8d2b6f0b8eb02cf0d5f98336fb68a3c
controller_admin.t:
- tests if admin is added and checks if said admin can log in.
- deletes admin after test
Common.pm:
- extended login_ok(), it can now use any user or password. If none is
specified, it will use the default username/pw: administrator.
Change-Id: I89a332176a58fdf6a0ad31495f88633c373a39db
controller_customer.t:
- clicking on fraud limits is now done first instead of scrolling to fraud
limits. This is how it is done everywhere else, so hopefully it fixes it.
Change-Id: I51559dc5f15985d00b2ce7fd930c28ac39cb7428
controller_peering.t:
- rewrite said code block to allow use of better xpaths and (hopefully)
make it more reliable.
Change-Id: I1a398e3f0262399f8fba9ce8c6cdd94c21b076d7
Changed how names get generated, because it happens that we generate
something like test9123 and later we create test9 that these two names
will conflict each other when it comes to searching.
Change-Id: I5109e69c9f5b1bd8bcf49be49af535f93a8edbf2
controller_rw_ruleset.t:
- changed reorder rewrite rules test, newly created rule will no longer be
deleted.
- Removed temporarly because somehow xpath behaves very weirdly when
trying to delete it, causing it to crash pretty often on jenkins.
Change-Id: I23573f67cd7e2681035d30784dcc91c4032ff218
Moving function login_ok() from FirefoxExtensions.pm to Collection.pm.
FirefoxExtensions.pm should be used to store functions which make
programming stuff easier.
Common.pm should be used to store commonly used selenium routines.
Edited all files accordingly to work with this change.
Change-Id: I00ece7de88f7677665c5b8b87ce1e60be9c5854d
controller_rw_ruleset.t:
- create test domain with test reseller.
- try to add ruleset to domain.
- check if ruleset was added.
Change-Id: I4a1ac66ed33cc15ccfbcf75491a44bb836a24676
Common.pm:
- create_domain() now accepts a custom reseller. If nothing is provided,
it will use the default one.
Change-Id: Ia8dd1be97bd658f7b2b900aad14444c9adf04d54
controller_peering.t
- replaced table ids with "table", since table ids are different in Pro and
CE versions.
Change-Id: I2b914f7c69edfc29b05e7d84c4d41e6587a26210
controller_rw_ruleset.t:
- add rule to newly created ruleset.
- check if rule was correctly added.
Change-Id: I6f476dde4cd9c6cff6768d88662f8fe6dbe70af8
Common.pm:
- add create_rw_ruleset() and delete_rw_rulset(). These will be used for
further tests in a new file called controller_rw_ruleset.t
Change-Id: Ieb7a06f5496598c4114e00bcd44dc42ef4438ecf
controller_peering.t:
- Add tests to add peer_auth_user, peer_auth_pass and peer_auth_realm.
- check if said entrys have been created
Change-Id: I052decf1a1a07346ffa4d66ec06e2ef10f987cde
clear() would trigger a search in the table, which could lead in some cases
to "stale_element_reference" errors. CTRL+A doesnt do this and allows to
make search requests, especially those with only one existing element in
the table to be much simpler.
Change-Id: I8e107f8adf45fae95304482176f3f67d9e28bca6
controller_billing.t:
- Add Garbage text search when to the billing page to (hopefully) prevent
"stale element exception" or "element not interactable" exceptions.
Change-Id: I017d8ab0e09b7425307e1aca686ad351651a00cc
controller_peering.t:
- Made delete routine for removing peering servers/groups simpler and
hopefully more reliable.
Change-Id: Ice0854f1953ca017e5db09e4ad0288e21a73218d
controller_billing.t:
- Billing profile now gets deleted at the end.
- Check if billing profile is deleted.
Change-Id: Ia4dcbb8498f4482fe9b76568308314ceecb95d99
controller_billing.t:
- Add a $billingname at the beginning of the test. This will generate the
name "testingprofile + 5 random numbers". Will be used to properly check
if a peering group has been created/deleted.
- Rewrite create, check and edited other code to use that new variable.
Change-Id: Id9403a356b3ceb3c67e51cc3735b75ba90511a7a
Common.pm:
- For some reason, diag texts were missing in some functions even though
they exist in others. Added them now.
Change-Id: Ib5f84a62703fbb9021f99ff6d2c1e2d7345f6b27
controller_peering.t:
- Add a $groupname at the beginning of the test. This will generate the
name "testinggroup + 5 random numbers". Will be used to properly check
if a peering group has been created/deleted.
- Rewrite create, check and delete code to use that new variable.
Change-Id: I16489290be9780de2f457588767344080cf71b1e
controller_customer.t:
- change move_actions to move mouse over invisible buttons instead of
some element in column.
- used cleaner xpath.
Change-Id: I69b56f5e024b8392310b28490c37654e3445e620
controller_reseller.t:
- change move_actions to move mouse over invisible buttons instead of
some element in column.
- used cleaner xpath.
Change-Id: Ibb7adda18eda2dd0707e01b15c10615ccb71c8fd
Common.pm:
- change move_actions to move mouse over invisible buttons instead of
some element in column.
- used cleaner xpath.
Change-Id: Ic12bbd000a62e3d69c099b2ea896d418cc45a237
controller_customer.t:
- check for PBX enviroment variable. If set to 1, it will run additional
tests for PBX enabled systems. If nothing or 0, it will run without these.
Change-Id: I95236f051b212d63cf6075cdaebd05319279a548
controller_reseller.t:
- Is now creating a new Invoice Template.
- Will check if Invoice Template has been created.
Change-Id: I0e49bfdb1d3ec5da9818a90aa397d993147bceac
controller_customer.t:
- Edited code blocks around clicking invisible buttons. Should work
more reliable now.
- replaced find_element with find_element_by_css when checking for
empty tables. Should prevent crashing.
Change-Id: Ifa7e8f85a1eec17e530032660781fa5840685edd
Common.pm:
- Added a new argument $cancel to delete_reseller() and
delete_reseller_contracts(), so it clicks on cancel instead of ok.
- Added a second move_action(), its needed because if mouse pointer is at
the exact same location as before, the buttons wont show up.
controller_reseller.t:
- implement checks to see if reseller and contract are still there if you
press cancel.
Change-Id: Id6a097314cc2fc025dac71c085c6adef98414890
controller_reseller.t:
- Modified stuff so instead of taking the fist 'active' entry,
it now uses our new reseller.
Change-Id: I0d10158ff025e6fcab791acc445aca822208f675
Common.pm:
- delete_reseller() will delete our newly created reseller.
- delete_reseller_contract() will do the same for the contract.
controller_reseller.t:
- added both new functions.
- check if reseller is actually deleted.
- check if contract is actually deleted.
Change-Id: Ic24ca53b76264f5e91e8030f47930abcc46dc11c
Common.pm:
- add create_reseller_contract(). This will create a contract for use in
create_reseller().
- add create_reseller() to really test creating a reseller.
controller_reseller.t:
- included new functions.
Change-Id: I78bcddba3dd7f4aa6949ac88ae3cc68296194b45
controller_reseller.t:
- Test will now 'create' a reseller first, then it will check the search.
(It doesnt create anything right now...)
- Searching and verifying garbage text improved.
Change-Id: Id3b9a3a12cb62df9ed5163aee86fa6a97995977e
controller_billing.t:
- Made garbage search call much simpler.
- Replace find_element with find_element_by_css, prevents crashing if
garbage text search didnt work.
- Added new ok() tests for find_element_by_css.
- Removed commented lines
Change-Id: I42cf670c47cdc22db9ba1c8079fac3e3bb5147c8
Common.pm:
- add garbage text search to delete_domain function, should prevent
stale_element_exception.
- changed a few element ids, should be better for future tests.
Change-Id: I8e9b0bbd7438f14670685ef7c09609c01b2c2375
controller_domain.t:
- All ok() calls should now have correct text to print.
- Minor formatting changes.
Change-Id: I0f74039ef32b488f19b29be726102150338bb775
controller_customer.t:
- Add better check for empty table. Should prevent stale_element_exception
- Test now adds and deletes its own domain. Enables proper search testing
Change-Id: I6eed8ce85d2b118c825cd73ff46c70a3f737a587
Common.pm:
- add function delete_domain() for clean up after test run
controller_domain.t:
- implement delete_domain()
Change-Id: Ice5e902af9819ffeb683cfe6a3f86fe523d55e87
Some selenium tests depend on each other.
Example: controller_customer.t doesnt work, if controller_domain.t isnt
executed beforehand.
Common.pm is used so that selenium tests are more independent. Right now,
it contains code to create a domain.
Very useful for multithreading later on.
Change-Id: If01c7cd4d17ef66771bc64516088d3f57b02bf78
controller_customer.t:
- removing a probably unnecessary sleep call that would trigger if either
chrome or phantomjs are used.
Change-Id: I2758c2756eb9f29fcbdcfacbce9b02faef87e056
Inconvenient DOM changes (aka. stale element reference) would crash
the method, causing failed tests.
This moves a try/catch block into the loop to workaround said issue.
Change-Id: Id1f34292183cd6dea31292d07bfd6897d71bd796
Test was crashing, because of invisible button madness.
Now it will move the cursor to the column it wants to delete.
Button shows up and is clickable now.
Change-Id: I59aa27d7ef2fe06a6caa28620341363ff99f1042
Added wait_for_text() to wait until a text appears.
Can also be used to check if text is here.
It will return true or false to be used in further testing
Change-Id: Ib28636b7757a5312652da86d3b43b9fd8547522b
XML files generated by prove will contain the time we spend in every
test case, it allows us profile our tests and fix the most slop parts.
Change-Id: I965af2d95f57d8975613da0f46ce8abf1be4c114
Jenkins uses wrapper jenkins_docker_run which will mask exit code
anyway and this is what we want currently:
we need always zero exit code here on Jenkins.
Jenkins will detect errors in produced artifacts (XML files) if any
as a result the Jenkins job will be "yellow" instead of "red".
Change-Id: I249fcde9103ee25e6798fcb835ee4a408f8f0f57
We have it already inside t/selenium/testrunner, let's remove it here
to prevent duplicate and simplify the script.
Change-Id: I184642ce18c04cd30ea1c4a8a94a4ee1f8fdac99
testrunner:
- removed -m from local Perl launch options. this would cause diag messages
to only print when the script is finished. Without it we can see in
realtime where scripts get stuck. still used for Jenkins
- can now specify which test cases should be executed in launch options.
- code cleanups
jenkins_docker_run:
- remove hardcoded old parameters as Jenkins job path all the necessary
parameters already in the proper order, we just need to proxy them into
the shell script 'testrunner' to run it under the user 'selenium'.
Change-Id: Icaced3c3ce65cd23f3037517296e49afce4a9414
controller_customer.t:
- cleaned up some ok statements to see what acutally is going on.
- Added check for adding subscribers to a customer
Change-Id: I49a8f8e671472a7875ccc6d84d1fae50691a62ae
Previously, controller_domain.t would skip the test because
there were obviously no domains after compile.
New version adds a domain and checks if the search works.
Change-Id: I8e8bad9725d253a7c578b50beded5807b5d452b1
The main difficulty is that peeringserver has hardcoded reseller_id = 1 in the preferences update logic to check provided soundset ownership.
Peeringserver sound_set preference => should have reseller_id = 1
Subscribers & profiles sound_set preferences => should have appropriate to subscriber or profile reseller_id
It makes creation of the test data more sophisticated, specially considering that sound_set has both reseller_id and customer_id and they should be coordinated (customer should belong to the reseller)
Change-Id: Id7a299cb828144281f078c706ba7048ccfc58e82
PATCH "remove by value" will from now remove values even if provided hash has less keys, than original value
Change-Id: I2ee04fa279580d662e167c3a0b160fe29d8d79ef
It should help to catch the random fail in the test:
> # Go to Customers page
> # Create a Customer
> Can't use string ("no such element") as a HASH ref while "strict refs" in use at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 684.
> at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 655.
> # Tests were run but no plan was declared and done_testing() was not seen.
> # Looks like your test exited with 255 just after 5.
> Dubious, test returned 255 (wstat 65280, 0xff00)
Change-Id: I3094500b75590a284d5f28c987cadf21eb95033d
The full issue description you can find in commit message
a9399b1efd.
In short, Selenium can't press on "Edit" button because
it is being hidden on every AJAX request to backend.
(Un)fortunately the previous fix opened new ngcp-panel JS
issue reported as TT#50005: JS performs several AJAX requests
to backend and the second request still cause the same problem
as previous caused the first one.
Luckily JS performs only one request to backend on the page load.
And starts doubling them when we enter something into "filter".
As a result, the previous commit has been reverted and new approach
is proposed here: we will just wait data appearance in "Dates"
(which means the first AJAX request is finished).
Change-Id: If991af70e1ad1b00b04e4118c0b5f52b2d636eba
The previous variable name didn't represent the real code context.
The changes were initially part of commit a9399b1efd and
were extracted to separate commit as initial commit had been
reverted in commit 0601b821006f.
Change-Id: Idf06a06b60498ec5df7a9472aa38413997dc23cb
The fix here didn't work well because another ngcp-panel issue has been
noticed and reported as TT#50005, the second AJAX request aborts Selenium
test by hiding "Edit" button. The better approach is follow.
This reverts commit a9399b1efd.
Change-Id: Icf6251261f0cbc12ef4e819b3352dc3ebf7c4246
Jenkins reports time-2-time issue on 'Peering Servers' page:
> # Delete the previously created Peering Rule
> ok 14
> Can't use string ("no such element") as a HASH ref while "strict refs" in use at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 684.
> at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 655.
> # Tests were run but no plan was declared and done_testing() was not seen.
> # Looks like your test exited with 255 just after 14.
It was caused by slow AJAX loading here.
The button 'Delete' was not yet loaded and
we were just do 'sleep 1' and were trying to press it.
How we are clearly waiting for the record to be loaded
before trying to delete it.
Change-Id: Ia20cb427262e9c973ce4853d3ebb17438780afd0
It was old floating issue which randomly failed the test and
jenkins job ngcp-panel-test-selenium-docker became often yellow.
The problem here was in two facts:
- 'Edit' button available with mouseover only
- there is AJAX on this page for filtering 'Dates' records.
Historically we have no ability to wait for all AJAX loadings.
When Selenium moved mouse over Edit column to press it,
AJAX can be finished and removed "Processing..." label
from "Dates" field. It cause loosing mouseover from "Edit"
button and button is hidden causing "element not interactable":
> # Click 'Edit' button for element 'Wednesday'
> Can't use string ("element not interactable") as a HASH ref while "strict refs" in use at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 684.
> at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 655.
> # Tests were run but no plan was declared and done_testing() was not seen.
> # Looks like your test exited with 255 just after 27.
It has been workarounded here as we cannot wait for AJAX.
We are creating fake query for "Dates" (searching "thisshouldnotexist")
and waiting until the table "Dates" has no search results records.
It means AJAX has finished and we can continue with the test.
Also here I have renamed confusing button from 'edit' to 'delete',
as we press delete. And we have to clean previous search 'thisshouldnotexist'
with proper '2008-02-28' which we want to delete.
Change-Id: I55af32991687e82c3e57b15c066e772ff0b77123
It will give Ajax enough time to load 'Edit' button,
otherwise we have some mystery which randomly happens
when Jenkins tests VMs on Google Cloud:
> # Edit Wednesday
> ok 26
> # Move mouse over 'Weekdays' row to make 'Edit' button available
> # Find 'Edit' button for element 'Wednesday'
> ok 27
> # Click 'Edit' button for element 'Wednesday'
> Can't use string ("element not interactable") as a HASH ref while "strict refs" in use at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 684.
> at /home/selenium/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm line 655.
> # Tests were run but no plan was declared and done_testing() was not seen.
> # Looks like your test exited with 255 just after 27.
Locally it is not reproducible, also VM on Proxmox has
no such issues as well. I spend too much time here trying
to find the root of the issue, maybe Firefox version
we are currently using has some issues here. Give up, sleep 1.
Change-Id: I168270f6f6d25d8bdccfe6a40b2bc63aa0c5068e
The old code didn't work as expected, as RC receives
'tee' exit code (which is zero in most of the cases)
instead of 'prove' exit code.
The new code gets 'prove' exit code and it changes nothing
at the end, as we just print it into debug message.
Anyway Jenkins operates with JUnit output to detect issues.
It is better to have 'correct' code here to
prevent misunderstanding in the future.
Change-Id: I09f399813179590a67c25509f310c91f7e297f3a
The 'Edit' button appears only after mouse-over event,
and we might have race conditions here when we are trying
to click on not-yet available/accessible button causing:
> Can't use string ("element not interactable")...
Let's wait for button and then proceed with 'click()',
it is the behaviour we use everywhere, while it was missing here.
Also improve debug messages here for easier debug next time.
Change-Id: Iae955bb3f937da6b5c10369bc49f6dd75611dc87
name is unique per group in provisioning.voip_peer_hosts,
but not unique per group in kamailio.lcr_gw, that is filled after provisioning.voip_peer_hosts
by trigger voip_phost_urepl_trig
Change-Id: I005b97fc9b0aea84586ba23a57bcb070e5391ee0
Add test script for API
Fix DateTime create/update issue in TimeSets API (get2put case)
(add and edit functionlity used raw/inflated data respecively)
Add datetimepicker field
Change-Id: If724b7350658c306dbbecbc04309d1d1c0b4a3e2
Unify UI and API code to make subscriberadmin behavior with profile_set and profile common
Change alias_numbers input field to embedded RepeatableJS so it pass form validation
Change-Id: I1b3dc6f88cc6c1f43d76acc8e339dbb664c166a3
We have added new dependency in commit 2930237, but we also need to bump
Dockerfile version so Jenkins will rebuild docker container.
Change-Id: I1655af44d9e71c49473596a25e1cc9dbe617dbfa
* when fetching data from the journals tables
the start test time is used to filter out possible
existing records with the same resource ids
to address the mysql auto increment reset behaviour
Change-Id: Id048b97809628bbbcef9724ae0cf4eae39f7f0fa
We can replace the apply usage with map plus a returning s///.
This also fixes a hidden bug with the liblist-moreutils-perl dependency
missing from debian/control, being indirectly pulled by some other
dependency, while an implementation detail.
Change-Id: Ibfc7b362ad77c4b202d93cf71774c40623503f14
one was actually a true positive. the others were false positives
and are going to be silenced for the time being, while we try to find
an upstream solution. more details can be found in the ticket.
Change-Id: Iae8df7606774a9d26e4d44dbba557c9fe62d2252
this is to fix the TAP tests of the sipwise QA chain
fixed (or ignored):
- ControlStructures::ProhibitMutatingListFunctions
- Documentation::RequirePodSections
- InputOutput::RequireEncodingWithUTF8Layer
- Subroutines::ProhibitSubroutinePrototypes
- BuiltinFunctions::ProhibitStringySplit
- TestingAndDebugging::ProhibitNoStrict
- TestingAndDebugging::ProhibitProlongedStrictureOverride
- InputOutput::ProhibitTwoArgOpen
- CodeLayout::ProhibitQuotedWordLists
Change-Id: I7dce4ce123bad40de2d9b51ba5b1a141e20c3783
* enables fetching captured sip data
GET all collection returns JSON with available SIP messages
GET item collection requires a valid call-id and
returns pcap data generated from the packets of the call-id
Change-Id: I552ee9a312a4b9acf95bde93f6c584bbf82f9ea9
this is to clean the Sipwise TAP tests for this repo
the critical places where undef is really the intended return value (because
a scalar should always be returned) the rule has been overridden
Change-Id: I66e217a03a00e0f366db9c0cbc5007dd15cd9f96
"Mixed high and low-precedence booleans"
The operations have different precedence and must not be mixed together.
Change-Id: If38e25d6e94f599dc9462d9ee37ce165fa303b35
Fake_data keeps own test_machine, and when we change user
using runas in other test_machine instance - we need to
reinit cert files before request.
Change-Id: Idddeef2b0c10521c71ce5d77c5010f89c620185c
The code is currently broken due to the kamailio location migration
from mysql to redis. The test creates location record record using API
and it is properly created in Redis, later the test checks location
using another REST API request and find nothing:
> api-rest_api-subscriberregistrations_t.16 - subscriberregistrations:
> create test item 'subscriberregistrations' 1
> (Unprocessable Entity: Could not find a new registration entry in the db,
> that might be caused by the kamailio flush mechanism,
> where the item has been updated successfully)
The test should be re-enabled then ngcp-panel/REST code will use Redis
for location search.
Change-Id: I9706b8d04dcc2e2630d67b2622231ce726c4bc99
by using strict where it wasn't used before
plus fix all bugs that were discovered along the way by enabling strict
Change-Id: I7f9a8bf0cee74014fd7551ec26f2ab3922715efc
... to synchronized singleton
+ disable the 5 parallel checks in balanceintervals.t
-> it passes sometimes, sometimes not
.. too timing/load dependent.
Change-Id: I9255452f01465a0673182cf4e0a9b3f560660b73
Those changes brakes REST API test and we cannot fix them for a day while
Sipwise have to release 2 new releases tomorrow. We need stable test tonight.
Change-Id: Id0a666e7762bcd8c1109d4ed4f0760daa988fe17
"dpkg-query -s" doesn't give the desired answer, it includes packages
known to dpkg for different reasons, but does not exactly reply
whether they are installed or not, which is the intention of the code.
Change-Id: I84b4a6c4c7c84997c31b2bdb3f10e0fe9ab0b721
the reload of fakedata seems to require a path in the updated format.
Otherwise the command "do $filename" seems to not find the file.
Change-Id: I7751be6eaec2862a1547ee4ab70fb2b86a902f19
This reverts commit ca76144c4a.
The tests are fixed now, re-enable them on Jenkins using 'stable' set.
Change-Id: I7913a6feef183a14a404981ec10a457eb31d870b
This reverts commit 5988b51589.
The tests are fixed now, re-enable them on Jenkins using 'stable' set.
Change-Id: Ide5735bf42090c8176a4e20ecf538fcf2a698b60
Used to fetch whether pbx, faxserver, rtcengine etc is enabled.
* Fix rtcengine reseller creation:
- Refuse to create reseller if rtcengine part fails
- Use proper auto-generated rtcengine values (pass, domain)
to not fail on reseller names which are not forming valid
hostnames.
* Implement /api/admins/id to support testing
- add test
- fix creating admins with overly long login
- fix various ACL bugs handling /api/admins/
- fix creating /api/admincerts/ as r/o user
* Fix test framework
- use proper client cert when switching API user
Change-Id: I602fdd8181c0b3f23e76e3eab0df90a1ff9e986f
(cherry picked from commit 0d376bd8b59db65296090d26f2c84d704129beef)
Remove excrescent code from the pbxdevicemodels API & Panel
Add roles control per method for the API
Use form field "required" attribute for the API uploads
Fix getting old resource for the PATCH and PUT methods
Change-Id: Ia0515b3d071d45435db7c9138ea9de9447775143
* Fix syntax errors and internal errors
* Pass set ids back in mappings
* Allow updates of mappings both via name and ids
Change-Id: I26fdfe96d67563c11040a6c1e87f13a835bb793f
New Perl in stretch doesn't provide the method/hack to access variable,
we were using. Ira is searching for the fix here, so far temporary disabling the tests,
as the fix is not approaching this week. The commit must be reverted soonish.
Change-Id: Ib0fd290c6749df361638405589e9e5df6248394a
Recent switch to stretch in trunk makes it impossible to rebuild the image.
Also improve error handling here in case of removed ngcp-panel-tests-rest-api-build-deps
(docker will report an error in this case, previously it silently ignored that).
Change-Id: I51868265d0ff8fd646071ccff4fd380f2495d4d7
* Implement r/o access to /api/customers for subadmin
* Implement r/o access to /api/subscribers for subs
* Implement create access to /api/subscribers for subadmins
* Implement /api/numbers to re-assign a number
* Implement CF endpoints access for subs
* Implement new test framework to simplify testing
* Fix updating number by using Utils to make sure allowed_clis etc
are handled correctly
* Install missing docker dependencies for new test framework
* Add edr handling on /api/numbers/xx update
Change-Id: I678da16cfb1361b2809780cba8c204ac90bb1736
adapt PERL5LIB in a way, so that jenkins is also able to find it
(it uses /home/selenium/jenkins_docker_run)
Change-Id: I2d5ab35c77abd2dda9f676768da8cd6a36c4ddfb
Selenium::Remote::Driver v1.20 is the latest upstream release and
is missing some patches/PRs that we need for selenium tests of
ngcp-panel. Packaging the git version properly in the Debian way
is hard because of the way upsteam handles releases with separate
branches (one of them even being out-of-date, sigh). So instead
let's use a tarball from their latest git version until we see a
v.1.21 release.
Symlinking the geckodriver binary to /usr/bin/geckodriver addresses:
| Unable to find the geckodriver binary in your $PATH. at /home/selenium/Selenium-Remote-Driver/lib/Selenium/CanStartBinary/FindBinary.pm line 66.
Change-Id: I8ddf3c76a008ce5b0aa67b62154a9614f90cb659
all selenium tests are working with newest geckodriver (0.18.0) and patched S:R:D
issues:
- setting the window size: not urgent
- the unsupported move_to: fixed (new move_action)
- setting the implicit wait timeout: fixed upstream in S:R:D
Change-Id: Ic5b52cd866f4fd93682d67a4fd8a76ec54ea70cf
+ added conversations to api_root.t
+ disabled xmpp conversations source, since "soap"
MySQL user is not yet granted to prosody.* tables
Change-Id: I3d6a9418e7c2b77503f8472fe639e971ad7be3fa
Otherwise:
not ok 188 - check for valid link syntax
Use of uninitialized value $relname in exists at t/api-rest/api-root.t line 152.
Use of uninitialized value $relname in concatenation (.) or string at t/api-rest/api-root.t line 152.
not ok 189 - check for '' collection in Link
Use of uninitialized value $relname in delete at t/api-rest/api-root.t line 153.
Change-Id: Ib78e735e365b34404a06037b06dd7becdcf9917b
This package update includes further patches to address Selenium
test failures with geckodriver/Firefox:
* move_to: 4d0b8e7255
* timeouts: 2c55f3dcb9
Change-Id: I587f32230ce7cc8d912e052a93fb7d31fd7c90c1
Under Subscribers > Call Forward > Manage Timesets, the label for the
hour period has a typo. Should be "through" instead of "trough". Fix.
Change-Id: Iad07cb3c8ee69cd147e7629f1e551cd69da709ec
Which confuses developers which are debugging failed tests,
as details like below are not a part of XML Jenkins displays on a WEB:
> # Failed test 'create test customer w/o profile package'
> # at t/api-rest/api-balanceintervals.t line 1578.
> # got: '500'
> # expected: '201'
> Use of uninitialized value in concatenation (.) or string at t/api-rest/api-balanceintervals.t line 1580.
> Thread 4 terminated abnormally: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE HTML>\n<!-...") at /usr/share/perl5/JSON.pm line 171.
'man prove' says:
> -m, --merge Merge test scripts' STDERR with their STDOUT.
Change-Id: I945d4d8867fc9c061f96d067be14125af7cc5a46
An unintended docker image rebuild of
ngcp-panel-tests-selenium-jessie resulted in failures with
our selenium tests. A series of problems started:
1) Updating the Selenium version resulted in an error message by
Selenium, requesting the geckodriver binary
(https://github.com/mozilla/geckodriver - being a proxy for using
W3C WebDriver-compatible clients to interact with Gecko-based
browsers). So Selenium versions >=3 depend on geckodriver.
2) Recent versions of Selenium also depend on Java >=8, available
only via backports for jessie. Since we avoid usage of backports
as much as possible and we'd have to upgrade once anyway we
decided to base our fresh docker image on stretch.
3) We have to backport Selenium::Remote::Driver (Debian package
libselenium-remote-driver-perl) for stretch (since it's not
available in Debian, even though there's an ITP:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839569). It has
a bug which prevents its usage for us:
https://github.com/gempesaw/Selenium-Remote-Driver/issues/319 ->
We fixed the problem via our own backport and submitted a PR
towards upstream:
https://github.com/gempesaw/Selenium-Remote-Driver/pull/321
4) Firefox from Debian/stretch (firefox-esr 52.2.0esr-1~deb9u1)
fails with geckodriver e.g. in click events, the current Firefox
version 54 works fine though. So instead install only the
relevant runtime packages from Debian and use the Firefox version
v54 from upstream.
Resulting changes:
* switch from Debian/jessie to Debian/stretch
* no longer use selenium at all but only geckodriver instead
(recent versions of selenium depend on geckodriver anyway)
* do all package/file changes in /home/selenium/ (to clearly
see what's from us/docker and what are actual temporary files)
* testrunner related changes:
- invoke vncserver with `-localhost no` option to accept
VNC connections not only from localhost only
- adjust vncserver process name for Xvnc4->Xtigervnc switch
- start geckodriver instead of selenium
* package related changes:
- backported libtest-pretty-perl (v0.32)
- backported libselenium-remote-driver-perl (v1.20)
- add curl to package list since it's handy for debugging test
failures, like e.g. `curl -X POST localhost:4444/session --data {}`
- add procps to have pkill binary available inside testrunner
- openjdk/java is no longer needed since we don't depend on selenium anymore
- vnc4server is now a transitional package for
tigervnc-standalone-server, so directly depend on it
Change-Id: I607ffd4fce80f9e84b76c3c7a19824819ac4503c
checks comparing "now" timestamps generated by the .t and by api code
(eg. lnp number termination) fail randomly. it seems the
clocks of docker and the api node differ sometimes. this commit
tries to compensate by sending the .t time with requests.
Change-Id: Iaded3735e746dab166364a34ea8a5cda8c8e40ab
It's fine to remove read-only fields only if $run==1, but in any
case remove unknown fields.
Also the force-array change broke additional tests, fixed them.
Change-Id: I48ffcf201bd1eedb8fb317f1ca248af9e4a01e60
If no locally cached API cert is available, download one and use it
throughout all of the tests. Speed-up factor is ~3x.
Change-Id: I083985f4e4ec7d8f7f4e0beec3a604be80a4bb59
in scenario 3 it is unclear, whether the correct direction should be "in" or
"out". The benefit of setting it to out would be, that it would make call type
modifications easier (see ticket).
Change-Id: I40557b2675c750362c4cd6ff63810e0157510463
-introduce deferred event record insertion, to span across
update_subscriber_number and update_subadmin_sub_aliases
calls by handing over a snapshot of aliases before number
edit operations
-the snapshot is used to persist first_non_primary_alias_before
event values
-it also is the preparation to derive number change events
apart from that, the following was noticed:
-fix: start_huntgroup was generated twice
-fix: when terminating a subs, the order of end events was
not the reverse order of start_events
-POST /api/subscribers does not consider pbx alais selection
of pilot pool aliases, while terminating the susbcriber does
move back alaises to the pilot pool.
Change-Id: I092f4a21bed25503f48c47c253f1cae0729f43da
+preference-style 1:1 association api resource will
list all existing customer contracts
+avoiding get_customer_rs for performance reasons
+PUT/PATCH only, no POST/DELETE
Change-Id: If3b00c6cde07bf030e8bfc308e5e29d3251bdedd
Take [1] of the created members and groups, to avoid special pilot behavior.
Pilot don't keep pbx group members
Change-Id: Ib8fd599ffc53c9743d2c160d324f2110548bcea9
+ api/events resource
+ removing an autoattendant via /api/callforwards: events OK
+ removing an autoattendant via /api/cfdestiantions: OK
+ removing an autoattendant via /api/cfmappings: OK
Change-Id: I4c309753b9338582479dba9951f757bb2ecaad7e
+1. terminate if terminated contracts or subscribers exists
+2. if active contracts or subscribers -> error
+3. delete otherwise
+customer contact api DELETE
+customer contact testcases
+customer api POST
+customer api PUT/PATCH
+system contact api DELETE
+system contact testcases
+contract api POST
+contract api PUT/PATCH
+panel UI contact delete
+panel UI contract create
no change panel UI contract update
+panel UI customer create
no change panel UI customer update
note contact links like customers.omm_contact or customers.tech_contact
are not considered.
Change-Id: I19ea6e2245282485cc30d3e92d17a2eb603e0c2d
* I had to fix api-bannedusers.t otherwise it failed:
> ok 19 - bannedusers: check if all created test items have been foundin the list
> is_empty:1;ok 20 - fetch uri: https://10.15.20.74:1443/api/bannedusers/?page=1&rows=1 (OK: )
> $VAR1 = undef;
> ok 21 - Check that all added banned users were deleted 1..21 Failed 1/21 subtests
Change-Id: Ic9578c9f1ab20b2abeaa51656ed5556804228981
-undo unique lnp_numbers: undo misleading unique keys
-retain lnp_provider delete cascade restriction
-api: wire lnp_numbers_actual
-lnpnumbers collection pagination request takes several
seconds (up to tens of for 200k lnp numbers), too slow
especially for GET /api/lnpnumbers/?number=.. lookups
-query param is properly injected into the virtual view
sql query, so the lookup is fast now.
-panel UI custom datatable filter to switch between
complete history (all records) and actual portings
-"terminate" lnp number: DELETE /api/lnpnumbers/?number=x
+special use-case for melita's crm
+all empty or future "end" timestamps of records
are set to now(), so a subsequent listing shows no
records any more.
-number parameter is forced, other collection query params
are currently not supported for DELETE
Change-Id: I7b69d16a2d4f38ea84fc1cc0b407fa67e0f5ef8b
If set and a call is done within a pbx customer, the call is blocked
in blacklist, and is allowed in whitelist.
Change-Id: Ib43e5a45525a69e2b9dd9537dabddf10dfc006d1
File /.dockerinit no longer exists. With Docker versions 1.11 and
1.12 there's /.dockerenv available, though it's not yet sure
whether this will be present in the future too, so check for either
/.dockerenv or a proper cgroup setup inside the docker container.
File /proc/1/cgroup with Docker version 1.12.1 on Debian/jessie
looks like:
| root@4c3a1c6d773c:/# cat /proc/1/cgroup
| 8:freezer:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 7:perf_event:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 6:net_cls,net_prio:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 5:cpuset:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 4:blkio:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 3:cpu,cpuacct:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 2:devices:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
| 1:name=systemd:/docker/4c3a1c6d773c1a5675f24ff58540ff1a290489e7325e1e66ec2c3392aa3a1145
See https://github.com/docker/docker/issues/18355 and
https://github.com/docker/docker/pull/19490 for details.
Change-Id: I79fff0eead1a11f80b461791b2285a65d706262a
Also call agent request in the update_item method, to make it more safe.
And added lost transaction commit
Fix 500 response for the incorret x3_port input
Change-Id: Ic538ffdd4d7fff833ba5395934a1b2bc6cf71664
The codebase does not use autodie directly, it does indirectly via
Sipwise::Base, and the autodie module is part of the standard perl
distribution anyway. TryCatch is imported via Sipwise::Base, and
that depends on it. The rest are not used anymore in the codebase.
Change-Id: Ic08e246cc60d7d151381dff39e0eba517a492e06
the uppermost level in @searchColumns is to be comined via AND,
the next level, via OR (implicitly by DBIx::Class)
- plus fix billing networks in customers to be date-searched
Change-Id: I8db95cc5e8aadf5d5c86ef8fe06e59eb5e95c3d0
+prohibit deletion of lnp providers if numbers are
still linked to it
+number+provider must be unique
+fixed other panel lnp page validation checks
+db constraints to stand concurrent inserts/updates
+fixup all txn_do die() calls in panel to properly
display the error
+bulk upload checks by db constraints
+lnp api testcase
Change-Id: I872b19f50d96e6c39c7fd5728b2a16555a397236
- the connector name is properly set when creating a reseller
- the network tag defaults to just (sip,xmpp,webrtc,...)
- rtcsessions doesn't accept network tag anymore
- an rtc-account is created for every network of the rtc-user
- the identifier in the rtc-account is set according to the specific connector
- api-rtc-full.t has been simplified for the user (no more need for domain_id)
- update available networks (in reseller api)
Change-Id: I2700c646726a06569cc5a70a5a30d4cb67eb1c80
+creation of profile packages with hour and minute
intervals was disabled in api-balanceintervals.t
Change-Id: Idd18ced9704522bf5d919155d866c91b81526b92
If no subscriber existed, first is a pilot, and doesn't consider groupmembers.
Also fix getting created hal, which was unconditionally overwritten by loaded
Change-Id: Ie2cf76624f125dbc9aaffc1ffab19319028c2c6f
by choosing "stable" (about 1m30s) or "fast" (about 30s) as second
argument of testrunner, only tests are run, which are currently
succeeding on a plain trunk vm using docker. (times are on my machine)
I hope we can in this way re-enable them on nightlies (or even in gerrit)
so that devs have some better feedback on the impact of our changes.
Current status of tests (in trunk):
| Problems:
| api-callforwards.t
| api-balanceintervals.t
| api-faxes.t
| api-journals.t
|
| Fixed:
| api-all-links.t
| api-contracts.t
| api-customercontacts.t
| api-customers.t
| api-rewriterulesets.t
| api-root.t
|
| Working:
| api-billingfees.t
| api-billingnetworks.t
| api-billingprofiles.t
| api-billingzones.t
| api-calllists.t
| api-calls.t
| api-cert-auth.t
| api-cfdestinationsets.t
| api-ncoslevels.t
| api-pbxdevicemodels.t
| api-pbxdevices.t
| api-peeringgroups.t
| api-peeringrules.t
| api-peeringservers.t
| api-preferences.t
| api-profilepackages.t
| api-resellers.t
| api-rewriterules.t
| api-soundsets.t
| api-subscriberregistrations.t
| api-subscribers.t
| api-systemcontacts.t
| api-threads.t
| api-topuplogs.t
| api-trustedsources.t
| api-valid-patch.t
| api-vouchers.t
Change-Id: I74e672d9dc6bcccfd3ace2fe233dbcf325c6fc4d
this is important, because it allows us, to be completely
independent of their href uris, whom we cannot always trust (the domain
part in particular)
Change-Id: Ic67f8240dfb50a5ea4948931d7e0554ce7f5ef4e
+input validation for verlapping time ranges
for both weekdays and special. can be disabled.
+root entiy locking
+peektime special is growing and not paginated,
so PUT/PATCH will get slower if special peektimes
are added on a regular basis. they can be removed
using the UI however
+testcase to check overlap detection
Change-Id: I935d943078ab5c81263da88ecd04e004deb26c8b
creating and deleting the entities users and networks
via the rtc api, when a reseller is created or modified
Change-Id: I2e9c785cacec680d1b22827983abca6037cdee3b
Otherwise we are failing with error:
> t/api-rest/api-faxes.t ..
> ok 1 - check faxserver feature state: disabled
> ok 2 - check error message in body: Faxserver feature is not active
> # Tests were run but no plan was declared and done_testing() was not seen.
> Dubious, test returned 254 (wstat 65024, 0xfe00)
> All 2 subtests passed
>
> Test Summary Report
> -------------------
> t/api-rest/api-faxes.t (Wstat: 65024 Tests: 2 Failed: 0)
> Non-zero exit status: 254
> Parse errors: No plan found in TAP output
Change-Id: Iff32b25ced931931af8cbaedc7fb054e48773667
Otherwise we are getting error:
> not ok 10 - Check existence of rating_status field
>
> # Failed test 'Check existence of rating_status field'
> # at t/api-rest/api-calllists.t line 50.
> # Total number of calls: 0
Change-Id: I257e198b740363d5d25d6d35a29a482f966377fb
+subscriber instead of source_subscriber typo fixed
+rudimentary test case to see if the filter works
+fixed in/out direction filter testcase: sum of in and
out calls should be >= total count of calls
Change-Id: Ibe4b8153f023c53bb463626ad9e6613992fc101d