diff --git a/api/server_for_test.go b/api/server_for_test.go index f3d2ae6..04b9d78 100644 --- a/api/server_for_test.go +++ b/api/server_for_test.go @@ -10,6 +10,7 @@ import ( "github.com/thermokarst/bactdb/datastore" "github.com/thermokarst/bactdb/models" + "github.com/thermokarst/bactdb/router" ) func init() { @@ -29,7 +30,8 @@ var ( func setup() { store = datastore.NewMockDatastore() SetupCerts("../keys/") - resp, _ := httpClient.PostForm(apiClient.BaseURL.String()+"authenticate/", + u, _ := apiClient.URL(router.GetToken, nil, nil) + resp, _ := httpClient.PostForm(u.String(), url.Values{"username": {"test_user"}, "password": {"password"}}) defer resp.Body.Close() } diff --git a/models/client.go b/models/client.go index 234f68d..0afe388 100644 --- a/models/client.go +++ b/models/client.go @@ -127,6 +127,12 @@ func (c *Client) url(apiRouteName string, routeVars map[string]string, opt inter return url, nil } +func (c *Client) URL(apiRouteName string, routeVars map[string]string, opt interface{}) (*url.URL, error) { + u, err := c.url(apiRouteName, routeVars, opt) + absURL := c.BaseURL.ResolveReference(u) + return absURL, err +} + // NewRequest creates an API request. A relative URL can be provided in urlStr, // in which case it is resolved relative to the BaseURL of the Client. Relative // URLs should always be specified without a preceding slash. If specified, the diff --git a/router/api.go b/router/api.go index 739873b..a1e5733 100644 --- a/router/api.go +++ b/router/api.go @@ -9,7 +9,7 @@ func API() *mux.Router { m.Path("/users").Methods("GET").Name(Users) m.Path("/users").Methods("POST").Name(CreateUser) m.Path("/users/{Id:.+}").Methods("GET").Name(User) - m.Path("/authenticate/").Methods("POST").Name(GetToken) + m.Path("/authenticate").Methods("POST").Name(GetToken) // Genera m.Path("/genera").Methods("GET").Name(Genera) @@ -47,22 +47,22 @@ func API() *mux.Router { m.Path("/characteristics/{Id:.+}").Methods("DELETE").Name(DeleteCharacteristic) // TextMeasurementTypes - m.Path("/text_measurement_types/").Methods("GET").Name(TextMeasurementTypes) - m.Path("/text_measurement_types/").Methods("POST").Name(CreateTextMeasurementType) + m.Path("/text_measurement_types").Methods("GET").Name(TextMeasurementTypes) + m.Path("/text_measurement_types").Methods("POST").Name(CreateTextMeasurementType) m.Path("/text_measurement_types/{Id:.+}").Methods("GET").Name(TextMeasurementType) m.Path("/text_measurement_types/{Id:.+}").Methods("PUT").Name(UpdateTextMeasurementType) m.Path("/text_measurement_types/{Id:.+}").Methods("DELETE").Name(DeleteTextMeasurementType) // UnitTypes - m.Path("/unit_types/").Methods("GET").Name(UnitTypes) - m.Path("/unit_types/").Methods("POST").Name(CreateUnitType) + m.Path("/unit_types").Methods("GET").Name(UnitTypes) + m.Path("/unit_types").Methods("POST").Name(CreateUnitType) m.Path("/unit_types/{Id:.+}").Methods("GET").Name(UnitType) m.Path("/unit_types/{Id:.+}").Methods("PUT").Name(UpdateUnitType) m.Path("/unit_types/{Id:.+}").Methods("DELETE").Name(DeleteUnitType) // Measurements - m.Path("/measurements/").Methods("GET").Name(Measurements) - m.Path("/measurements/").Methods("POST").Name(CreateMeasurement) + m.Path("/measurements").Methods("GET").Name(Measurements) + m.Path("/measurements").Methods("POST").Name(CreateMeasurement) m.Path("/measurements/{Id:.+}").Methods("GET").Name(Measurement) m.Path("/measurements/{Id:.+}").Methods("PUT").Name(UpdateMeasurement) m.Path("/measurements/{Id:.+}").Methods("DELETE").Name(DeleteMeasurement)