(t *testing.T)
| 65 | } |
| 66 | |
| 67 | func TestRoleAPI(t *testing.T) { |
| 68 | |
| 69 | rt := NewRestTester(t, nil) |
| 70 | defer rt.Close() |
| 71 | ds := rt.GetSingleDataStore() |
| 72 | |
| 73 | // PUT a role |
| 74 | RequireStatus(t, rt.SendAdminRequest("GET", "/db/_role/hipster", ""), 404) |
| 75 | response := rt.SendAdminRequest("PUT", "/db/_role/hipster", GetRolePayload(t, "", ds, []string{"fedoras", "fixies"})) |
| 76 | RequireStatus(t, response, 201) |
| 77 | |
| 78 | response = rt.SendAdminRequest("PUT", "/db/_role/testdeleted", GetRolePayload(t, "", ds, []string{"fedoras", "fixies"})) |
| 79 | RequireStatus(t, response, 201) |
| 80 | RequireStatus(t, rt.SendAdminRequest("DELETE", "/db/_role/testdeleted", ""), 200) |
| 81 | |
| 82 | // GET the role and make sure the result is OK |
| 83 | response = rt.SendAdminRequest("GET", "/db/_role/hipster", "") |
| 84 | RequireStatus(t, response, 200) |
| 85 | role := auth.PrincipalConfig{} |
| 86 | require.NoError(t, base.JSONUnmarshal(response.Body.Bytes(), &role)) |
| 87 | assert.Equal(t, "hipster", *role.Name) |
| 88 | var expPassword *string |
| 89 | assert.Equal(t, expPassword, role.Password) |
| 90 | |
| 91 | response = rt.SendAdminRequest("GET", "/db/_role/", "") |
| 92 | RequireStatus(t, response, 200) |
| 93 | assert.Equal(t, `["hipster"]`, response.Body.String()) |
| 94 | |
| 95 | // DELETE the role |
| 96 | RequireStatus(t, rt.SendAdminRequest("DELETE", "/db/_role/hipster", ""), 200) |
| 97 | RequireStatus(t, rt.SendAdminRequest("GET", "/db/_role/hipster", ""), 404) |
| 98 | |
| 99 | // POST a role |
| 100 | response = rt.SendAdminRequest("POST", "/db/_role", GetRolePayload(t, "hipster", ds, []string{"fedoras", "fixies"})) |
| 101 | RequireStatus(t, response, 301) |
| 102 | response = rt.SendAdminRequest("POST", "/db/_role/", GetRolePayload(t, "hipster", ds, []string{"fedoras", "fixies"})) |
| 103 | RequireStatus(t, response, 201) |
| 104 | response = rt.SendAdminRequest("GET", "/db/_role/hipster", "") |
| 105 | RequireStatus(t, response, 200) |
| 106 | require.NoError(t, base.JSONUnmarshal(response.Body.Bytes(), &role)) |
| 107 | assert.Equal(t, "hipster", *role.Name) |
| 108 | RequireStatus(t, rt.SendAdminRequest("DELETE", "/db/_role/hipster", ""), 200) |
| 109 | |
| 110 | // GET including deleted |
| 111 | response = rt.SendAdminRequest("GET", "/db/_role/?deleted=true", "") |
| 112 | RequireStatus(t, response, 200) |
| 113 | assert.Equal(t, `["hipster","testdeleted"]`, response.Body.String()) |
| 114 | } |
| 115 | |
| 116 | func TestFunkyRoleNames(t *testing.T) { |
| 117 | cases := []struct { |
nothing calls this directly
no test coverage detected