Create Xray test execution for test via "Send web request"-action
Asked by Christopher Dick:

Hello there,

Referring to the following [post](https://community.atlassian.com/t5/Marketplace-Apps-Integrations/XRAY-How-to-link-test-and-test-execution-in-Jira-automation/qaq-p/1589048), I would like to know how to create a linked test execution for an Xray test via web request.

Manual linking of test and test execution is not possible via issue links because Xray has internal linking logic.

The following fields are to be filled in:

![2023-01-10 13_32_28-Einstellungen - JIRA.png](https://community.atlassian.com/t5/image/serverpage/image-id/233718iC7A334663F79F7C7/image-size/large?v=v2&px=999 "2023-01-10 13_32_28-Einstellungen - JIRA.png")

Many Greetings,

Christopher


Answers:
author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Just to make sure I?m on the same page:

You already have a Test and created a test execution out of this test? --\> there is already a test run for the test within your test execution.

And you would like to add a jira standard issue link between those issues?

is that right?

Just a personal question: What?s the use case behind it (as there is an xray-linking between those issues)?

If the above mentioned assumption is correct you would have to call the Jira RestAPI as the standard issue linking is a Jira functionality (not xray).

See the following link how issue linking is done via RestAPI:  
<https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-links/#api-rest-api-3-issuelink-post>

Please let me know if this was helpful or if you need any further support.

Best  
Stefan

comments: author: Stefan Salzl
body: btw:

Hab im Screenshot gesehen, dass deine Screens auf Deutsch sind :) Du kannst mir gerne auch auf Deutsch antworten ;)

LG

Stefan


author: Christopher Dick
body: Hi Stefan,

erstmal Danke f?r deine Unterst?tzung :)

Anwendungsfall:

* User Story (Jira Vorgang) in Projekt A erreicht Status "Testing".
* Via Trigger wird ein Test (Xray Vorgang) in Projekt B mit zwei zugeh?rigen Testausf?hrungen (Xray Vorgang) erzeugt. Beide Testausf?hrungen basieren auf dem selben Test und werden unterschiedlichen Benutzern zugewiesen.
  * Testausf?hrung 1: Entwicklertest (Zugewiesene Person: Entwickler)
  * Testausf?hrung 2: Abnahmetest (Zugewiesene Person: Fachlicher Anforderer)

Eine Standardverkn?pfung ist hierf?r nicht ausreichend, weil die Testausf?hrung dann nicht korrekt in Xray mit dem Test verkn?pft wird.

Im verkn?pften Beitrag wird eine Erzeugung mit Verkn?pfung ?ber eine Webanfrage angesprochen.

Viele Gr??e,

Christopher


author: Christopher Dick
body: Guten Morgen [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

konntest du den Anwendungsfall nachvollziehen, oder fallen dir bereits erste L?sungsans?tze ein?

Viele Gr??e,

Christopher


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Ich kann noch nicht ganz nchvollziehen wieso ein gesonderter Link der test executions notwendig ist, da test executions immer in einem testcase referenziert sind (?ber xray logik, im test erscheint eine liste der test executioms in welchen dieser test ausgef?hrt wird).

LG

Stefan


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Hach.....Ich hatte da einen kompletten Denkfehler. Sorry for the confusion.

Ich hab?s jetzt gecheckt und ich glaub ich bin der L?sung auf der Spur. Kleiner Teaser: Ich denke ?ber die GraphQL API l?sst sich das l?sen. Ist auch f?r mich was neues, daher muss ich noch ein wenig t?fteln.

Ich geb Bescheid sobald ich Neuigkeiten hab.

LG

Stefan


author: Stefan Salzl
body: Hej [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

So....ich denke die T?ftlerei hat sich ausgezahlt.

So sieht meine Automation Rule gesamt aus. Ich werde dann im Anschluss die einzelnen Komponenten genauer beschreiben:

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/239685iE5FA61CAEE6EDB9C/image-size/large?v=v2&px=999 "image.png")

Dein Trigger ist ja so weit klar. In deinem Fall m?sstest du die Status?berg?ngen auf deine Anforderungen anpassen.

++N?chster Schritt: Testcase erstellen++

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/239686i62C5B33BFBFF4B0A/image-size/large?v=v2&px=999 "image.png")

In deinem Fall musst du hier das andere Projekt eingeben, in welchem du den Testcase erstellen m?chtest. Beim Erstellen des Testcases wird auch der Issue-Link "Tests" erstellt. Dies ist der Standard-Link f?r XRAY tests.

++N?chsten 2 Schritte: Test Executions erstellen++

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/239687iDC37B28023D9693B/image-size/large?v=v2&px=999 "image.png")

Diese Schritte/Actions sind straight forward create issue actions.

