|
@@ -127,57 +127,6 @@ func Test_Routes(t *testing.T) {
|
|
|
assert.Equal(t, modelList.Models[0].Name, "test-model:latest")
|
|
|
},
|
|
|
},
|
|
|
- {
|
|
|
- Name: "Create Model Handler",
|
|
|
- Method: http.MethodPost,
|
|
|
- Path: "/api/create",
|
|
|
- Setup: func(t *testing.T, req *http.Request) {
|
|
|
- fname := createTestFile(t, "ollama-model")
|
|
|
-
|
|
|
- stream := false
|
|
|
- createReq := api.CreateRequest{
|
|
|
- Name: "t-bone",
|
|
|
- Modelfile: fmt.Sprintf("FROM %s", fname),
|
|
|
- Stream: &stream,
|
|
|
- }
|
|
|
- jsonData, err := json.Marshal(createReq)
|
|
|
- assert.Nil(t, err)
|
|
|
-
|
|
|
- req.Body = io.NopCloser(bytes.NewReader(jsonData))
|
|
|
- },
|
|
|
- Expected: func(t *testing.T, resp *http.Response) {
|
|
|
- contentType := resp.Header.Get("Content-Type")
|
|
|
- assert.Equal(t, "application/json", contentType)
|
|
|
- _, err := io.ReadAll(resp.Body)
|
|
|
- assert.Nil(t, err)
|
|
|
- assert.Equal(t, resp.StatusCode, 200)
|
|
|
-
|
|
|
- model, err := GetModel("t-bone")
|
|
|
- assert.Nil(t, err)
|
|
|
- assert.Equal(t, "t-bone:latest", model.ShortName)
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- Name: "Copy Model Handler",
|
|
|
- Method: http.MethodPost,
|
|
|
- Path: "/api/copy",
|
|
|
- Setup: func(t *testing.T, req *http.Request) {
|
|
|
- createTestModel(t, "hamshank")
|
|
|
- copyReq := api.CopyRequest{
|
|
|
- Source: "hamshank",
|
|
|
- Destination: "beefsteak",
|
|
|
- }
|
|
|
- jsonData, err := json.Marshal(copyReq)
|
|
|
- assert.Nil(t, err)
|
|
|
-
|
|
|
- req.Body = io.NopCloser(bytes.NewReader(jsonData))
|
|
|
- },
|
|
|
- Expected: func(t *testing.T, resp *http.Response) {
|
|
|
- model, err := GetModel("beefsteak")
|
|
|
- assert.Nil(t, err)
|
|
|
- assert.Equal(t, "beefsteak:latest", model.ShortName)
|
|
|
- },
|
|
|
- },
|
|
|
{
|
|
|
Name: "Show Model Handler",
|
|
|
Method: http.MethodPost,
|
|
@@ -219,11 +168,7 @@ func Test_Routes(t *testing.T) {
|
|
|
Method: http.MethodDelete,
|
|
|
Path: "/api/delete",
|
|
|
Setup: func(t *testing.T, req *http.Request) {
|
|
|
- err := DeleteModel("test-model")
|
|
|
- assert.Nil(t, err)
|
|
|
- err = DeleteModel("hamshank")
|
|
|
- assert.Nil(t, err)
|
|
|
- deleteReq := api.DeleteRequest{Model: "beefsteak"}
|
|
|
+ deleteReq := api.DeleteRequest{Model: "test-model"}
|
|
|
jsonData, err := json.Marshal(deleteReq)
|
|
|
assert.Nil(t, err)
|
|
|
req.Body = io.NopCloser(bytes.NewReader(jsonData))
|
|
@@ -233,16 +178,17 @@ func Test_Routes(t *testing.T) {
|
|
|
assert.Nil(t, err)
|
|
|
assert.Equal(t, resp.StatusCode, 200)
|
|
|
|
|
|
- _, err = GetModel("beefsteak")
|
|
|
+ _, err = GetModel("test-model")
|
|
|
assert.True(t, os.IsNotExist(err))
|
|
|
|
|
|
model, _ := GetModel("show-model")
|
|
|
assert.Equal(t, "show-model:latest", model.ShortName)
|
|
|
|
|
|
- for _, blob := range blobs {
|
|
|
- blob, _ = GetBlobsPath(blob)
|
|
|
- _, err := os.Stat(blob)
|
|
|
+ for i, blob := range blobs {
|
|
|
+ blobPath, _ := GetBlobsPath(blob)
|
|
|
+ _, err := os.Stat(blobPath)
|
|
|
assert.False(t, os.IsNotExist(err))
|
|
|
+ blobs[i] = blobPath
|
|
|
}
|
|
|
},
|
|
|
},
|
|
@@ -269,6 +215,57 @@ func Test_Routes(t *testing.T) {
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
+ {
|
|
|
+ Name: "Create Model Handler",
|
|
|
+ Method: http.MethodPost,
|
|
|
+ Path: "/api/create",
|
|
|
+ Setup: func(t *testing.T, req *http.Request) {
|
|
|
+ fname := createTestFile(t, "ollama-model")
|
|
|
+
|
|
|
+ stream := false
|
|
|
+ createReq := api.CreateRequest{
|
|
|
+ Name: "t-bone",
|
|
|
+ Modelfile: fmt.Sprintf("FROM %s", fname),
|
|
|
+ Stream: &stream,
|
|
|
+ }
|
|
|
+ jsonData, err := json.Marshal(createReq)
|
|
|
+ assert.Nil(t, err)
|
|
|
+
|
|
|
+ req.Body = io.NopCloser(bytes.NewReader(jsonData))
|
|
|
+ },
|
|
|
+ Expected: func(t *testing.T, resp *http.Response) {
|
|
|
+ contentType := resp.Header.Get("Content-Type")
|
|
|
+ assert.Equal(t, "application/json", contentType)
|
|
|
+ _, err := io.ReadAll(resp.Body)
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.Equal(t, resp.StatusCode, 200)
|
|
|
+
|
|
|
+ model, err := GetModel("t-bone")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.Equal(t, "t-bone:latest", model.ShortName)
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Name: "Copy Model Handler",
|
|
|
+ Method: http.MethodPost,
|
|
|
+ Path: "/api/copy",
|
|
|
+ Setup: func(t *testing.T, req *http.Request) {
|
|
|
+ createTestModel(t, "hamshank")
|
|
|
+ copyReq := api.CopyRequest{
|
|
|
+ Source: "hamshank",
|
|
|
+ Destination: "beefsteak",
|
|
|
+ }
|
|
|
+ jsonData, err := json.Marshal(copyReq)
|
|
|
+ assert.Nil(t, err)
|
|
|
+
|
|
|
+ req.Body = io.NopCloser(bytes.NewReader(jsonData))
|
|
|
+ },
|
|
|
+ Expected: func(t *testing.T, resp *http.Response) {
|
|
|
+ model, err := GetModel("beefsteak")
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.Equal(t, "beefsteak:latest", model.ShortName)
|
|
|
+ },
|
|
|
+ },
|
|
|
}
|
|
|
|
|
|
t.Setenv("OLLAMA_MODELS", t.TempDir())
|