Paul Martin
2016-04-16 eecaad8b8e2c447429c31a01d49260ddd6b4ee03
commit | author | age
f9c78c 1 /*
PM 2  * Copyright 2014 gitblit.com.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.gitblit.tests;
17
18 import java.io.File;
19 import java.util.Date;
20 import java.util.HashMap;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.apache.commons.io.FileUtils;
25 import org.bouncycastle.util.Arrays;
26 import org.eclipse.jgit.lib.Repository;
27 import org.junit.After;
28 import org.junit.Before;
29 import org.junit.Test;
30
31 import com.gitblit.IStoredSettings;
32 import com.gitblit.Keys;
33 import com.gitblit.manager.INotificationManager;
34 import com.gitblit.manager.IPluginManager;
35 import com.gitblit.manager.IRepositoryManager;
36 import com.gitblit.manager.IRuntimeManager;
37 import com.gitblit.manager.IUserManager;
38 import com.gitblit.manager.NotificationManager;
39 import com.gitblit.manager.PluginManager;
40 import com.gitblit.manager.RepositoryManager;
41 import com.gitblit.manager.RuntimeManager;
42 import com.gitblit.manager.UserManager;
43 import com.gitblit.models.Mailing;
44 import com.gitblit.models.RepositoryModel;
45 import com.gitblit.models.TicketModel;
46 import com.gitblit.models.TicketModel.Attachment;
47 import com.gitblit.models.TicketModel.Change;
48 import com.gitblit.models.TicketModel.Field;
49 import com.gitblit.models.TicketModel.Patchset;
50 import com.gitblit.models.TicketModel.Priority;
51 import com.gitblit.models.TicketModel.Severity;
52 import com.gitblit.models.TicketModel.Status;
53 import com.gitblit.models.TicketModel.Type;
54 import com.gitblit.tests.mock.MemorySettings;
55 import com.gitblit.tickets.ITicketService;
56 import com.gitblit.tickets.ITicketService.TicketFilter;
57 import com.gitblit.tickets.QueryResult;
58 import com.gitblit.tickets.TicketIndexer.Lucene;
59 import com.gitblit.tickets.BranchTicketService;
60 import com.gitblit.tickets.TicketLabel;
61 import com.gitblit.tickets.TicketMilestone;
62 import com.gitblit.tickets.TicketNotifier;
63 import com.gitblit.utils.JGitUtils;
64 import com.gitblit.utils.XssFilter;
65 import com.gitblit.utils.XssFilter.AllowXssFilter;
66
67 /**
68  * Generates the range of tickets to ease testing of the look and feel of tickets
69  */
70 public class UITicketTest extends GitblitUnitTest {
71
72     private ITicketService service;    
73     final String repoName = "UITicketTest.git";
74     final RepositoryModel repo = new RepositoryModel(repoName, null, null, null);
75     
76     protected ITicketService getService(boolean deleteAll) throws Exception {
77
78         IStoredSettings settings = getSettings(deleteAll);
79         XssFilter xssFilter = new AllowXssFilter();
80         IRuntimeManager runtimeManager = new RuntimeManager(settings, xssFilter).start();
81         IPluginManager pluginManager = new PluginManager(runtimeManager).start();
82         INotificationManager notificationManager = new NotificationManager(settings).start();
83         IUserManager userManager = new UserManager(runtimeManager, pluginManager).start();
eecaad 84         IRepositoryManager repositoryManager = new RepositoryManager(runtimeManager, pluginManager, userManager, null).start();
f9c78c 85
PM 86         BranchTicketService service = new BranchTicketService(
87                 runtimeManager,
88                 pluginManager,
89                 notificationManager,
90                 userManager,
91                 repositoryManager).start();
92
93         if (deleteAll) {
94             service.deleteAll(repo);
95         }
96         return service;
97     }
98     
99     protected IStoredSettings getSettings(boolean deleteAll) throws Exception {
100         File dir = new File(GitBlitSuite.REPOSITORIES, repoName);
101         if (deleteAll) {
102             FileUtils.deleteDirectory(dir);
103             JGitUtils.createRepository(GitBlitSuite.REPOSITORIES, repoName).close();
104         }
105         
106         File luceneDir = new File(dir, "tickets/lucene");
107         luceneDir.mkdirs();
108
109         Map<String, Object> map = new HashMap<String, Object>();
110         map.put(Keys.git.repositoriesFolder, GitBlitSuite.REPOSITORIES.getAbsolutePath());
111         map.put(Keys.tickets.indexFolder, luceneDir.getAbsolutePath());
112
113         IStoredSettings settings = new MemorySettings(map);
114         return settings;
115     }
116
117     @Before
118     public void setup() throws Exception {
119         service = getService(true);
120     }
121
122     @After
123     public void cleanup() {
124         service.stop();
125     }
126
127     @Test
128     public void UITicketOptions() throws Exception {
129         
130         for (TicketModel.Type t : TicketModel.Type.values())
131         {
132             for (TicketModel.Priority p : TicketModel.Priority.values())
133             {
134                 for (TicketModel.Severity s : TicketModel.Severity.values())
135                 {
136                     assertNotNull(service.createTicket(repo, newChange(t, p, s)));
137                 }
138             }    
139         }
140     }
141     
142     private Change newChange(Type type, Priority priority, Severity severity) {
143         Change change = new Change("JUnit");
144         change.setField(Field.title, String.format("Type: %s | Priority: %s | Severity: %s", type, priority, severity));
145         change.setField(Field.type, type);
146         change.setField(Field.severity, severity);
147         change.setField(Field.priority, priority);
148         return change;
149     }
150
151 }