++Letzter Schritt: WebRequest um Test Exeuctions dem TestCase zuzuordnen++

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/239688i13FB92A4CAD28199/image-size/large?v=v2&px=999 "image.png")

Hierzu wird die qrapql-api verwendet. F?r die Authorization muss ein xray token erstellt werden. Details dazu findest du hier:  
<https://docs.getxray.app/display/XRAYCLOUD/GraphQL+API>

Die Authentifizierung erfolgt dann mittels Bearer Token.

Payload:

```
{"query":"mutation{addTestExecutionsToTest(issueId:\"{{createdissues.get(0).id}}\", testExecIssueIds: [\"{{createdissues.get(1).id}}\",\"{{createdissues.get(2).id}}\"]){addedTestExecutions warning}}"}
```

Die smart values {{createdissues.get(index).id}} liefern jeweils die indizes der erstellten issues, die f?r den api call ben?tigt werden.

In meiner Testumgebung hats funktioniert. Ich hoffe das funktioniert auch bei dir und l?st deine Anforderung.

LG  
Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993),

vielen Dank f?r deine Unterst?tzung.

Die L?sung sieht bereits sehr gut aus, aber leider habe ich Schwierigkeiten mit den letzten "Feinheiten":

* Wie lassen sich zwei separate Testausf?hrungen an einem Test f?r unterschiedliche Benutzer erstellen?
  * Die Benutzer sind in einem Custom-Field im Triggervorgang gespeichert und jeder soll seine eigene Ausf?hrung zugewiesen bekommen.

Die Idee ist einen fachlichen Benutzer f?r den Test einzubinden und einen Entwickler.

Viele Gr??e,

Christopher


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

leider schl?gt die Autorisierung fehl:

![2023-02-16 12_38_43-Einstellungen - JIRA.png](https://community.atlassian.com/t5/image/serverpage/image-id/240594i5315BB2409ECFD40/image-size/large?v=v2&px=999 "2023-02-16 12_38_43-Einstellungen - JIRA.png")

Muss ich bei der Erstellung des Token noch etwas beachten? Oder kannst du einen anderen Fehler erkennen?

Viele Gr??e,

Christopher


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

bzgl. Authorization: bist du wie folgt vorgegangen:

++API key in XRAY settings erstellen++

f?r die xray api wird ein eigener key ben?tigt. Dazu klicke rechts oben das Admin-Zahnrad und w?hle "Apps", dann in den XRAY settings auf "API Keys" klicken:

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/240771iEF0B93EB325D80E8/image-size/large?v=v2&px=999 "image.png")

Hier klickst du dann auf "Create API key". Damit erstellst du f?r deinen User ein key pair mit ClientID und ClientSecret. Diese beiden Strings kopieren, die ben?tigst du anschlie?end um den Token generieren zu k?nnen.

++Token erstellen++

Mit diesen Daten wird anschlie?end der authenticate-endpoint der API aufgerufen und damit der Token generiert. Hier der Link zur Beschreibung mit Beispielen des aufrufs:

<https://docs.getxray.app/display/XRAYCLOUD/Authentication+-+REST>

Ich mach das ?ber folgendes Beispiel:  
curl -H "Content-Type: application/json" -X POST --data '{ "client_id": "deine ClientID aus dem vorherigen Step","client_secret": "\<dein_Secret" }' <https://xray.cloud.getxray.app/api/v1/authenticate>

Dieser Aufruf liefert dir eine lange Zeichenkette zur?ck --\> der Token (Bearer-Token)

++Konfiguration der Authorization in WebRequest-Action++

Diesen Token verwendest du mit Angabe des Bearer Service im Feld "Authorization" in deiner WebRequest action:

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/240775i02054F285F1A1B61/image-size/large?v=v2&px=999 "image.png")

Aus den Screenshots kann ich sonst keine Infos ziehen, was da eventuell falsch sein k?nnte. Wie oben erw?hnt: Wichtig ist, die Info mit zu senden, dass es sich um einen Bearer Token handelt.

LG

Stefan


author: Stefan Salzl
body: [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

bzgl. Testexecution pro user:

Du musst nat?rlich die create issue action 2 mal aufrufen. Innerhalb der action wird auch gleich der assignee definiert.

Voraussetzend, dass diese beiden User in einem MultiUser-Picker Feld eingetragen sind bekommt man bei der Abfrage des Feldes die beiden User als "Liste". Also ?ber den smart value {{triggerIssue.dein_customFieldName}} bekommst du eine Liste der eingetragenen User. Diese Liste kannst du anschlie?end wie ein Array behandeln (in deinem GraphQL Api call wird das auch so verwendet). ?ber list.get(index) k?nnen wir die einzelnen Eintr?ge verwenden (siehe dazu folgenden Link)  
<https://support.atlassian.com/cloud-automation/docs/jira-smart-values-lists/#list.get-index->

Das sieht dann in der Action wie folgt aus (in meinem System hei?t das custom field "Reviewers"):

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/240781iFCA7A261D6C25EBA/image-size/large?v=v2&px=999 "image.png")

