8
8
"context"
9
9
"fmt"
10
10
"io/ioutil"
11
+ "log"
11
12
"math/rand"
12
13
"net"
13
14
"net/http"
@@ -25,7 +26,7 @@ import (
25
26
"github.com/stretchr/testify/assert"
26
27
)
27
28
28
- func onGiteaWebRun (t * testing.T , callback func (* testing.T , * url.URL )) {
29
+ func onGiteaRun (t * testing.T , callback func (* testing.T , * url.URL )) {
29
30
s := http.Server {
30
31
Handler : mac ,
31
32
}
@@ -43,6 +44,8 @@ func onGiteaWebRun(t *testing.T, callback func(*testing.T, *url.URL)) {
43
44
44
45
go s .Serve (listener )
45
46
47
+ //TODO add SSH internal server
48
+
46
49
callback (t , u )
47
50
}
48
51
@@ -87,89 +90,115 @@ func generateCommit(repoPath, email, fullName string) error {
87
90
func TestGit (t * testing.T ) {
88
91
prepareTestEnv (t )
89
92
90
- onGiteaWebRun (t , func (t * testing.T , u * url.URL ) {
93
+ onGiteaRun (t , func (t * testing.T , u * url.URL ) {
91
94
dstPath , err := ioutil .TempDir ("" , "repo-tmp-17" )
92
95
assert .NoError (t , err )
93
96
defer os .RemoveAll (dstPath )
94
97
u .Path = "user2/repo1.git"
95
98
96
- t .Run ("Standard" , func (t * testing.T ) {
97
- t .Run ("CloneNoLogin" , func (t * testing.T ) {
98
- dstLocalPath , err := ioutil .TempDir ("" , "repo1" )
99
- assert .NoError (t , err )
100
- defer os .RemoveAll (dstLocalPath )
101
- err = git .Clone (u .String (), dstLocalPath , git.CloneRepoOptions {})
102
- assert .NoError (t , err )
103
- assert .True (t , com .IsExist (filepath .Join (dstLocalPath , "README.md" )))
104
- })
99
+ t .Run ("HTTP" , func (t * testing.T ) {
100
+ t .Run ("Standard" , func (t * testing.T ) {
101
+ t .Run ("CloneNoLogin" , func (t * testing.T ) {
102
+ dstLocalPath , err := ioutil .TempDir ("" , "repo1" )
103
+ assert .NoError (t , err )
104
+ defer os .RemoveAll (dstLocalPath )
105
+ err = git .Clone (u .String (), dstLocalPath , git.CloneRepoOptions {})
106
+ assert .NoError (t , err )
107
+ assert .True (t , com .IsExist (filepath .Join (dstLocalPath , "README.md" )))
108
+ })
105
109
106
- t .Run ("CreateRepo" , func (t * testing.T ) {
107
- session := loginUser (t , "user2" )
108
- req := NewRequestWithJSON (t , "POST" , "/api/v1/user/repos" , & api.CreateRepoOption {
109
- AutoInit : true ,
110
- Description : "Temporary repo" ,
111
- Name : "repo-tmp-17" ,
112
- Private : false ,
113
- Gitignores : "" ,
114
- License : "WTFPL" ,
115
- Readme : "Default" ,
110
+ t .Run ("CreateRepo" , func (t * testing.T ) {
111
+ session := loginUser (t , "user2" )
112
+ req := NewRequestWithJSON (t , "POST" , "/api/v1/user/repos" , & api.CreateRepoOption {
113
+ AutoInit : true ,
114
+ Description : "Temporary repo" ,
115
+ Name : "repo-tmp-17" ,
116
+ Private : false ,
117
+ Gitignores : "" ,
118
+ License : "WTFPL" ,
119
+ Readme : "Default" ,
120
+ })
121
+ session .MakeRequest (t , req , http .StatusCreated )
116
122
})
117
- session .MakeRequest (t , req , http .StatusCreated )
118
- })
119
123
120
- u .Path = "user2/repo-tmp-17.git"
121
- u .User = url .UserPassword ("user2" , userPassword )
122
- t .Run ("Clone" , func (t * testing.T ) {
123
- err = git .Clone (u .String (), dstPath , git.CloneRepoOptions {})
124
- assert .NoError (t , err )
125
- assert .True (t , com .IsExist (filepath .Join (dstPath , "README.md" )))
126
- })
124
+ u .Path = "user2/repo-tmp-17.git"
125
+ u .User = url .UserPassword ("user2" , userPassword )
126
+ t .Run ("Clone" , func (t * testing.T ) {
127
+ err = git .Clone (u .String (), dstPath , git.CloneRepoOptions {})
128
+ assert .NoError (t , err )
129
+ assert .True (t , com .IsExist (filepath .Join (dstPath , "README.md" )))
130
+ })
127
131
128
- t .Run ("PushCommit" , func (t * testing.T ) {
129
- err = generateCommit (
dstPath ,
"[email protected] " ,
"User Two" )
130
- assert .NoError (t , err )
131
- //Push
132
- err = git .Push (dstPath , git.PushOptions {
133
- Branch : "master" ,
134
- Remote : u .String (),
135
- Force : false ,
132
+ t .Run ("PushCommit" , func (t * testing.T ) {
133
+ err = generateCommit (
dstPath ,
"[email protected] " ,
"User Two" )
134
+ assert .NoError (t , err )
135
+ //Push
136
+ err = git .Push (dstPath , git.PushOptions {
137
+ Branch : "master" ,
138
+ Remote : u .String (),
139
+ Force : false ,
140
+ })
141
+ assert .NoError (t , err )
136
142
})
137
- assert .NoError (t , err )
138
143
})
139
- })
140
- t .Run ("LFS" , func (t * testing.T ) {
141
- t .Run ("PushCommit" , func (t * testing.T ) {
142
- //Setup git LFS
143
- _ , err = git .NewCommand ("lfs" ).AddArguments ("install" ).RunInDir (dstPath )
144
- assert .NoError (t , err )
145
- _ , err = git .NewCommand ("lfs" ).AddArguments ("track" , "data-file-*" ).RunInDir (dstPath )
146
- assert .NoError (t , err )
147
- err = git .AddChanges (dstPath , false , ".gitattributes" )
148
- assert .NoError (t , err )
149
-
150
- err = generateCommit (
dstPath ,
"[email protected] " ,
"User Two" )
151
- //Push
152
- u .User = url .UserPassword ("user2" , userPassword )
153
- err = git .Push (dstPath , git.PushOptions {
154
- Branch : "master" ,
155
- Remote : u .String (),
156
- Force : false ,
144
+ t .Run ("LFS" , func (t * testing.T ) {
145
+ t .Run ("PushCommit" , func (t * testing.T ) {
146
+ //Setup git LFS
147
+ _ , err = git .NewCommand ("lfs" ).AddArguments ("install" ).RunInDir (dstPath )
148
+ assert .NoError (t , err )
149
+ _ , err = git .NewCommand ("lfs" ).AddArguments ("track" , "data-file-*" ).RunInDir (dstPath )
150
+ assert .NoError (t , err )
151
+ err = git .AddChanges (dstPath , false , ".gitattributes" )
152
+ assert .NoError (t , err )
153
+
154
+ err = generateCommit (
dstPath ,
"[email protected] " ,
"User Two" )
155
+ //Push
156
+ u .User = url .UserPassword ("user2" , userPassword )
157
+ err = git .Push (dstPath , git.PushOptions {
158
+ Branch : "master" ,
159
+ Remote : u .String (),
160
+ Force : false ,
161
+ })
162
+ assert .NoError (t , err )
163
+ })
164
+ t .Run ("Locks" , func (t * testing.T ) {
165
+ _ , err = git .NewCommand ("remote" ).AddArguments ("set-url" , "origin" , u .String ()).RunInDir (dstPath ) //TODO add test ssh git-lfs-creds
166
+ assert .NoError (t , err )
167
+ _ , err = git .NewCommand ("lfs" ).AddArguments ("locks" ).RunInDir (dstPath )
168
+ assert .NoError (t , err )
169
+ _ , err = git .NewCommand ("lfs" ).AddArguments ("lock" , "README.md" ).RunInDir (dstPath )
170
+ assert .NoError (t , err )
171
+ _ , err = git .NewCommand ("lfs" ).AddArguments ("locks" ).RunInDir (dstPath )
172
+ assert .NoError (t , err )
173
+ _ , err = git .NewCommand ("lfs" ).AddArguments ("unlock" , "README.md" ).RunInDir (dstPath )
174
+ assert .NoError (t , err )
157
175
})
158
- assert .NoError (t , err )
159
- })
160
- t .Run ("Locks" , func (t * testing.T ) {
161
- _ , err = git .NewCommand ("remote" ).AddArguments ("set-url" , "origin" , u .String ()).RunInDir (dstPath ) //TODO add test ssh git-lfs-creds
162
- assert .NoError (t , err )
163
- _ , err = git .NewCommand ("lfs" ).AddArguments ("locks" ).RunInDir (dstPath )
164
- assert .NoError (t , err )
165
- _ , err = git .NewCommand ("lfs" ).AddArguments ("lock" , "README.md" ).RunInDir (dstPath )
166
- assert .NoError (t , err )
167
- _ , err = git .NewCommand ("lfs" ).AddArguments ("locks" ).RunInDir (dstPath )
168
- assert .NoError (t , err )
169
- _ , err = git .NewCommand ("lfs" ).AddArguments ("unlock" , "README.md" ).RunInDir (dstPath )
170
- assert .NoError (t , err )
171
- })
172
176
177
+ })
178
+ })
179
+ t .Run ("SSH" , func (t * testing.T ) {
180
+ //TODO
181
+ u .Scheme = "ssh"
182
+ u .User = url .User ("git" )
183
+ //TODO setup port
184
+ u .Host = "localhost:22"
185
+ log .Println (u .String ())
173
186
})
174
187
})
175
188
}
189
+
190
+ /*
191
+
192
+
193
+ // user1 is an admin user
194
+ session := loginUser(t, "user1")
195
+ keyOwner := models.AssertExistsAndLoadBean(t, &models.User{Name: "user2"}).(*models.User)
196
+
197
+ urlStr := fmt.Sprintf("/api/v1/admin/users/%s/keys", keyOwner.Name)
198
+ req := NewRequestWithValues(t, "POST", urlStr, map[string]string{
199
+ "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAu7tvIvX6ZHrRXuZNfkR3XLHSsuCK9Zn3X58lxBcQzuo5xZgB6vRwwm/QtJuF+zZPtY5hsQILBLmF+BZ5WpKZp1jBeSjH2G7lxet9kbcH+kIVj0tPFEoyKI9wvWqIwC4prx/WVk2wLTJjzBAhyNxfEq7C9CeiX9pQEbEqJfkKCQ== nocomment\n",
200
+ "title": "test-key",
201
+ })
202
+ resp := session.MakeRequest(t, req, http.StatusCreated)
203
+
204
+ */
0 commit comments