mirror of
https://github.com/interviewstreet/go-jira.git
synced 2024-11-28 08:39:03 +02:00
338 lines
10 KiB
Go
338 lines
10 KiB
Go
|
package jira
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestOrganizationService_GetAllOrganizationsWithContext(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "GET")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
fmt.Fprint(w, `{ "_expands": [], "size": 1, "start": 1, "limit": 1, "isLastPage": false, "_links": { "base": "https://your-domain.atlassian.net/rest/servicedeskapi", "context": "context", "next": "https://your-domain.atlassian.net/rest/servicedeskapi/organization?start=2&limit=1", "prev": "https://your-domain.atlassian.net/rest/servicedeskapi/organization?start=0&limit=1" }, "values": [ { "id": "1", "name": "Charlie Cakes Franchises", "_links": { "self": "https://your-domain.atlassian.net/rest/servicedeskapi/organization/1" } } ] }`)
|
||
|
})
|
||
|
|
||
|
result, _, err := testClient.Organization.GetAllOrganizations(0, 50, "")
|
||
|
|
||
|
if result == nil {
|
||
|
t.Error("Expected Organizations. Result is nil")
|
||
|
}
|
||
|
|
||
|
if result.Size != 1 {
|
||
|
t.Errorf("Expected size to be 1, but got %d", result.Size)
|
||
|
}
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_CreateOrganization(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "POST")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization")
|
||
|
|
||
|
o := new(OrganizationCreationDTO)
|
||
|
json.NewDecoder(r.Body).Decode(&o)
|
||
|
w.WriteHeader(http.StatusCreated)
|
||
|
fmt.Fprintf(w, `{ "id": "1", "name": "%s", "_links": { "self": "https://your-domain.atlassian.net/rest/servicedeskapi/organization/1" } }`, o.Name)
|
||
|
})
|
||
|
|
||
|
name := "MyOrg"
|
||
|
o, _, err := testClient.Organization.CreateOrganization(name)
|
||
|
|
||
|
if o == nil {
|
||
|
t.Error("Expected Organization. Result is nil")
|
||
|
}
|
||
|
|
||
|
if o.Name != name {
|
||
|
t.Errorf("Expected name to be %s, but got %s", name, o.Name)
|
||
|
}
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_GetOrganization(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "GET")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
fmt.Fprintf(w, `{ "id": "1", "name": "name", "_links": { "self": "https://your-domain.atlassian.net/rest/servicedeskapi/organization/1" } }`)
|
||
|
})
|
||
|
|
||
|
id := 1
|
||
|
o, _, err := testClient.Organization.GetOrganization(id)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
|
||
|
if o == nil {
|
||
|
t.Error("Expected Organization. Result is nil")
|
||
|
}
|
||
|
|
||
|
if o.Name != "name" {
|
||
|
t.Errorf("Expected name to be name, but got %s", o.Name)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_DeleteOrganization(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "DELETE")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1")
|
||
|
|
||
|
w.WriteHeader(http.StatusNoContent)
|
||
|
})
|
||
|
|
||
|
_, err := testClient.Organization.DeleteOrganization(1)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_GetPropertiesKeys(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/property", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "GET")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/property")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
fmt.Fprintf(w, `{
|
||
|
"keys": [
|
||
|
{
|
||
|
"self": "/rest/servicedeskapi/organization/1/property/propertyKey",
|
||
|
"key": "organization.attributes"
|
||
|
}
|
||
|
]
|
||
|
}`)
|
||
|
})
|
||
|
|
||
|
pk, _, err := testClient.Organization.GetPropertiesKeys(1)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
|
||
|
if pk == nil {
|
||
|
t.Error("Expected Keys. Result is nil")
|
||
|
}
|
||
|
|
||
|
if pk.Keys[0].Key != "organization.attributes" {
|
||
|
t.Errorf("Expected name to be organization.attributes, but got %s", pk.Keys[0].Key)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_GetProperty(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/property/organization.attributes", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "GET")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/property/organization.attributes")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
fmt.Fprintf(w, `{
|
||
|
"key": "organization.attributes",
|
||
|
"value": {
|
||
|
"phone": "0800-1233456789",
|
||
|
"mail": "charlie@example.com"
|
||
|
}
|
||
|
}`)
|
||
|
})
|
||
|
|
||
|
key := "organization.attributes"
|
||
|
ep, _, err := testClient.Organization.GetProperty(1, key)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
|
||
|
if ep == nil {
|
||
|
t.Error("Expected Entity. Result is nil")
|
||
|
}
|
||
|
|
||
|
if ep.Key != key {
|
||
|
t.Errorf("Expected name to be %s, but got %s", key, ep.Key)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_SetProperty(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/property/organization.attributes", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "PUT")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/property/organization.attributes")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
})
|
||
|
|
||
|
key := "organization.attributes"
|
||
|
_, err := testClient.Organization.SetProperty(1, key)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_DeleteProperty(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/property/organization.attributes", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "DELETE")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/property/organization.attributes")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
})
|
||
|
|
||
|
key := "organization.attributes"
|
||
|
_, err := testClient.Organization.DeleteProperty(1, key)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_GetUsers(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/user", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "GET")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/user")
|
||
|
|
||
|
w.WriteHeader(http.StatusOK)
|
||
|
fmt.Fprintf(w, `{
|
||
|
"_expands": [],
|
||
|
"size": 1,
|
||
|
"start": 1,
|
||
|
"limit": 1,
|
||
|
"isLastPage": false,
|
||
|
"_links": {
|
||
|
"base": "https://your-domain.atlassian.net/rest/servicedeskapi",
|
||
|
"context": "context",
|
||
|
"next": "https://your-domain.atlassian.net/rest/servicedeskapi/organization/1/user?start=2&limit=1",
|
||
|
"prev": "https://your-domain.atlassian.net/rest/servicedeskapi/organization/1/user?start=0&limit=1"
|
||
|
},
|
||
|
"values": [
|
||
|
{
|
||
|
"accountId": "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b",
|
||
|
"name": "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b",
|
||
|
"key": "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b",
|
||
|
"emailAddress": "fred@example.com",
|
||
|
"displayName": "Fred F. User",
|
||
|
"active": true,
|
||
|
"timeZone": "Australia/Sydney",
|
||
|
"_links": {
|
||
|
"jiraRest": "https://your-domain.atlassian.net/rest/api/2/user?username=qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b",
|
||
|
"avatarUrls": {
|
||
|
"48x48": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=48",
|
||
|
"24x24": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=24",
|
||
|
"16x16": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=16",
|
||
|
"32x32": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=32"
|
||
|
},
|
||
|
"self": "https://your-domain.atlassian.net/rest/api/2/user?username=qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b"
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"accountId": "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd",
|
||
|
"name": "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd",
|
||
|
"key": "qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd",
|
||
|
"emailAddress": "bob@example.com",
|
||
|
"displayName": "Bob D. Builder",
|
||
|
"active": true,
|
||
|
"timeZone": "Australia/Sydney",
|
||
|
"_links": {
|
||
|
"jiraRest": "https://your-domain.atlassian.net/rest/api/2/user?username=qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd",
|
||
|
"avatarUrls": {
|
||
|
"48x48": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=48",
|
||
|
"24x24": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=24",
|
||
|
"16x16": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=16",
|
||
|
"32x32": "https://avatar-cdn.atlassian.com/9bc3b5bcb0db050c6d7660b28a5b86c9?s=32"
|
||
|
},
|
||
|
"self": "https://your-domain.atlassian.net/rest/api/2/user?username=qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd"
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
}`)
|
||
|
})
|
||
|
|
||
|
users, _, err := testClient.Organization.GetUsers(1, 0, 50)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
|
||
|
if users == nil {
|
||
|
t.Error("Expected Organizations. Result is nil")
|
||
|
}
|
||
|
|
||
|
if users.Size != 1 {
|
||
|
t.Errorf("Expected size to be 1, but got %d", users.Size)
|
||
|
}
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_AddUsers(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/user", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "POST")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/user")
|
||
|
|
||
|
w.WriteHeader(http.StatusNoContent)
|
||
|
})
|
||
|
|
||
|
users := OrganizationUsersDTO{
|
||
|
AccountIds: []string{
|
||
|
"qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b",
|
||
|
"qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd",
|
||
|
},
|
||
|
}
|
||
|
_, err := testClient.Organization.AddUsers(1, users)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestOrganizationService_RemoveUsers(t *testing.T) {
|
||
|
setup()
|
||
|
defer teardown()
|
||
|
testMux.HandleFunc("/rest/servicedeskapi/organization/1/user", func(w http.ResponseWriter, r *http.Request) {
|
||
|
testMethod(t, r, "DELETE")
|
||
|
testRequestURL(t, r, "/rest/servicedeskapi/organization/1/user")
|
||
|
|
||
|
w.WriteHeader(http.StatusNoContent)
|
||
|
})
|
||
|
|
||
|
users := OrganizationUsersDTO{
|
||
|
AccountIds: []string{
|
||
|
"qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3581db05e2a66fa80b",
|
||
|
"qm:a713c8ea-1075-4e30-9d96-891a7d181739:5ad6d3a01db05e2a66fa80bd",
|
||
|
},
|
||
|
}
|
||
|
_, err := testClient.Organization.RemoveUsers(1, users)
|
||
|
|
||
|
if err != nil {
|
||
|
t.Errorf("Error given: %s", err)
|
||
|
}
|
||
|
}
|