LG

Stefan


author: Christopher Dick
body: Guten Morgen [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

nach dem Hinzuf?gen des Wortes "Bearer" vor dem Token, hat sich die Fehlermeldung ver?ndert:

**Vorher**

* Fehler beim Ver?ffentlichen der Web-Anfrage. HTTP-Status der Antwort:  
  401  
  HTTP-Text der Fehlerantwort:  
  {"error":"Could not find authentication data on request"}

**Nachher**

* Fehler beim Ver?ffentlichen der Web-Anfrage. HTTP-Status der Antwort:  
  401  
  HTTP-Text der Fehlerantwort:  
  {"error":"Invalid JWT: JsonWebTokenError: jwt malformed"}
* ![2023-02-17 07_41_08-Testmanagement - Details - JIRA.png](https://community.atlassian.com/t5/image/serverpage/image-id/240851iC776EFADA77A5300/image-size/large?v=v2&px=999 "2023-02-17 07_41_08-Testmanagement - Details - JIRA.png")

Das einzige was ich hierzu gefunden habe: [LINK](https://community.atlassian.com/t5/Jira-Software-questions/I-get-JWT-error-thro-Xray-Cloud-end-point/qaq-p/1724978)

Viele Gr??e,

Christopher


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

hast du den token mit ?" im feld angef?rhrt? also so:

```
Bearer ?167.exxxF87??
```

Falls ja: lass die quotes weg und nimm nur den string den du bei der authentication zur?ck bekommen hast.

LG

Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

ich habe noch keinen Token erstellt mit Client ID und Client Secret.

Welches Programm nutzt man hierf?r und wie sehen die Befehlszeilen aus?

VG

Christopher


author: Christopher Dick
body: Leider habe ich nicht die M?glichkeit Curl zu installieren.

Ist eine Token Erstellung auch mit Postman m?glich?

Falls ja, wie w?rde das funktionieren?

VG


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195) ,

das sollte mit postman genau so funktionieren. Ist nur ein anderes tool um mit der api zu kommunizieren.

Wie das in postman genau aussieht kann ich dir leider nicht sagen, da ich mit dem tool keine erfahrung habe. Dazu gibts aber bestimmt einiges an hilfen zu finden.

Den Token brauchst du jedenfalls, wie in einem meiner Posts beschrieben.

LG  
Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

die Token Erstellung war nun erfolgreich. Es handelte sich zuvor um die falschen Credentials.

Nach dem Test deiner aufgef?hrten Automation ist die Testausf?hrung leider nicht mit dem Test verkn?pft.

Bitte siehe Screenshot.

Viele Gr??e,

Christopher

![2023-02-20 13_55_59-.png](https://community.atlassian.com/t5/image/serverpage/image-id/241173iFF723BB777A1E087/image-size/large?v=v2&px=999 "2023-02-20 13_55_59-.png")


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

kannst du bitte einen Screenshot vom Audit Log/Protokoll diese Ausf?hrung senden.

Weiters wird in deiner Automation Rule nur 1 TestExecution erstellt, wodurch "createdIssue.get(2)" vermutlich was falsches oder leeres zur?ckschickt, da dieser Index in der Liste nicht existiert.

Du k?nntest also entweder versuchen, wie geplant (und wie von mir beschrieben) in der Automation Rule die 2. Test Execution zu erstellen, dann sollte es aus meiner Sicht funktionieren.

LG  
Stefan


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Es k?nnte auch sein, dass der API call zu schnell feuert und die IDs noch nicht "vorhanden" sind. Versuch bitte vor der "send webrequest" action noch eine "re-fetch issue" action ein zu f?gen. Eventuell verschafft das der Automation rule mehr Zeit und der API call bekommt die richtigen Daten.

Bitte f?ge nach der "send webrequest" action noch eine "Log action" mit folgendem Inhalt hinzu (so k?nnen wir im Audit Log sehen was der API call macht bzw. was ihn st?rt):

hier per Text damit du es nicht abtippen musst:

```
response: {{webhookResponse}}, body: {{webhookResponse.body}}
```

![image.png](https://community.atlassian.com/t5/image/serverpage/image-id/241192i426FF35C934B6A4E/image-size/large?v=v2&px=999 "image.png")

LG

Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

leider ist mein Xray Token bereits nach einem Tag abgelaufen.

Die Automationsregel soll jedoch dauerhaft hinterlegt werden.

Gibt es eine M?glichkeit die G?ltigkeit des Token zu verl?ngern?

Viele Gr??e,

Christopher


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

1 Tag expire time klingt merkw?rdig - und definitiv zu wenig f?r eine automation rule. Genau wei? ich das leider auch nicht. Bitte lies mal die Doku ob du etwas dazu findest:  
<https://docs.getxray.app/display/XRAYCLOUD/Getting+started>

Ansonsten schlage ich vor, den Vendor-Support damit zu kontaktieren:  
<https://jira.getxray.app/servicedesk/customer/portal/2/user/login?destination=portal%2F2>

LG  
Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

leider l?sst sich die G?ltigkeitsdauer des Token von 24 Stunden nicht ver?ndern.

Es gibt jedoch eine M?glichkeit eine [Autorisierung mithilfe der Credentials](https://community.atlassian.com/t5/Marketplace-Apps-Integrations/XRAY-How-to-link-test-and-test-execution-in-Jira-automation/qaq-p/1589048) durchzuf?hren.

Welche ?nderungen sind hierf?r in deiner Anleitung anzuwenden?

Viele Gr??e,

Christopher Dick


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Ich wei? leider nicht was du damit meinst bzw. kann auch aus dem Link den du gesendet hast nichts dementsprechendes herauslesen.

Ich kenne API-technisch ausschlie?lich die Authentifizierung via Token.

Bitte auch Dinge selbstst?ndig nachlesen und ausprobieren. Wir helfen hier in der Community sehr gerne bei konkreten Fragen, wenn Dinge nicht laufen. Grunds?tzlich ist es aber nicht so gedacht, dass wir die Suche und das bauen von L?sungen hier ?bernehmen. Das machen viele von uns (ich zumindest) beruflich als Consultants.

LG  
Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

danke f?r deinen Hinweis und f?r die damit verbundene Unterst?tzung.

Leider war zuvor der falsche Link enthalten --\> Hier der [korrekte Beitrag](https://community.atlassian.com/t5/Jira-discussions/Send-web-request-action-of-Automation-for-Jira-with-credentials/td-p/2078349).

VG

Christopher


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Der Artikel beschreibt nur, wie die Eingaben als "versteckt" angezeigt werden k?nnen. Weiters beschreibt es die native J?ra REST API welche (fr?her) authentication mittels mail \& pw erlaubte (mittlerweile depricated, ben?tigt ebenfalls einen API key). F?r deinen Anwendungsfall wird eine andere API verwendet, die eben eine andere Authentication verwendet.

Aus meiner Sicht sehe ich keine andere M?glichkeit, dein Requirement um zu setzen als mit der GraphQL-API und diese ben?tigt einen Token zur Authentication. Auch der "Token" ist als credential zu sehen. Das ist standard in der Anwendung von APIs. Bitte hier mit deinen Admins/Entwicklern vor Ort abstimmen, welche M?glichkeiten es da gibt.

LG  
Stefan


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Gibts hierzu any news? Konntest du das Thema mit deinen Admins besprechen/kl?ren?

Falls dies hier hilfreich war/zu einer L?sung gef?hrt hat bitte den "Accept" Button dr?cken, damit dieser Post als gel?st markiert wird. Das erleichtert es anderen Usern mit ?hnlichen/gleichen Problemen eine L?sung zu finden.

LG  
Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

Credentials k?nnen via HTTPS-Webanfrage im Body der Jira Automation zur regelm??igen Tokenerstellung genutzt werden. Dann klappt alles :)

VG

Christopher


author: Stefan Salzl
body: Hi [@Christopher Dick](/t5/user/viewprofilepage/user-id/5110195)

Vielen Dank f?r dein Feedback. Welche Credentials/wie verwendest du diese? Jetzt m?chte ich auch dazu lernen. Das kenne ich n?mlich nicht :)

W?re es m?glich, dass du deine L?sung (evntl. mit Screenshot) hier teilst? (credentials/daten nat?rlich geschw?rzt). Das w?rde sowohl mir als auch vielen anderen Usern eventuell helfen.

Vielen Dank im Vorhinein.

LG  
Stefan


author: Christopher Dick
body: Hi [@Stefan Salzl](/t5/user/viewprofilepage/user-id/4616993)

leider nicht, da ich es im Unternehmenskontext umgesetzt habe.

**Anleitung**

* Web-Anfrage mit Credentials im Body zur Token-Erstellung an <https://xray.cloud.getxray.app/api/v1/authenticate> (siehe auch: [LINK](https://docs.getxray.app/display/XRAY/REST+API))
* Web-Anfrage mit Token im Header und "Authorisation" mit "Bearer {{webResponse.body}}" an <https://xray.cloud.getxray.app/api/v2/graphql>

Viele Gr??e,

Christopher


Tags: cloud

graphql

webhook

xray